|
Создание печатных форм в макете Excel в цикле
| ☑ |
0
fantomrik
23.08.13
✎
17:25
|
Добрый день!
Пытаюсь программно заполнить и вывести N-ое число печатных форм Экселя, но выводится только 1, как я понимаю последняя. Подскажите, в чем ошибка?
Для Сч=0 по мКоличество Цикл
Макет = ПолучитьМакет("МойМакетВЭкселе");
MSExcel = Макет.Получить();
Книга = MSExcel;
Лист = Книга.Worksheets(1);
Диапазон = Лист.Cells;
//заполнение макета
................
MSExcel.Application.Visible = 1;
MSExcel.Windows(1).Visible = 1;
MSExcel.Activate();
КонецЦикла
|
|
1
Euguln
23.08.13
✎
17:27
|
Лист = Книга.Worksheets(1);
В один и тот же лист выводишь
делай Лист = Книга.Worksheets.Add();
|
|
2
fantomrik
23.08.13
✎
17:35
|
(1) В такой ситуации я создаю лист, а не помещаю данные в лист макета и все равно в итоге только последняя печатная форма выходит.
|
|
3
Euguln
23.08.13
✎
17:49
|
Ну скопируй свой макет на новый лист
|
|
4
fantomrik
23.08.13
✎
17:51
|
(3) "и все равно в итоге только последняя печатная форма выходит." то есть открывается 1 файл экселя...
|
|
5
Euguln
23.08.13
✎
18:02
|
Макет = ПолучитьМакет("МойМакетВЭкселе");
MSExcel = Макет.Получить();
Книга = MSExcel;
Для Сч=0 по мКоличество Цикл
Лист = Книга.Worksheets.Add();
Диапазон = Лист.Cells;
//заполнение макета
................
КонецЦикла
MSExcel.Application.Visible = 1;
MSExcel.Windows(1).Visible = 1;
MSExcel.Activate();
Выведет в один файл на разные листы.
|
|
6
Euguln
23.08.13
✎
18:03
|
Если нужно открыть много файлов, то после
MSExcel.Activate();
попробуй вставить
MSExcel = Неопределено;
|
|
7
fantomrik
23.08.13
✎
18:11
|
(5) Спасибо! а возможен вариант наплодить файлов Экселя с 1 листом в каждом?
|
|
8
Euguln
23.08.13
✎
18:12
|
(7) пробуй (6)
|
|
9
fantomrik
23.08.13
✎
18:16
|
(8) не катит. Ну буду в 1 выводить, спасибо!
|
|
10
fantomrik
26.08.13
✎
12:17
|
Было найдено такое решение задачи, возможно кому то пригодится :
ActiveDocuments = Новый ТаблицаЗначений;
ActiveDocuments.Колонки.Добавить("Документ");
Для Сч=0 по мКоличество Цикл
ActiveDocument = ПолучитьМакет("МакетЭксель").Получить();
Книга = ActiveDocument;
Лист = Книга.Worksheets(1);
Диапазон = Лист.Cells;
//Заполнение макета Эксель
.....................
НоваяСтрока = ActiveDocuments.Добавить();
НоваяСтрока.Документ = ActiveDocument;
НоваяСтрока.Документ.Activate();
НоваяСтрока.Документ.Windows(1).Visible = Истина;
НоваяСтрока.Документ.Application.Visible = Истина;
КонецЦикла;
Хотелось бы добавить что экселевские макеты будут находится в переменной, и как только она уничтожится, документы закроются, так как сохранение тут не предусмотрено (это задача пользователя в данном случае). Поэтому ActiveDocuments у меня Глобальная переменная документа, и автоматом закроются доки Excel, при закрытии документа в котором производился вызов данной функции.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший