Страница 1 из 1

Вывод последовательно в разные файлы Excel

Добавлено: 27 ноя 2014, 17:35
Irina_
Здравствуйте.
Пишу на vip. В цикле на каждой итерации: создаю файл Excel, вывожу информацию в него, файл сохраняю и закрываю. Т.е. последовательно формируется несколько файлов (по количеству итераций). Вариант с выводом в один файл на разные листы не устраивает.
На каждой итерации:

Recept:=…;
name_f:=TranslatePath ('%ROOT%\OUT\%USER%\' + Recept + '.xlsx');
xlCreateExcel( name_f, True);
xlDisplayAlerts(False);
xlSetActiveWorkBookByName( name_f );
… // вывод инфо в файл EXCEL
xlSaveWorkBookByName( name_f );
xlCloseWorkBookByName( name_f );
xlDisplayAlerts(True);
xlKillExcel;

Все идет нормально, файлы формируются, но заметила проблему: после каждой итерации идет «моргание» на мониторе. Как-то некомфортно. Можно ли от этого избавиться? Установила, что «моргание» идет после вызова xlKillExcel.

Re: Вывод последовательно в разные файлы Excel

Добавлено: 27 ноя 2014, 19:56
Алексей
а если попробовать работать с разными книгами и когда закончите уже один раз сделать killExcel ?

Re: Вывод последовательно в разные файлы Excel

Добавлено: 28 ноя 2014, 14:04
Irina_
Попробовала поставить xlKillExcel не после каждой итерации, а один раз в конце. В результате при попытке удалить из вновь созданной книги всех листов кроме 1-го стала получать ошибку удаления листа (ранее ошибки не было). При анализе оказалось, что GetSheetCount вместо 3 стала возвращать 18992. Поставила обработку результата работы ряда функций по работе с EXCEL, обнаружила, что xlSetActiveWorkBookByName(name_f) вернула false. И наконец, нужные файлы вообще не сформировались. После долгих мучений вернула xlKillExcel на каждую итерацию.
Может я не указала какую-то еще функцию по работе с EXCEL или воспользовалась не той, что надо? Ранее не сталкивалась с необходимостью вывода инфо последовательно в разные файлы, вывод всегда делала в один.

Re: Вывод последовательно в разные файлы Excel

Добавлено: 28 ноя 2014, 19:05
Алексей
Если честно, я вывожу в несколько файлов, но их не так много и формируется отчет достаточно долго, так что мерцания если и есть, то почти незаметны.
С книгами экселя не работал, но думаю раз функции есть - они должны работать.

Re: Вывод последовательно в разные файлы Excel

Добавлено: 29 ноя 2014, 10:46
edward_K
Попробуйте юзать xlcreatenewexcel, а еще вопрос почему нею зачете шаблоны? Xlcreatefrom...

Re: Вывод последовательно в разные файлы Excel

Добавлено: 01 дек 2014, 15:03
Irina_
Здравствуйте. Не использую шаблоны в основном т.к. в тех отчетах, что написала, после вывода некоторой табличной инфо нужно делать форматирование определенных строк или столбцов (иногда разных строк по-разному), задавать в ячейках расчетные формулы (по строкам и/или по столбцам), причем изначально не известен диапазон ячеек для формул. Соглашусь, что можно использовать макросы, но с ними не работала. Как-то удобно и наглядно выводить сразу в Excel, делать нужное форматирование, находить и задавать диапазон строк или столбцов для формул. И еще раз соглашусь, что можно увеличить скорость формирования отчета с использованием шаблонов и макросов, но пока у меня не было замечаний по скорости. В любом случае использование шаблонов – дело предпочтений, привычки и опыта написания макросов. Ведь для сложных отчетов просто вывод данных в Excel без использования макросов чаще всего невозможен.
А теперь по существу: xlcreatenewexcel - такой функции нет. Может xlCreateNewExcelWithTemplate? Попробовала изменить работу с файлами: создавала на основе шаблона, который был изначально пустой, меняла функции по работе с файлом по имени на ф-ции по работе с файлом по порядковому номеру открытого файла. Все равно получаю какие-то проблемы: то файлы сохраняются пустыми, хотя и с заданными именами, то ругается на xlSetActiveWorkBook, и др. Попробую еще что-то сделать.