我在PowerPoint 2003 SP3中使用宏来查找Excel工作簿中的指定图表,复制它,然后将其作为增强型图元文件粘贴到当前幻灯片中,最终使用以下代码行:
Application.ActiveWindow.View.PasteSpecial DataType:=ppPasteEnhancedMetafile
尽管它有效,我也会收到以下错误:
Run-time error '-2147188160 (80048240)': View (unknown member) : Invalid request. The specified data type is unavailable.
如果我结束宏并尝试手动粘贴Special作为增强型图元文件,我没有问题,所以它不像剪贴板对象或pastespecialtype无效。
还有其他人经历过这个吗?您有解决方案或解决方法吗? 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
请注意,这是在传递Shape的Sub中(传递的Shape用作在Excel中查找图表的参考)。我已经意识到当我尝试在另一个Sub中的For Next循环传递的多个形状上重用这个sub时,它只会出错。
但是,如果我通过另一个Sub将单个Shape传递给此Sub,然后重新运行传递多个Shapes的Sub,则运行正常。
的解决方案的
Per Otaku提到,宏观正在失去对Slide Pane的关注。告诉它重新选择幻灯片窗格解决了这个问题。
Application.ActiveWindow.Panes(2).Activate
答案 0 :(得分:3)
这可能会失去焦点,因为在Excel和PowerPoint之间切换导致PowerPoint失去焦点,因此PowerPoint没有ActiveWindow
粘贴到或ActiveWindow
变为不同的{{} PowerPoint中的1}},例如“幻灯片浏览”或“便笺”窗格。
答案 1 :(得分:1)
我遇到了同样的问题。我有宏将PowerPoint中的大量图表导出。但是一些复制粘贴操作以与上面相同的错误结束(运行时错误'-2147188160(80048240)':)
我意识到PasteSpecial错误不是由于失去焦点,而是由于剪贴板丢失。
因此,解决方案再次将区域重新复制到剪贴板,如:
On Error GoTo paste_error
ppSlide.Shapes.PasteSpecial(2, link:=RangeLink).Select
...
paste_error:
Worksheets(SheetName).Range(RangeName).copy
Resume
也许这对某人有帮助......
答案 2 :(得分:0)
我遇到了同样的错误,并在这里尝试了许多解决方案。最终为我工作的是非常简单的事情。我认为这是有效的,因为第一行保存了对幻灯片的引用。粘贴选项可以是EnhancedMetaFile而不是Bitmap。
Sub Macro()
Set sld = Application.ActiveWindow.View.Slide
With GetObject(, "Excel.Application")
.Workbooks(1).Sheets(1).Shapes(1).Copy
End With
sld.Shapes.PasteSpecial DataType:=ppPasteBitmap
End Sub