似乎有一些错误。无法解决此问题,所有代码运行良好,我能够看到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,请使用Special Paste特别查看可用的糊状选项。如果EMF不是其中之一,那就是您的问题...您不会在剪贴板上以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

我不确定这会解决这个问题,但是希望这可以帮助他人,并防止时间流失,弄清可能导致这种相对模糊的错误消息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top