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

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

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

    Mick Winder Гость

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

    admin Well-Known Member

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

    Mick Winder Гость

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

    admin Well-Known Member

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

    Mick Winder Гость

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

    Barmutik Гость

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

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

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

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

    Mick Winder Гость

    Есть такой вопрос, некое продолжение темы...
    Да файлы 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 Гость

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

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

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

    Mick Winder Гость

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

    Barmutik Гость

    Вопрос встречный? Зачем использовать этот метод?

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

    gozer Гость

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

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

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