Tetty написал:
а можно быстро и динамически сделать макрос через abap?
лучше поздно - но выложить текст, можт кому еще нада.
тоже была проблема, но с помощью макроса она исчезла

по кусочкам в инете нарыл и вот что получилось
INCLUDE OLE2INCL.
data:
w_excel TYPE ole2_object,
w_wbooks TYPE ole2_object,
w_wbook TYPE ole2_object,
w_sheet TYPE ole2_object,
w_range TYPE ole2_object,
w_columns TYPE ole2_object,
w_cell TYPE ole2_object,
w_cell1 TYPE ole2_object,
w_cell2 TYPE ole2_object,
w_font TYPE ole2_object,
w_bord1 TYPE ole2_object,
w_bord2 TYPE ole2_object,
w_bord3 TYPE ole2_object,
w_bord4 TYPE ole2_object,
w_1 TYPE ole2_object,
w_2 TYPE ole2_object,
w_3 TYPE ole2_object,
w_4 TYPE ole2_object,
w_5 TYPE ole2_object,
w_6 TYPE ole2_object,
book_name TYPE string,
module_name TYPE string,
macros_name TYPE string.
data: i TYPE i, j TYPE i, k type i, rc TYPE c LENGTH 8.
CREATE OBJECT w_excel 'Excel.Application'.
CALL METHOD OF w_excel 'Workbooks' = w_wbooks.
SET PROPERTY OF w_excel 'Visible' = 1.
CALL METHOD OF w_wbooks 'Add'.
GET PROPERTY OF w_excel 'ActiveSheet' = w_sheet.
GET PROPERTY OF w_excel 'ActiveWorkbook' = w_wbook.
GET PROPERTY OF w_wbook 'Name' = book_name.
CALL METHOD OF w_excel 'VBE' = w_1.
CALL METHOD OF w_1 'ActiveVBProject' = w_2.
CALL METHOD OF w_2 'VBComponents' = w_3.
GET PROPERTY OF w_3 'Count' = i.
i = i + 1.
CALL METHOD OF w_3 'Add' EXPORTING #1 = 1.
CALL METHOD OF w_3 'Item' = w_4 EXPORTING #1 = i.
GET PROPERTY OF w_4 'Name' = module_name.
CONCATENATE book_name '!' module_name '.AAA' INTO macros_name.
CALL METHOD OF w_4 'CodeModule' = w_5.
CALL METHOD OF w_5 'InsertLines' EXPORTING #1 = 1 #2 = 'Sub AAA()'. " Здесь поместить свой макрос
CALL METHOD OF w_5 'InsertLines' EXPORTING #1 = 2 #2 = 'MsgBox "Работает" '.
CALL METHOD OF w_5 'InsertLines' EXPORTING #1 = 3 #2 = 'End Sub'.
CALL METHOD OF w_excel 'Application' = w_6.
CALL METHOD OF w_6 'Run' EXPORTING #1 = macros_name.
CALL METHOD OF w_sheet 'CELLS' = w_cell1 EXPORTING #1 = 3 #2 = 1.
CALL METHOD OF w_sheet 'CELLS' = w_cell2 EXPORTING #1 = i #2 = j.
CALL METHOD OF w_sheet 'RANGE' = w_range EXPORTING #1 = w_cell1 #2 = w_cell2.
* CALL METHOD OF w_range 'SUBTOTAL' = rc " вот тут и возникла трабла с передачей массива !!!
* EXPORTING
* #1 = 1
* #2 = -4157
* #3 = '3' " здесь должен был быть массив колонок 'Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)'
* #4 = 'TRUE'
* #5 = 'FALSE'
* #6 = 'TRUE'.
FREE OBJECT w_range .
FREE OBJECT w_cell2 .
FREE OBJECT w_cell1 .
SET PROPERTY OF w_excel 'Visible' = 1.
FREE OBJECT w_sheet .
FREE OBJECT w_wbook .
FREE OBJECT w_wbooks .
FREE OBJECT w_excel .