[решено] обработка файлов при помощи модуля Excel.au3

Ответить
Аватара пользователя
SvetlanaK

[решено] обработка файлов при помощи модуля Excel.au3

Сообщение SvetlanaK »

задача такая. автоит запускает некую внешнюю программу, которая последдовательно выгружает 9 экселевских файлов, каждый из которых нужно сохранить в определенное место с определенным именем. первоначально это сохранение делалось при помощи Send.

WinActivate("Microsoft Excel")

Send("{Alt}{ф}{с}")

Send($path & "имяфайла.xls")

Send("{Enter}")

WinClose("Microsoft")

теперь кажется более логичным (и быстрым!) сделать следующее



$oExcel2 = ObjGet("", "Excel.Application") ;

_ExcelBookSaveAs($oExcel, $path_d & "имяфайла", "xls")

_ExcelBookClose($oExcel,1, 0)



Но происходит следующее. Первый выгружаемый файл сохраняется и закрывается без проблем. Остальные - не сохраняются и не закрываются!

Автоит якобы сохраняет что-то - если посмотреть переменную $s=_ExcelBookSaveAs($oExcel, $path_d & "имяфайла", "xls"), и эта перемення 1! а не ноль. Хэндлы окон эксель тоже определяет безошибочно! в первый эксель-файл он даже может записать что угодно и прочесть любую ячейку с него, а вот начиная со второго - мертвый номер, что я только не делала - не "видит"он последующих выгружаемых файлов и все. и ничего не помогает. Подскажите, где копать? буду благодарна за любую подсказку.
Аватара пользователя
Creat0R

Re: [решено] обработка файлов при помощи модуля Excel.au3

Сообщение Creat0R »

Во-первых, коды нужно обрамлять соот-ющими тегами (

Код: Выделить всё

).



По поводу задачи. Не ясно как выгружаются остальные файлы, выложите [u]работающий[/u] пример, где происходит сохранение и выгрузка.
Аватара пользователя
SvetlanaK

Re: [решено] обработка файлов при помощи модуля Excel.au3

Сообщение SvetlanaK »

Добрый день!

после долгих раздумий и проб задача была решена. Выкладываю, может быть кому-то пригодится.

Команда $oExcel = ObjGet("", "Excel.Application") оказыватся с "длительным" действием, и что бы потом не открывалось в экселе - первая открытая книга всегда будет подразумеваться в последующих действиях.

Верятно, что-то "застревает" в пямяти. Решение - после обработки первого эксель-файла поставить строку - $oExcel="". И все работает Все остальные книги обрабатываются должным образом. Так что это? обнуление переменных? (получатеся очистка объектов). Наверное это логично - очищать память от использованного.



WinWaitActive("Microsoft Excel - Книга1","", 0);жду окна

WinActivate("Microsoft Excel - Книга1","")

If WinExists("Microsoft Excel - Книга1") Then

WinActivate("Microsoft Excel - Книга1","")

$oExcel = ObjGet("", "Excel.Application")

_ExcelBookSaveAs($oExcel, "C:\папка\наим1", "xls",0,1)

_ExcelBookClose($oExcel,1, 0)

EndIf

$oExcel="" ; вот она, эта волшебная строкаИзображение
Ответить

Вернуться в «AutoIt»