运行时错误'-2147188160(80048240)DataType:= ppPasteEnhancedMetafile错误

时间:2011-11-30 12:42:03

标签: vba excel-vba powerpoint-vba excel

似乎有一些错误。无法解决此问题,所有代码运行正常,我能够看到AutoShape从Excel文件中复制,但它没有将其添加到PowerPoint。弹出错误Run-time error '-2147188160(80048240) View.Pastespecial : Invalid Request。指定的数据类型不可用

If Range("H" & i).Value = 1 And Range("B" & i).Value = "FRONT" Then
    objPPT.Presentations(1).Slides(9).Select
    objPPT.ActiveWindow.View.PasteSpecial DataType:=ppPasteEnhancedMetafile

2 个答案:

答案 0 :(得分:3)

如果您不依赖于选择任何内容,您的代码将更快,可能更可靠:

With objPPT.Slides(9).Shapes
    Set objShape = .PasteSpecial(ppPasteEnhancedMetafile)(1)
    With objShape
       ' set coordinates and such here
    End With
End With

至于您收到错误消息的原因,请在将某些内容放入剪贴板后尝试停止代码。然后切换到PowerPoint,使用“选择性粘贴”查看可用的粘贴选项。如果EMF不是其中之一,那就是你的问题......你没有在剪贴板上放置任何EMF格式的东西。

答案 1 :(得分:0)

我有类似的问题,但我发现了一个不同的解决方案;它可能与我正在做的事情有关。

我设置了一个程序:

  1. (手动)复制整个网页,该网页是多个效果指标的报告
  2. (手动)将其粘贴到excel
  3. 运行程序以提取我想要的值,然后清除我粘贴它们的工作表的内容。
  4. 最终经过多次测试后,当我尝试访问工作表时,它会因同样的自动化错误而失败:

    Sheets("PDX Paste").Activate
    

    我能够激活除特定表之外的所有其他表,甚至使用索引值而不是直接名称引用。在谷歌搜索没有成功后,我发现网站上的复制和粘贴也粘贴了隐形控件。当我发现这个时,我只有1,300个以上的形状,我只期望1(我用来触发程序的按钮)。实际上只有当一个小故障 - 大概是由于存储这些控件的大量内存 - 显示几秒钟时才显而易见。

    我独立运行以下代码,然后在清理数据时将其附加到程序的末尾。代码遍历工作表并删除任何与我的按钮类型不同的形状。如果要删除的形状与要保留的形状的类型相同,则必须进行调整。如果你没有任何形状可以保持,它也会变得更简单。

    Dim wsh As Worksheet
    Set wsh = ActiveSheet
    
    Dim i As Integer
    
    For i = wsh.Shapes.Count To 1 Step -1
        If wsh.Shapes(i).Type <> wsh.Shapes("UpdateDataButton").Type Then
            wsh.Shapes(i).Delete
        End If
    Next i
    

    我不确定这会解决这个问题,但希望这可以帮助其他人,并防止浪费时间找出可能导致这个相对模糊的错误信息的原因。