运行时错误 '-2147188160(80048240) 数据类型:=ppPaste增强图元文件错误



似乎有一些错误。无法解决这个问题,所有代码运行正常,我可以看到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

如果你不依赖于选择任何东西,你的代码将会更快,可能更可靠:

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

至于为什么你得到错误消息,尝试停止代码后,你已经把一些东西在剪贴板上。然后切换到PowerPoint,使用粘贴特殊功能查看可用的粘贴选项。如果电磁场不是其中之一,那就是你的问题了……剪贴板上没有任何EMF格式的内容

我有一个类似的问题,但我找到了一个不同的解决方案;它可能是特定于我所做的。

我设置了一个程序,我将:

  1. (手动)复制整个网页,该网页是关于几个性能指标的报告
  2. (手动)粘贴到excel
  3. 运行程序提取我想要的值,然后清除我粘贴的工作表的内容。

经过多次测试后,当我试图访问表单时,它会失败,并出现相同的自动化错误:

Sheets("PDX Paste").Activate

我能够激活除了那个特定的表之外的所有其他表,甚至使用索引值而不是直接的名称引用。在谷歌搜索没有成功后,我发现从网站上复制粘贴也在粘贴看不见的控件。当我发现这一点时,我有1300多个形状,而我只期望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

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

最新更新