Прога, автоматизирующая работу Excel, не работает

Тема в разделе "Delphi - СОМ", создана пользователем Mick Winder, 8 фев 2005.

Статус темы:
Закрыта.
  1. Mick Winder

    Mick Winder Гость

    Репутация:
    0
    Написал я прогу на Дельфи, которая автоматизирует работу в Excel. При переносе программы на чужой комп, не работает. Выдает ошибку: "GetOpenFilename method of Application class failed" Почему? Какие файлы я должен с собой взять с экзешником?
     
  2. admin

    admin Well-Known Member

    Репутация:
    0
    Регистрация:
    8 авг 2003
    Сообщения:
    2.754
    Симпатии:
    1
    Mick Winder
    ну кто тебя знает как ты что там делал
    надо перенести и зарегистрировать те ActiveX компоненты которые использовались и .bpl файлы если они есть.
    а заодно хелп посмотреть что за ошибка :(
     
  3. Mick Winder

    Mick Winder Гость

    Репутация:
    0
    Код (Text):
    ExcFile:= App.GetOpenFileName('Excel WorkBook (.xls), .xls', EmptyParam, 'File Excel');
    App.WorkBooks.Open(ExcFile);
    Вот что я написал... Ошибка связана с GetOpenFileName... На моем компе работает великолепно...
     
  4. admin

    admin Well-Known Member

    Репутация:
    0
    Регистрация:
    8 авг 2003
    Сообщения:
    2.754
    Симпатии:
    1
    Mick Winder
    а на другом компе Excel такой же???
     
  5. Mick Winder

    Mick Winder Гость

    Репутация:
    0
    Писал я программу на компе с ОС WinXP для OfficeXP. Когда поставил прогу на комп с ОС Win2000 и Office2000, тут стали выдавать сообщения об ошибке, типа той, которую я описал выше. Неужели для каждой отдельной версии Office надо писать отдельную "адаптированную" прогу? Или же можно лишь добавить какие-то файлы и т.д.? Если да, то какие и куда?
     
  6. Barmutik

    Barmutik Гость

    Репутация:
    0
    Просмотрев TLB файлы XP и 2000 офиса видно что и там и там такой метод у Экселя есть...

    Так и в ошибке говорят что метод есть но по какой-то причине в процессе его вызова произошла ошибка.

    Хотя вроде визуально отличий в методах ... значит или тестится .. или отказываться от использования этого метода...

    Я думаю можно другим способ создать или узнать имя файла которое нужно открыть...
     
  7. Mick Winder

    Mick Winder Гость

    Репутация:
    0
    Есть такой вопрос, некое продолжение темы...
    Да файлы TLB для XP и 2000 одинаковые, однако методы в них используется по другому.
    Скажем... Взять хотя ту функцию GetOpenFileName, из-за которой пошел весь сыр-бор...
    Для XP справедлива следующая конструкция (источник MSDN):
    expression.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
    Для 2000 (источник excel_ltb.pas) :
    GetOpenFilename(FileFilter: OleVariant; FilterIndex: OleVariant; Title: OleVariant;
    ButtonText: OleVariant; MultiSelect: OleVariant; lcid: Integer): OleVariant
    Вот только я никак не пойму, что же писать в этих параметрах? Хотя бы один пример, а то, что я не нипишу, так появляется сообщение "Invalid number of parameters"
    Та же история была и с методом Sort, но там я исправил согласно excel_tlb.pas
     
  8. Barmutik

    Barmutik Гость

    Репутация:
    0
    Просмотрев TLBшки там видно что существует группа функций с таким названием но с разным набором параметров и в ХР и в 2000...

    Так что однозначно нельзя сказать какую функцию нужно и можно вызывать ...

    Обычно когда параметр не нужен его заменяют на EmptyParam что Вы и делали ... а количество параметров можно узнать из тех же TLB...
     
  9. Mick Winder

    Mick Winder Гость

    Репутация:
    0
    Уже пробовал использовать где-надо и не надо EmptyParam... Ни фига!
     
  10. Barmutik

    Barmutik Гость

    Репутация:
    0
    Вопрос встречный? Зачем использовать этот метод?

    Какую информацию Вы из него получаете? Нельзя ли её получить другим способом?
     
  11. Guest

    Guest Гость

    Репутация:
    0
  12. gozer

    gozer Гость

    Репутация:
    0
    Зашёл на тему из-за уникального названия, но решил задать вопрос, который я очень часто задаю, и который часто помогает.
    Нельзя ли изменить методику программы. Т.е. простыми словами, что за программа и нельзя ли её переписать другим способом? А название темы меня просто удивило. Напиши ответ уж непосвященному, каким образом ты оптимизируешь работу в xls.

    If ты используешь код для заполнения документа введёнными данными, то используй просто макросы - проблем нет
    Else if ты используешь например для хранения там какой то инфы. то юзай другие превосходные вещи, Access тот же. Или другие, но в которых ты разберёшься или уже разбираешься…
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей