加里(Gary)会定期收到公司外部某人生成的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可扩展性对象库的引用。

为了使用该宏,请确保更新ModulePath常量,使其指向正确的文本文件。宏也应该存储在您的个人工作簿中,以便在使用Excel时将可用。

您还可以通过检查Ron DeBruin网站上的一些代码来获利,该代码显示了如何在宏中导入和导出VBA代码:

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

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11855)适用于Microsoft Excel 2007、2010、2013和2016。