【问题标题】:excel 2013 copy/paste object - Error 1004 Paste method of Worksheet class failedexcel 2013 复制/粘贴对象 - 错误 1004 工作表类的粘贴方法失败
【发布时间】:2015-08-03 09:42:42
【问题描述】:

代码目标

我在名为 picCompanyLogo 的“控制表”上有一个公司徽标的图像对象。我有几个工作表,每个工作表在Worksheet_Activate 事件中都有相同的代码,用于从“控制表”复制公司徽标并将其粘贴到 A1 的标题中。我正在计算行的大小和公司徽标图像的大小,以确保它始终位于工作表的右侧。

代码问题

该代码在 32 位和 64 位版本的所有 Excel 版本上运行良好。我有一个运行 Excel 2013 的用户,代码以错误终止:

错误 1004 - 将对象粘贴到“Range.A1”时,Worksheet 类的粘贴方法失败。

当我单步执行代码 (F8) 时,没有问题,但如果我在代码执行之前设置了 Stop 然后 F5,它会产生相同的错误。

If Sheets("ControlSheet").Shapes("picCompanyLogo").Name <> "picCompanyLogo" Then
   MsgBox "[MODULE: Worksheet Change(Header):Worksheet_Activate]" & vbCrLf & _
   "The CompanyLogo (picCompanyLogo) is missing from the Control worksheet (ControlSheet)." & vbCrLf & vbCrLf & _
   "The application will continue but please contact IT Support to correct the issue.", _
   vbOKOnly, _
   "MISSING COMPANY LOGO"
Else
   Application.EnableEvents = False
    
   ThisWorkbook.Sheets("ControlSheet").Shapes("picCompanyLogo").Copy
   ThisWorkbook.ActiveSheet.Paste Range("A1")

   Application.CutCopyMode = False
    
   lngCompanyLogoWidth = Sheets("ControlSheet").Shapes("picCompanyLogo").Width
   With ThisWorkbook.ActiveSheet.Shapes("picCompanyLogo")
       .Left = lngShapeWidth - lngCompanyLogoWidth - 2
       .Top = ActiveSheet.Range("B:" & strLastColLetter).Top + 2
   End With
    
   Application.EnableEvents = True
End If

我已插入以下行:

Application.EnableEvent
Application.CutCopyMode

两者都对 Office 2013 中的错误没有影响,并且该过程在其他版本的 Excel 中继续按预期工作。

在单步执行代码时,如果我在 F8 上的速度太快,粘贴似乎可以工作,即没有报告错误,但该过程随后失败:

With ThisWorkbook.ActiveSheet.Shapes("picCompanyLogo")
    .Left = lngShapeWidth - lngMulberyLogoWidth - 2
    .Top = ActiveSheet.Range("B:" & strLastColLetter).Top + 2
End With

错误表明无法在工作表上找到该形状,这让我认为粘贴没有达到我的预期。

【问题讨论】:

  • 当你通过粘贴代码 F8 时,你能打开 ActiveSheet 并查看是否粘贴了徽标吗?另外,在您上一个代码 sn-p 中,错误具体发生在哪一行?
  • 我有两台显示器,一台显示工作表,另一台显示代码,我可以看到,当我通过 F8 时,图像被粘贴到 A1 的左上角。要回答您的第二点,它会在 With ThisWorkbook.ActiveSheet.Shapes("picCompanyLogo") 上出错

标签: excel paste excel-2013 vba


【解决方案1】:

我已经在另一台用户 PC 上尝试过这个,也运行 Office 2013,但我没有遇到同样的问题。我只能将其归结为 Office 2013 的原始用户实施的一些怪癖。

【讨论】:

    猜你喜欢
    • 2014-09-08
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 2017-09-03
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多