将 "ThisWorkbook" 宏导入另一个工作簿
Import "ThisWorkbook" macro to another Workbook
我需要 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
事件。
而不是创建新工作簿:
Set WBK = Workbooks.Add
考虑使用类似的东西:
Sub lkjhgf()
ThisWorkbook.SaveCopyAs ("C:\Users\Garys\Desktop\new.xlsm")
End Sub
新创建的工作簿将包含原始工作簿中的所有 ThisWorkbook
代码。
(当然,您可能需要进行更多清理以删除不需要复制的内容。)
编辑#1:
在这里查看 Vogelaar 的回答:
我需要 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
事件。
而不是创建新工作簿:
Set WBK = Workbooks.Add
考虑使用类似的东西:
Sub lkjhgf()
ThisWorkbook.SaveCopyAs ("C:\Users\Garys\Desktop\new.xlsm")
End Sub
新创建的工作簿将包含原始工作簿中的所有 ThisWorkbook
代码。
(当然,您可能需要进行更多清理以删除不需要复制的内容。)
编辑#1:
在这里查看 Vogelaar 的回答: