raaleksandr написал:
А вот такой пример на "чистом" OLE (если не захочется через DOI как посоветовали).
Насчет последней строки не уверен, но запись макроса в Excel привела к этому, в общем у меня работает.
Code:
REPORT zt_test1.
TYPE-POOLS: OLE2.
PERFORM excel_test.
FORM excel_test.
DATA: l_filename TYPE STRING.
DATA: lo_ex TYPE ole2_object.
DATA: lo_wbs TYPE ole2_object.
DATA: lo_wb TYPE ole2_object.
l_filename = 'c:\_toarchive\book1.xls'.
CREATE OBJECT lo_ex 'Excel.Application'.
CALL METHOD OF lo_ex 'Workbooks' = lo_wbs.
CALL METHOD OF lo_wbs 'Open' = lo_wb
EXPORTING #1 = l_filename.
CALL METHOD OF lo_ex 'ExecuteExcel4Macro'
EXPORTING #1 = 'PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)'.
ENDFORM.
Спасибо, за этот код. Всё отлично работает! Ушел на печать, только квадратик принтера и видел....
Окно Excel не появляется)) Массовую печать ещё не пробовал, но если имена доков есть, то можно
это легко организовать....
1) А что означает строка :
Code:
EXPORTING #1 = 'PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)'.
Ху из ху в ней? Вдруг мне прийдется когда-то её подправить...
2) Если я буду организовывать цикл по именам документов, то правильно ли и достаточно будет сделать так:
Code:
CREATE OBJECT lo_ex 'Excel.Application'.
CALL METHOD OF lo_ex 'Workbooks' = lo_wbs.
LOOP AT lt_files.
CALL METHOD OF lo_wbs 'Open' = lo_wb
EXPORTING #1 = lt_files-filename.
CALL METHOD OF lo_ex 'ExecuteExcel4Macro'
EXPORTING #1 = 'PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)'.
ENDLOOP.
? Ничего не нужно чистить перед следующим вызовом методов?