[英]“Runtime Error 1004: Copy method of worksheet class failed ” in VBA on first copy attempt
(提前抱歉我的英语不好:不是第一语言:))我正在编写一个VBA Excel 2003例程,该例程在一个文件中运行50多个工作表,逐个复制工作表(就像临时副本一样)然后执行操作在删除这些临时副本并将其结果返回到工作表内容之前对它们进行操作。 更确切地说:代码是从外部文件调用的,里面有一个(隐藏的)工作表。 当我打开文件时,它运行一个代码在Excel中创建一个新的工具栏,当我按下工具栏上的一个按钮时,我上面描述的代码就会运行。
我知道不保存文件并执行许多和多个副本会触发此错误,但现在它在第一次尝试时触发(我已经多次关闭并重新打开所有内容以确保我没有保留未保存的状态)。
这是触发问题的代码,我很抱歉格式不佳:
ActiveWorkbook.Worksheets("NAME OF THE FIRST WORKSHEET I WANT TO COPY").Copy ThisWorkbook.Worksheets("HiddenSheet")
免责声明:工作表的名称是通过ActiveWorkbook.Worksheets数组的For..Next循环找到的,但即使我自己对该名称进行硬编码,代码也无法正常工作。
这是一个更大的代码块,更清楚:
Set sourceWorkbook = ActiveWorkbook
For index = 1 To sourceWorkbook.Worksheets.Count
sourceWorkbook.Activate 'not sure if this is even needed
Set currWorksheet = sourceWorkbook.Worksheets(index)
currWorksheet.Copy ThisWorkbook.Worksheets("HiddenSheet")
Next index
结果现在始终如一:
运行时错误'1004'工作表类的复制方法失败。
我提前感谢大家的帮助!
一些有用的指导:
Option Explicit
'Copy sheet
Sub CopySheet()
Dim ws1 As Workbook, ws2 As Workbook
'It's better to declare sheets and avoid activate
Set ws1 = Workbooks("Book1")
Set ws2 = Workbooks("Book2")
'Copy sheet "Test" from ws1(Book1) to ws2 (Book2) after all sheets
ws1.Worksheets("Test").Copy After:=ws2.Worksheets(Sheets.Count)
End Sub
Option Explicit
'Copy a range
Sub CopyRange()
Dim ws1 As Workbook, ws2 As Workbook
'It's better to declare sheets and avoid activate
Set ws1 = Workbooks("Book1")
Set ws2 = Workbooks("Book2")
'Copy from ws1(Book1), sheet "Test" & range A1:A5 to ws2 (Book2), sheet "sheet1" & range A1
ws1.Worksheets("Test").Range("A1:A5").Copy
ws2.Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.