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

时间:2017-10-05 10:59:21

标签: excel vba excel-vba import vbe

我需要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事件。

1 个答案:

答案 0 :(得分:3)

而不是使用:

创建新工作簿
Set WBK = Workbooks.Add

考虑使用类似的东西:

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

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

(当然,您可能需要进行更多清理才能删除不需要复制的内容。)

修改#1:

请参阅Vogelaar的答案:

Loading a subroutine into "ThisWorkbook" using VBA