PowerPoint VBA - 特殊粘贴(增强型图元文件)错误

var*_*ant 5 powerpoint vba

我在 PowerPoint 2003 SP3 中使用宏在 Excel 工作簿中查找指定图表,将其复制,然后将其作为增强型元文件粘贴到当前幻灯片中,最终使用以下代码行:

Application.ActiveWindow.View.PasteSpecial DataType:=ppPasteEnhancedMetafile
Run Code Online (Sandbox Code Playgroud)

只要它有效,我也会收到以下错误:

运行时错误“-2147188160 (80048240)”:
查看(未知成员):请求无效。指定的数据类型不可用。

如果我结束宏并尝试手动将特殊粘贴为增强型元文件,则没有问题,因此剪贴板对象或粘贴特殊类型并非无效。

有没有其他人经历过这种情况?您有解决方案或解决方法吗?Google 搜索中关于此错误的结果很少,也没有解决方案。


更新

一般代码如下:

Set presPPTCurrent = ActivePresentation
Set objXLApp = GetObject(, "Excel.Application")

''#Find the target chart and copy it to the clipboard
With objXLApp
    ''#This part works - if I go to Excel, I can see that the chart is copied
End With

''#Now paste in the chart as an Enhanced Metafile
presPPTCurrent.Application.Activate
Application.ActiveWindow.View.PasteSpecial DataType:=ppPasteEnhancedMetafile
Run Code Online (Sandbox Code Playgroud)

请注意,这是在传递 Shape 的 Sub 中(传递的 Shape 用作在 Excel 中查找图表的参考)。我已经意识到,当我尝试在从另一个 Sub 中的 For Next 循环传递的多个形状上重用这个 sub 时,它只会出现错误。

但是,如果我通过另一个 Sub 将单个 Shape 传递给这个 Sub,然后重新运行传递多个 Shape 的 Sub,它运行良好。


解决方案

根据 Otaku 的说法,宏正在失去对幻灯片窗格的关注。告诉它重新选择滑动窗格解决了这个问题。

Application.ActiveWindow.Panes(2).Activate
Run Code Online (Sandbox Code Playgroud)

Tod*_*ain 3

这可能是失去焦点,即在 Excel 和 PowerPoint 之间切换导致 PowerPoint 失去焦点,因此ActiveWindowPowerPoint 无法粘贴到其中,或者PowerPoint 中的内容ActiveWindow变得不同Pane,例如“幻灯片排序器”或“注释”窗格。