PowerPoint VBA - Paste Special (Enhanced Metafile) bug

↘锁芯ラ 提交于 2019-12-23 12:51:50

问题


I am using a macro in PowerPoint 2003 SP3 to find a specified chart in an Excel workbook, copy it, and then paste it into the current slide as an Enhanced Metafile with, ultimately, the following line of code:

Application.ActiveWindow.View.PasteSpecial DataType:=ppPasteEnhancedMetafile

As often as it works, I also receive the following error:

Run-time error '-2147188160 (80048240)':
View (unknown member) : Invalid request. The specified data type is unavailable.

If I end the macro and attempt to manually Paste Special as Enhanced Metafile, I have no problem, so it's not as though the clipboard object or the pastespecialtype is invalid.

Has anyone else experienced this? Do you have a solution or a workaround? There are few results and no solutions in a Google search on this error.


Update

The general code is as follows:

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

Note that this is in a Sub to which a Shape is passed (the Shape being passed is used as a reference to find the chart in Excel). I've realized that it only bugs when I attempt to reuse this sub on multiple shapes passed from a For Next loop in another Sub.

However, if I pass a single Shape to this Sub with via another Sub and then re-run the Sub that passes multiple Shapes, it runs fine.


Solution

Per Otaku's mention, the macro was losing its focus on the Slide Pane. Telling it to re-select the Slide Pane solved the issue.

Application.ActiveWindow.Panes(2).Activate

回答1:


This is likely a loss of focus where switching between Excel and PowerPoint is causing PowerPoint to lose focus and therefore there is no ActiveWindow for PowerPoint to paste in to or the ActiveWindow becomes a different Pane in PowerPoint, such as the Slide Sorter or the Notes pane.




回答2:


I was experiencing the same issue. I have macro which exports a lot of graphs to the PowerPoint. But some copy-paste actions end with the same error as above (Run-time error '-2147188160 (80048240)':)

I realized that the PasteSpecial error was not due to the loss of focus, but due to the loss of clipboard.

The solution is therefore recopying the area to the clipboard again like:

On Error GoTo paste_error
ppSlide.Shapes.PasteSpecial(2, link:=RangeLink).Select
...
paste_error:
    Worksheets(SheetName).Range(RangeName).copy
    Resume

Maybe this help somebody...




回答3:


I was getting the same errors and experimented with many of the solutions on here. What ended up working for me was something very simple. I think it works because of the first line that saves a reference to the slide. The paste option could be EnhancedMetaFile instead of 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


来源:https://stackoverflow.com/questions/3260717/powerpoint-vba-paste-special-enhanced-metafile-bug

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!