Автоматизация импорта макросов (Microsoft Excel)
Гэри регулярно получает файл 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.