将一个工作簿中的工作表中的VBA代码复制到另一个工作簿?

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)

  • 哦,这只是来自几周的分散工作,试图解决同样的问题.我唯一能做的就是在VBA扩展性对象上戳戳和刺激,直到我找到一些模糊地听起来像我需要的方法. (8认同)