Гэри регулярно получает файл XLS, созданный кем-то за пределами его компании. Затем ему нужно импортировать некоторые макросы в книгу (или, не беспокойтесь! Скопировать их из файла TXT), а затем сохранить книгу в формате XLSM. Гэри задается вопросом, есть ли способ автоматизировать это, чтобы он мог запустить макрос, который будет импортировать макросы, которые он обычно добавляет вручную, а затем сохранить книгу в правильном формате.

Есть способ автоматизировать это с помощью объекта VBProject. Если ваш внешний текстовый файл содержит, по сути, модули Visual Basic, вы можете использовать метод Import для фактического импорта этих модулей. Он ведет себя точно так же, как если бы вы использовали возможности импорта редактора Visual Basic. Вот пример кода, который вы можете использовать:

Sub AutomateImport()

Const ModulePath As String = "C:\temp\code.txt"



Dim thisTarget As Workbook     Dim thisName As String

Set thisTarget = ActiveWorkbook     thisName = thisTarget.Name

' Save as XLSM file (neceassry before importing module)

ActiveWorkbook.SaveAs thisName & ".xlsm", _       FileFormat:=xlOpenXMLWorkbookMacroEnabled

' Import the VBA code required     thisTarget.VBProject.VBComponents.Import ModulePath

' Save the workbook     ActiveWorkbook.Save End Sub

Обратите внимание, что код сохраняет активную книгу как файл XLSM перед фактическим выполнением импорта. Это необходимо, поскольку функция импорта может заблокировать попытку импортировать модуль VBA в книгу, которая не поддерживает макросы. Кроме того, если вы получаете сообщение об ошибке при запуске макроса, вы можете проверить в редакторе Visual Basic, что вы установили ссылку на библиотеку объектов VBA Extensibility.

Чтобы использовать макрос, убедитесь, что вы обновили константу ModulePath, чтобы она указывала прямо на нужный текстовый файл. Макрос также должен храниться в вашей личной книге, чтобы он был доступен всякий раз, когда вы используете Excel.

Вы также можете получить пользу, изучив некоторый код на сайте Рона ДеБруина, который показывает, как импортировать и экспортировать код VBA в макросе:

https://www.rondebruin.nl/win/s9/win002.htm

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (11855) применим к Microsoft Excel 2007, 2010, 2013 и 2016.