excel 2013复制/粘贴对象 - 错误1004工作表类的粘贴方法失败

时间:2015-08-03 09:42:43

标签: excel-vba paste excel-2013 vba excel

代码目标

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

代码问题

对于32Bit和64Bit版本,代码在所有版本的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

结束如果

我已插入以下行:

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

错误表明形状无法位于工作表上,这导致我认为粘贴不符合我的预期。

1 个答案:

答案 0 :(得分:0)

我在其他用户PC上试过这个,同时运行Office 2013,我没有遇到同样的问题。我只能对Office 2013的原始用户实现提出一些疑问。