use*_*776 16 excel vba excel-vba vbe
我一直在使用下面的代码将VBA模块从一个工作簿编译到另一个工作簿,我不知道是否有更简单的方法,但它们一直工作正常:
Set srcVba = srcWbk.VBProject
Set srcModule = srcVba.VBComponents(moduleName)
srcModule.Export (path) 'Export from source
trgtVba.VBComponents.Remove VBComponent:=trgtVba.VBComponents.Item(moduleName) 'Remove from target
trgtVba.VBComponents.Import (path) 'Import to target
Run Code Online (Sandbox Code Playgroud)
但是现在我需要复制Sheet中的VBA代码,而不是模块中的VBA代码.上述方法不适用于该场景.
我可以使用什么代码将工作表中的VBA代码从一个工作簿复制到另一个工作簿?
Che*_*hel 28
您无法删除并重新导入VBComponent
,因为这将逻辑删除整个工作表.相反,您必须使用CodeModule
操作组件中的文本:
Dim src As CodeModule, dest As CodeModule
Set src = ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule
Set dest = Workbooks("Book3").VBProject.VBComponents("ThisWorkbook") _
.CodeModule
dest.DeleteLines 1, dest.CountOfLines
dest.AddFromString src.Lines(1, src.CountOfLines)
Run Code Online (Sandbox Code Playgroud)