将“ThisWorkbook”macros导入到另一个工作簿

我需要VBA代码将一个过程导入另一个工作簿中的ThisWorkbook作用域。

我有代码将模块导入到另一个工作簿,但如何将此过程导入到ThisWorkbook范围而不是模块范围?

 Sub TransferModule() Const modul As String = "Misc" Const tempfile As String = "/Users/Roman/Desktop/temp.bas" Dim WBK As Workbook On Error Resume Next Set WBK = Workbooks.Add ThisWorkbook.VBProject.VBComponents(modul).Export tempfile WBK.VBProject.VBComponents.Import tempfile Kill tempfile End Sub 

这从“This”工作簿中取出模块Misc ,将其导出到temp.bas ,然后将其导入到另一个工作簿。 不过,我需要它不是导入到一个模块,而是导入到ThisWorkbook范围。 这是一个Private Sub Workbook_BeforeClose事件。

而不是创build新的工作簿:

 Set WBK = Workbooks.Add 

考虑使用类似于:

 Sub lkjhgf() ThisWorkbook.SaveCopyAs ("C:\Users\Garys\Desktop\new.xlsm") End Sub 

新创build的工作簿将包含原始版本的所有ThisWorkbook代码。

(当然,你可能有更多的清理工作来清除你不需要复制的东西。)

编辑#1:

请参阅Vogelaar的答案:

使用VBA将子例程加载到“ThisWorkbook”中