• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы Mick Winder
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

Mick Winder

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

admin

Mick Winder
ну кто тебя знает как ты что там делал
надо перенести и зарегистрировать те ActiveX компоненты которые использовались и .bpl файлы если они есть.
а заодно хелп посмотреть что за ошибка :(
 
M

Mick Winder

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

admin

Mick Winder
а на другом компе Excel такой же???
 
M

Mick Winder

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

Barmutik

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

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

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

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

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
 
B

Barmutik

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

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

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

Mick Winder

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

Barmutik

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

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

gozer

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!