首页 文章

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

提问于
浏览
4

我在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搜索中此错误的结果很少且没有解决方案 .


Update

一般代码如下:

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,则运行正常 .


Solution

Per Otaku提到,宏观正在失去对Slide Pane的关注 . 告诉它重新选择幻灯片窗格解决了这个问题 .

Application.ActiveWindow.Panes(2).Activate

5 回答

  • 3

    这可能是一个失去焦点,在Excel和PowerPoint之间切换导致PowerPoint失去焦点,因此没有 ActiveWindow 用于PowerPoint粘贴或 ActiveWindow 在PowerPoint中变为不同的 Pane ,例如幻灯片浏览器或Notes窗格 .

  • 0

    DataType是:wdPasteEnhancedMetafile

    由于某种原因,宏录制器使用ppPasteEnhancedMetafile,这是错误的 .

  • 1

    这是一个正常工作的宏,只需点击一次而不是3次,就可以粘贴没有格式化的文本 .

    Sub PasteTxt()
    'Michel Mahieu - 2013.01.30 - Edit, Paste Special, Text whithout formatting
    ActiveWindow.View.PasteSpecial ppPasteText
    End Sub
    

    我还有3个宏将文本放在一个表单中,只需一次点击而不是4: - 自动表单的格式 - 文本区域 - 选择顶部,中间,底部, - 单击希望的位置

    这是顶部的宏:

    Sub Haut()
    'Michel Mahieu - 2013.01.30 - Text on top
    With ActiveWindow.Selection.ShapeRange.TextFrame
    .VerticalAnchor = msoAnchorTop
    End With
    ActiveWindow.Selection.ShapeRange.Fill.Transparency = 0#
    End Sub
    

    享受,Michel.Mahieu @Cassidian.com

  • -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
    

    也许这有助于某人......

  • 1

    我遇到了同样的错误,并在这里尝试了许多解决方案 . 最终为我工作的是非常简单的事情 . 我认为这是有效的,因为第一行保存了对幻灯片的引用 . 粘贴选项可以是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
    

相关问题