![]() |
обработка файлов при помощи модуля Excel.au3
задача такая. автоит запускает некую внешнюю программу, которая последдовательно выгружает 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! а не ноль. Хэндлы окон эксель тоже определяет безошибочно! в первый эксель-файл он даже может записать что угодно и прочесть любую ячейку с него, а вот начиная со второго - мертвый номер, что я только не делала - не "видит"он последующих выгружаемых файлов и все. и ничего не помогает. Подскажите, где копать? буду благодарна за любую подсказку. |
Во-первых, коды нужно обрамлять соот-ющими тегами ([code]).
По поводу задачи. Не ясно как выгружаются остальные файлы, выложите работающий пример, где происходит сохранение и выгрузка. |
Добрый день!
после долгих раздумий и проб задача была решена. Выкладываю, может быть кому-то пригодится. Команда $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="" ; вот она, эта волшебная строка:) |
Время: 22:39. |
Время: 22:39.
© OSzone.net 2001-