粘贴特殊错误1004 Range类的PasteSpecial方法失败

我仔细研究了目前这个问题的答案,他们都没有解决我的问题。

该操作只是简单地复制一张表格并复制到一本名为预算的新书中。

我再次尝试了多种不同的方法来做同样的事情,而且他们都没有改变这个错误。 select方法的工作原理,只有当我尝试粘贴。

码:

Range("B3").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Dim wk As Workbook Set wk = Workbooks.Add wk.SaveAs FileName:=ThisWorkbook.path & "\" & "Budget.xlsx" wk.Activate wk.Unprotect wk.Worksheets("Sheet1").Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 

谢谢,

尝试下面的代码(代码中的解释为注释):

 Dim wk As Workbook Set wk = Workbooks.Add wk.SaveAs Filename:=ThisWorkbook.Path & "\" & "Budget.xlsx" wk.Activate wk.Unprotect ' have the Copy>>Paste section together Dim LastCol As Long Dim LastRow As Long ' you never mentioned which sheet to copy from, I used the first index With ThisWorkbook.Sheets(1) LastCol = .Range("B3").End(xlToRight).Column LastRow = .Range("B3").End(xlDown).Row .Range("B3", .Cells(LastRow, LastCol)).Copy ' <-- Copy without Select End With ' Paste without Select wk.Worksheets("Sheet1").Range("B3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 

如果您手动尝试完代码中的步骤,则会发现它也失败。 问题是,在复制单元格并尝试粘贴它们之间,您正在创build一个新的工作簿并将其保存。 这取消复制/粘贴模式(即复制范围周围的“行军ant”消失),所以没有什么可粘贴的。

解决scheme是根本不使用Selection 。 一般来说,每当你发现自己写作。select在VBA你做错了(详细看这个问题 )。 下面是我将如何重新编写你的代码:

 Dim wk As Workbook Set wk = Workbooks.Add wk.SaveAs Filename:=ThisWorkbook.Path & "\" & "Budget.xlsx" ThisWorkbook.Range("B3").CurrentRegion.Copy wk.Worksheets("Sheet1").Range("B3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False