vba - 复制工作表而不复制代码

标签 vba excel

我可以通过调用其 .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/

相关文章:

vba - 使用 VBA Excel 2010 访问 JIRA

ms-access - 错误代码 3021 bof 或 eof 为真或当前记录已被删除

c# - 使用 C# 创建新的 Excel 公式/函数

excel - 在 VBA 中编码时出现 Å、Ä 和 Ö(对于其他用户)的问题

excel - 使用 VBA 将数据从 CA Clarity 导入 Excel

excel - VBA:什么是97.45 * 1#=?

ms-access - Access VBA 检查两个日期字段之间的时间段是否不跨越特定日期

python - 如何将空可选参数从 Python 传递到 Excel VBA 宏

java - 使用远程服务器上的 jdbc 访问 excel 作为数据库

java - 工作簿无法解析java中的类型?