[英]VBA code to copy data from one worksheet & paste below last row of another worksheet
[英]Copy VBA code from one Worksheet to another using VBA code
好的,这就是我想要完成的:我试图将所有 VBA 代码从“Sheet2”复制到“Sheet 3”代码窗格。 我不是指从一个模块复制到另一个模块,而是 Excel 表对象代码。
我已经为应用程序扩展性 5.3 添加了对 MS VB 的引用
我不知道从哪里开始,但这是我的开始,它不会去任何地方,而且可能都是错误的。 请帮助 - 只想以编程方式将工作表 vba 代码复制到另一个工作表 vba 窗格。
Dim CodeCopy As VBIDE.CodePane
Set CodeCopy = ActiveWorkbook.VBProject.VBComponents("Sheet2").VBE
ActiveWorkbook.VBProject.VBComponenets("Sheet3").CodeModule = CodeCopy
使用CodeModule
对象而不是CodePane
,然后您可以创建第二个变量来表示目标模块(您将在其中“粘贴”代码)。
Sub test()
Dim CodeCopy As VBIDE.CodeModule
Dim CodePaste As VBIDE.CodeModule
Dim numLines As Integer
Set CodeCopy = ActiveWorkbook.VBProject.VBComponents("Sheet2").CodeModule
Set CodePaste = ActiveWorkbook.VBProject.VBComponents("Sheet3").CodeModule
numLines = CodeCopy.CountOfLines
'Use this line to erase all code that might already be in sheet3:
'If CodePaste.CountOfLines > 1 Then CodePaste.DeleteLines 1, CodePaste.CountOfLines
CodePaste.AddFromString CodeCopy.Lines(1, numLines)
End Sub
除了添加对“ Reference to MS VB for Applications Extensibility 5.3 ”的引用外
在 Excel 2007+ 中,单击主功能区上的开发人员项,然后单击代码面板中的宏安全项。 在该对话框中,选择宏设置并检查对 VBA 项目对象模型的信任访问。
谢谢你们! 在测试上述多个建议后,其中“b”是工作表名称,您必须使用.CodeName
,而不是.Name
Set CodePaste = ActiveWorkbook.VBProject.VBComponents(WorkSheets(b).CodeName).CodeModule
如果您已将目标工作表设置为对象:
Dim T As Worksheet
Set T = Worksheets("Test")
那么你只需要:
Set CodePaste = ActiveWorkbook.VBProject.VBComponents(Worksheets(T.Name).CodeName).CodeModule
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.