运行时错误'1004':Microsoft Excel无法粘贴数据

问题描述 投票:0回答:2

我已经查找了问题,并且看到了一些解决方案,这些解决方案可以解决诸如Select或具有受保护的工作表的问题,但这些解决方案都不适用于我。

出于各种原因,我无法发布完整的代码,但是我将对其进行描述,并确切地发布给我带来问题的子代码。

我有一个宏,它根据用户输入的月份和年份生成许多工作表(因此,“ 1”-“ 31”或“ 1”-“ 30”等)。若要生成这些工作表,宏将复制一个工作表的副本,命名为“ EXAMPLE”。复制的一件事是一张图片(只是上面带有单词“导出”的矩形),上面附有宏。

我最近通过移动此图片的位置进行了我认为是外观上的更改,此后,当我运行宏时出现错误:

“运行时错误'1004':Microsoft Excel无法粘贴数据。“

以及“结束”,“调试”和“帮助”的选项

如果选择“调试”,它将指向第二个宏,该宏在生成宏的过程中被调用'

Sub CopyAllShapes()
Dim ws As Worksheet

' Sets the non-generated worksheets as an array
nSheets = Array("EXAMPLE", "Weekly Totals", "Menu")

' Copies the Picture from the EXAMPLE sheet to all worksheets not in the array and then assigns a 
' seperate Macro called "Export" to the picture on each of these sheets.
For Each ws In ActiveWorkbook.Worksheets
    If Not IsNumeric(Application.Match(ws.Name, nSheets,0)) Then
        Sheets("EXAMPLE").Shapes("Picture 1").Copy
        ws.Range("J62").PasteSpecial
        ws.Shapes("Picture 1").OnAction = "Export"
    End If
Next ws

Application.CutCopyMode = xlCopy
End Sub

[调试]选项突出显示该行

ws.Range("J62").PasteSpecial

真正让我困惑的是,如果我选择'End'而不是'Debug',则宏停止,但是所有工作表都粘贴了图片,并分配了Export宏,并且一切正常。如果我是唯一使用此工具的人,那将是一个小麻烦,但是许多人使用此文档,无法可靠地告诉他们“只是忽略”该错误。由于宏功能正常,我该如何解决引起问题的原因并使错误消失?

正如我所说,我不能发布整个宏,但是如果有人需要更多信息,我可以发布一些零碎的东西。

excel vba
2个回答
0
投票

[在移至Office 365和Win10时(不能说是哪一个是罪魁祸首),我发现了一堆现有的宏,当试图将复制的图像粘贴到工作表上时会出现相同的错误。

[进入调试时,“粘贴”行将突出显示,但是如果我单击“继续”,它将(在一两次尝试后)运行且没有错误。

我最终这样做:

i = 0
Do
    On Error Resume Next
    rngFit.Parent.Paste
    If Err.Number <> 0 Then
        Debug.Print "Paste failed", i
        DoEvents
        i = i + 1
    Else
        Exit Do
    End If
    On Error GoTo 0
    If i > 20 Then Exit Do  'give up trying at this point...
Loop

...看起来很糟,但是是解决该问题的唯一可靠方法。


0
投票

只是想让所有人都知道我找到了(某种)解决方案。根据蒂姆·威廉姆斯和彼得·T的回答/评论,我修改了代码,使其看起来像这样:

Sub CopyAllShapes()
Dim ws As Worksheet

' Sets the non-generated worksheets as an array
nSheets = Array("EXAMPLE", "Weekly Totals", "Menu")

' Copies the Picture from the EXAMPLE sheet to all worksheets not in the array and then assigns a 
' seperate Macro called "Export" to the picture on each of these sheets.
For Each ws In ActiveWorkbook.Worksheets
    If Not IsNumeric(Application.Match(ws.Name, nSheets,0)) Then
        Sheets("EXAMPLE").Shapes("Picture 1").Copy
    On Error Resume Next
        ws.Range("J62").PasteSpecial
    On Error Goto 0
        ws.Shapes("Picture 1").OnAction = "Export"
    End If
Next ws

Application.CutCopyMode = xlCopy
End Sub

这已成功忽略了该错误,并且现在一切正常!谢谢大家的帮助,希望以后对其他人有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.