Предварительно в excel надо создать закладку с именем PAGE_COUNT в любом удобном месте. Туда мы передаем значение, равное количеству копий листов. А затем вызываем макрос.
Макрос принимает параметр типа Range, равный количеству листов, которое мы задаем из abap.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub MCopy(R As Range) Dim n As Long, I As Long, CurSheet As Worksheet n = R.Value R.Value = "" Set CurSheet = Worksheets("УЛ_1") For I = 2 To n Worksheets("УЛ_1").Copy after:=CurSheet Set CurSheet = ActiveSheet CurSheet.Name = "УЛ_" & I Next I Worksheets("УЛ_1").Activate End Sub |
Вызов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
DATA it_val TYPE TABLE OF zwww_values. DATA ls_value TYPE zwww_values. DEFINE setline. CLEAR ls_value. ls_value-var_name = &1. "имя закладки строки таблицы ls_value-var_num = &2. "строка ls_value-find_text = &3. "искомый текст ls_value-val_type = &4. " ls_value-value = &5. "значение append ls_value TO it_val. END-OF-DEFINITION. DATA(lv_shits_count) = 2. "for example setline 'PAGE_COUNT' '' '' '' lv_shits_count. setline 'PAGE_COUNT' '' '' 'M' 'MCopy'. CALL FUNCTION 'ZWWW_OPENFORM' EXPORTING form_name = 'ZWWW_FORM_NAME' * file_name = CONV rlgrap-filename( file_name ) delete_file = '' * file_location = '' * close_form = 'X' * debug_mode = 'X' printdialog = '' protect = ' ' optimize = 10 TABLES it_values = it_val EXCEPTIONS printcancel = 1 OTHERS = 2. IF sy-subrc <> 0. RETURN. ENDIF. |
К данным на других листах нужно обращаться так: ИмяЛиста!Закладка
Например:
DATA(link_header) = |УЛ_{ page_num }!HEADER|.