复制并粘贴图表图像后,Excel崩溃

时间:2020-05-07 23:39:12

标签: excel vba crash paste excel-charts

我需要复制另一个工作簿(WbO)中图表的图片/图像,然后使用Excel vba将图片粘贴到该工作簿(TWb)中的工作表中。 我想出一个简单的代码来做到这一点。 好的是代码可以工作。在代码中一步一步地完成所有事情。

但是,如果我运行代码(不执行步进),它也将一直运行到最后而没有任何错误并完成作业。但是,最后Excel崩溃,没有任何错误消息,然后重新启动并重新打开工作簿。 (所有工作都丢失了)。 最奇怪的是,运行结束后,它崩溃了3到5秒。 3到5秒是计算的巨大时间。在这段时间内正在做什么?

为了进行测试,我添加了“ Msgbox“ Completed”,vbokonly“作为最后的代码行。这使vba停止并显示消息,并且在屏幕上显示消息时不会崩溃。单击“确定”,宏将运行到结尾,然后在几秒钟后……崩溃。

在网络上搜索了类似的问题,发现一些旧帖子提及与复制/粘贴有关的错误,但没有完全崩溃。

在不同的PC上尝试了相同的文件/代码,它们都使用最新的Office 365,但是使用不同的更新通道(版本不同)。结果完全一样。

尝试将.CopyPicture语句更改为普通副本,然后将PasteSpecial用作图片。结果相同。

甚至尝试将复制/粘贴指令移动到不同的子项(来自2018年帖子的建议),并在..之间插入DoEvents,但没有任何运气。

有人知道为什么会发生这种情况吗? 如何克服这个问题?

欢迎帮助

下面的示例代码:

Application.EnableEvents= False
Set WbO = /Workbooks.Open("WbOFileName",0)
Set ChrtObj= Worksheets("MyCharts").ChartObjects(1) 'Set handle to the Chart obj
TWb.Activate  ' Activate destination Workbook = The Wb which contains the macro

ChrtObj.CopyPicture
RangeToPasteOn(1,1).Select  ' Select Top-Left cell to paste the Chart on
ActiveSheet.paste         ' Paste the Chart
  ' ... here Code to ajust Size and position to fit destination range

Application.CutCopyMode = False
Set ChartObj = Nothing   'Release handle
WbO.Close
Set WbO = Nothing
Application.EnableEvents= True

0 个答案:

没有答案