我可以通过调用其 .Copy
方法来复制工作表。
Sheets("Example").Copy After:=Worksheets("Sheet3")
但是,这也会复制与该工作表关联的任何宏或事件处理程序。如何在不复制任何 Visual Basic 代码的情况下复制工作表?
最佳答案
复制工作表后,您可以按名称引用它,然后从代码模块中删除所有行:
Sheets("Example").Copy After:=Sheets("Sheet3")
' Get the code/object name of the new sheet...
Dim strObjectName As String
strObjectName = ActiveSheet.CodeName
' Remove all lines from its code module...
With ThisWorkbook.VBProject.VBComponents(strObjectName).CodeModule
.DeleteLines 1, .CountOfLines
End With
要使用项目组件,您需要确保在 Excel 的宏设置中启用“信任对 VBA 项目对象模型的访问”
选项。
关于vba - 复制工作表而不复制代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32016718/