似乎有一些错误。无法解决此问题,所有代码运行正常,我能够看到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
答案 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)
我有类似的问题,但我发现了一个不同的解决方案;它可能与我正在做的事情有关。
我设置了一个程序:
最终经过多次测试后,当我尝试访问工作表时,它会因同样的自动化错误而失败:
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
我不确定这会解决这个问题,但希望这可以帮助其他人,并防止浪费时间找出可能导致这个相对模糊的错误信息的原因。