在Excel VBA中复制图形时清除剪贴板

时间:2011-10-17 12:16:36

标签: excel vba powerpoint copy-paste

我使用VBA将几个Excel图形从Excel复制并粘贴到Powerpoint:

'copy from excel worksheet
    Workbooks(Stats & ".xls").Worksheets(Stats).ChartObjects("graph4").Copy
'paste into powerpoint presentation
    .Slides(3).Shapes.Paste

' more code and more copy and pastes
' ...

有时,复制图表会失败。除了记忆问题,我没有其他解释。 我得到的错误消息:

  

对象'Chartobject'的方法'复制'失败。

然后Excel没有响应,我必须重新启动它。

我该怎么做才能防止这种情况发生? 也许我可以在复制和粘贴操作之间清除剪贴板?

更新: 我已经尝试了两种提到的方法来清除剪贴板。副本&粘贴操作仍然不时失败。运行时错误为“-2147417848(80010108)”。 网上有关于此错误的一些信息,所以我将从那里开始。

更新(最终): 我想通过将这些代码放在复制和粘贴图表的部分前面来解决问题。错误没有再次出现。

DoEvents 'lets the operating system clear / execute any backed up / queued events that it might have to execute.
'slow down the execution (to not get an error)
Workbooks(Stats & ".xls").Save

5 个答案:

答案 0 :(得分:2)

以下是VBA访问剪贴板的一个小例子:

http://word.mvps.org/faqs/macrosvba/ManipulateClipboard.htm

通过在其中放入一些空文本来清除剪贴板。老实说,我不知道这是否能解决你原来的问题。

答案 1 :(得分:1)

尝试在复制和粘贴操作之间放置Application.CutCopyMode = 0

0False表示“取消剪切或复制模式并删除移动边框”: http://msdn.microsoft.com/en-us/library/office/ff839532.aspx

答案 2 :(得分:0)

您没有提到您正在使用的Office版本。如果是2007年,您是否应用了Service Pack 2并检查了可能解决此问题的修补程序?

2007年的原版很糟糕。

答案 3 :(得分:0)

我插入不成功     application.cutcopymode = 0 复制和粘贴语句之间。

插入时我成功了     application.cutcopymode = 0
粘贴和关闭语句之间。

windows(ThisBook).activate: range(nextcell).select: activesheet.paste
application.cutcopymode = 0
windows(OtherBook).activate: activewindow.close

答案 4 :(得分:0)

粘贴前激活对象。我使用以下

解决了

.Slides(3).shapes.activate