运行时错误1004:工作表类的粘贴方法失败

时间:2017-03-22 13:34:41

标签: excel vba excel-vba runtime-error

有很多关于此错误的信息以及如何修复,但我已经尝试了很多这些错误并且没有任何效果:请参阅下面的问题代码块

Range("A1:K2").Select
Selection.Copy
Windows("EIL Depannage Register.xlsm").Activate
Sheets("Raising Depannage").Select
ActiveSheet.Unprotect
Sheets("Import_Sheet").Select
ActiveSheet.Unprotect
Range("A1").Select
Application.Wait (Now + TimeValue("00:00:10"))
ActiveSheet.Paste    <<<<<error happens at this line

使用.Paste在最后一行发生错误。

4 个答案:

答案 0 :(得分:1)

.Unprotect命令取消了您的.CutCopyMode,因此基本上无需粘贴。在启动复制和粘贴操作之前,您必须取消保护工作表

Dim ws As Worksheet
Set ws = ActiveSheet

Windows("EIL Depannage Register.xlsm").Activate
With ActiveWorkbook
    .Worksheets("Raising Depannage").Unprotect
    With .Worksheets("Import_Sheet")
        .Unprotect
        ws.Range("A1:K2").Copy Destination:=.Range("A1")
    End With
End With

我不喜欢使用ActiveSheet来限定原始工作表,但是您的代码没有指定工作簿或工作表,这让我没什么选择。

答案 1 :(得分:0)

你能这样试试吗?

Range("A1:K2").Copy
Windows("EIL Depannage Register.xlsm").Activate
Sheets("Raising Depannage").Unprotect
Sheets("Import_Sheet").Unprotect
Sheets("Import_Sheet").Range("A1").Paste

编辑: 这样怎么样:

Dim wb As Workbook
Dim ws As Worksheet

set wb = activeworkbook
set ws = activesheet

Windows("EIL Depannage Register.xlsm").Activate
Sheets("Raising Depannage").Unprotect
Sheets("Import_Sheet").Unprotect

wb.ws.Range("A1:K2").Copy
Windows("EIL Depannage Register.xlsm").Activate
Sheets("Import_Sheet").Range("A1").Paste

玩一下,应该可以。

答案 2 :(得分:0)

fix.detectChanges()

只需修复源和目标并验证范围

答案 3 :(得分:0)

代码的最后一行应该是:

Sheets("Import_Sheet").paste Range("A1")

粘贴是工作表的一种方法,range("A1")是目标参数。