aar написал(а):
Доброе утро.
Есть ли возможность использовать один макрос из нескольких документов, но чтобы он был в одном файле, чтобы не править макросы во всех документах? Возможно, в идеале, параметризировать его.
Спасибо.
Как оказалось, есть!

Я попробовал на своём примере ZWWW_SAMPLE_INVOICE.xls. Вытащил из него макрос форматирования объединённых ячеек MergeCellsAutofit, поместил его в отдельный файл Excel и сохранил как надстройку Excel (*.xla) с именем "Func.xla".
В шаблоне ZWWW_SAMPLE_INVOICE.xls изменил вызов макроса, вместо
Code:
Call MergeCellsAutofit(Range("Область_формата"))"
написал
Code:
Run "'" + Application.ThisWorkbook.Path + "\Func.xla'!MergeCellsAutofit", Range("Область_формата")
А при вызове ФМ передаю файл с общими макросами "FUNC.xla" через таблицу IT_FILES.
В результате он выгружается вместе с шаблоном и доступен для вызова его макросов.
Code:
wa_Files-File_Name = 'Func.xla'.
wa_Files-File_Data = ... "двоичный файл типа xstring
Insert wa_Files into table lt_Files.
Call function 'ZLCL_OPENFORM'
exporting
Source_Name = lv_File_Name
tables
it_Values = lt_Val[]
it_Files = lt_Files[].
Я проверял на ФМ 'ZLCL_OPENFORM', поэтому измененный шаблон ZWWW_SAMPLE_INVOICE.xls и файл общих макросов FUNC.xla у меня брались с локального компьютера. Вы можете сохранить файл общих макросов так же, как шаблон, в Web-хранилище (тр.SMW0), или любом другом, и стандартными функциями считывать его и преобразовывать в тип xstring для передачи через параметр it_Files.