Имя: Пароль:
1C
 
Выгрузка данных в Excel по ШАБЛОНУ (((8.х ОФ)))
0 НоваяВолна
 
22.05.16
07:28
Доброго всем времени суток!
Для меня опять что-то новое, поэтому прошу подтолкнуть в нужном направлении... (вот такой я до сих пор новичок).
ЗАДАЧА: Выгрузить данные документа в документ Excel, при этом шаблон документа Excel имеет сложную (и многостраничную, но об этом позже) форму.
Пока сделал шаблон выходного Excel  и загрузил его в документ 1С, как Макет Active Document.
ПРОБЛЕМЫ:
1. Плохо понимая синтаксис VBA не могу обратиться к Макету

Попытка
             
             Состояние("Выгрузка данных из 1С в Microsoft Excel...");
             ExcelПриложение = Новый COMОбъект("Excel.Application");
        Исключение
             Сообщить("Ошибка при загрузке Microsoft Excel."
                + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
             Возврат;
        КонецПопытки;
        
        Книга = ExcelПриложение.WorkBooks.Add();
        
        Лист = Книга.WorkSheets(1);

Такая конструкция не подходит, так как я не собираюсь создавать пустую Книгу Excel, а хочу использовать шаблон.

2. В этом шаблоне есть несколько табличных частей, количество строк в которых не определено изначально, а ниже в ячейках идут стандартные названия полей шаблона. НЕ ЗНАЮ СИНТАКСИСА ДОБАВЛЕНИЯ СТРОК В EXCEL...
....
.... Просьба, если можно, пример синтаксиса... или что-то похожее для примера мне на почту... Заранее благодарен
1 НоваяВолна
 
22.05.16
07:35
(0) Моя почта [email protected]
2 НоваяВолна
 
22.05.16
09:23
АП
3 Pistol
 
22.05.16
10:40
Включи запись макроса в ёкселе и сделай все руками. Отключи запись и посмотри на полученный код. Повтори код в 1С.
4 НоваяВолна
 
22.05.16
14:37
(3) Это понятно... не понятно как позиционироваться при добавлении строк
(0) До сих пор не могу понять как обратиться к Макету....
5 НоваяВолна
 
23.05.16
09:58
...
6 b_ru
 
23.05.16
10:18
(4) Вторая ссылка в гугле по запросу "Макет Active Document" дает пример кода как обратиться к макету.
7 НоваяВолна
 
23.05.16
10:56
(6) Вот не могу понять разницу использования Макета Active Document Word и Excel ...

МакетExcel = ПолучитьМакет("ВыгрузкаВExcel");
msExcel = МакетExcel.Получить();
    // .......
    // .......
    // ... что-то тут заполняем из 1С
msExcel.Application.Visible = Истина;
msExcel.Activate();

Вот для Word такое обращение к Макету проходит, а для Excel ... ошибок не выдает, но и приложение MS Office не открывает. В общем тишина...
8 b_ru
 
23.05.16
14:51
(7) Между ними в общем-то разницы нет.

Если убрать заполнение и выполнить только код

МакетExcel = ПолучитьМакет("ВыгрузкаВExcel");
msExcel = МакетExcel.Получить();
WBook = msExcel.Application.Workbooks(1);
WBook.Activate();
msExcel.Application.Visible = Истина;
msExcel.Activate();

Эксель откроется?
9 Cyberhawk
 
23.05.16
14:55
Я за работу с XLSX методом Native, т.е. без использования COM-модели - красота да и только.
Тем более в XLSX текст хранится в "голом" (чистом) виде, в отличие от DOCX...
10 НоваяВолна
 
23.05.16
15:04
(8) Интересный эффект получился. При выполнении этого кода Excel открывается (во всяком случае я вижу открытие окна Excel), но не открывшись до конца тут же закрывается. Вот в чем может быть тут проблема?
11 b_ru
 
23.05.16
15:13
в шаблоне на VBA ничего не написано случайно?
12 НоваяВолна
 
23.05.16
15:26
(11) на VBA ничего не написано. Другое дело, что Макет Active Document я загружал из файла XLS, а из файла с расширением  XSLX 1С не хочет загружать макет Active Document. Не на что не ругаясь, но и не создавая макет. Т.е. я создаю новый макет, выбираю Active Document, затем выбираю файл XLSX, нажимаю кнопочку "Готово" ... и ничего не происходит. Хоть сколько угодно раз можно на Готово нажимать.
13 НоваяВолна
 
24.05.16
11:07
Долго мучался, чтобы открыть Макет Active Document. А проблема оказалась простой. Необходимо в модуль добавить глобальную переменную Перем MSExcel Экспорт;
Код получился такой:

        МакетExcel = ПолучитьМакет("ВыгрузкаВExcel");
    msExcel = МакетExcel.Получить();
    WBook = msExcel.Application.Workbooks(1);
    Лист = WBook.Worksheets(1);
    WBook.Activate();
       // ... что-то тут заполняем из 1С
       // ...
    msExcel.Application.Visible = 1;
    msExcel.Windows(1).Visible = 1;
    msExcel.Activate();
14 НоваяВолна
 
24.05.16
11:08
(13) + Без объявления глобальной переменной Excel начинает открываться и тут же закрывается
15 НоваяВолна
 
27.05.16
12:27
Возник вопрос по поводу того как в Excel добавлять строки. Шаблон выглядит вот так

http://s015.radikal.ru/i330/1605/97/9b3bcb572bae.jpg

Из 1С заполняются ячейки белого цвета. Проблемы возникают в блоках 2 и 3, в которых имеются табличные части
16 Карупян
 
27.05.16
12:40
Лучше перенести в mxl  сформировать и потом сохранить в xslx.
Потом пробежаться и формулы проставить, если они есть