如何在不复制工作表专用子代码的情况下复制工作表

时间:2020-01-25 14:00:50

标签: excel vba copy

我正在尝试使用宏复制工作表,但是这样做的话,私有子集也被复制了,我不想发生什么,因为它随后会干扰另一个模块宏。我看过这篇文章Copy a worksheet without copying the code并尝试过,但无法正常工作。有关如何执行此操作的一些想法?

Sub Export()

Application.DisplayAlerts = False
Application.ScreenUpdating = False
'Application.CutCopyMode = False

Sheets("CB").Select
MonthID = Range("N2").Value
YearID = Range("O2").Value
saldoID = Range("O18").Value

ActiveSheet.Unprotect
ActiveSheet.Copy After:=Sheets("CB")

' Get the code/object name of the new sheet...
Dim Code As String
Code = ActiveSheet.CodeName

' Remove all lines from its code module...
With ThisWorkbook.VBProject.VBComponents(Code).CodeModule
    .DeleteLines 1, .CountOfLines
End With

最后一步(.DeleteLines 1,.CountOfLines)始终会导致错误:“此刻无法进入中断模式”-运行时错误1004应用程序定义或对象定义的错误。

为什么,是什么错误或缺失? 谢谢

1 个答案:

答案 0 :(得分:2)

一种简单的方法:

  1. 将工作表复制到新的工作簿
  2. 将新工作簿另存为.xlsx
  3. 关闭新工作簿
  4. 重新打开新的.xlsx工作簿
  5. 将无宏工作表复制回原始工作簿

用于此的VBA代码很简单;您还可以包括:

  1. 重新关闭.xlsx
  2. 杀死 (删除) .xlsx工作簿