Копировать модуль VBA - Советы по Excel

Содержание

Мишель пишет:

Мы разработали приложение Excel, которое создает уникальную рабочую книгу Excel для распространения среди 54 брокеров. Мне нужно включить несколько макросов VBA в каждую из 54 книг Excel, которые распространяются среди брокеров. Как скопировать модуль VBA из исходной книги Excel в каждую новую книгу Excel?

Это отличный вопрос, Мишель. Использовать команду Sheets (). Copy для копирования рабочего листа в новую книгу легко, но не так просто скопировать модуль в новую книгу. Решение включает в себя экспорт модуля один раз, а затем его импорт в каждую из 54 ваших рабочих книг брокера по мере их заполнения. Вот часть вашего кода с решением.

' Delete any old stray copies of the module1 On Error Resume Next Kill ("C:MrXL1.bas") On Error GoTo 0 ' Export Module 1 ActiveWorkbook.VBProject.VBComponents("module1").Export ("c:MrXL1.bas") For x = 1 to 54 ThisBroker = Sheets("BrokerList").range("A" & x).value '… customization of plan omited for brevity Sheets(Array("Menu", "Plan")).Copy NBName = ActiveWorkbook.Name ' new book name ' Import Module 1 to this new book Application.VBE.ActiveVBProject.VBComponents.Import ("c:MrXL1.bas") ActiveWorkbook.SaveAs Filename:=ThisBroker ActiveWorkbook.Close Next x Kill ("C:MrXl1.bas")

Команды VBE.ActiveProject.VBComponents.Export и VBE.ActiveProject.VBComponents… Import заботятся о копировании макросов в новые книги.

В Excel 2002 и новее вам необходимо явно разрешить макросу добавлять код в книгу. Перейдите в Инструменты, Макрос, Безопасность. Щелкните вторую вкладку: Надежные издатели. В левом нижнем углу выберите Trust Access to Visual Basic Project. В Excel 2007 перейдите в раздел «Значок Office», «Параметры Excel», «Центр управления безопасностью», «Параметры центра управления безопасностью», «Параметры макроса» и выберите «Доверять доступ к объектной модели проекта VBA».

Осторожно

Команды для экспорта и импорта модулей, а также команды для ввода новых макросов в существующую книгу вместе известны как расширяемость Visual Basic или VBE. Если в вашей книге используются какие-либо команды VBE, высока вероятность, что книга будет отмечена антивирусными сканерами. Это ложное срабатывание. В названии предполагаемого вируса почти всегда присутствует «эвристика». Это означает, что сканер видит вызовы DLL, которые кажутся подозрительными, но не обязательно соответствуют каким-либо известным вирусам. Обычно вы можете написать производителю антивирусного программного обеспечения и подать заявку на внесение вашей книги Excel в белый список после объяснения того, что вы это делаете и почему это хорошо.

Интересные статьи...