复制Excel表格到PowerPoint

问题描述:

我真的为此而努力,我似乎​​返回运行时错误“13”不能够找到我的代码不工作的原因:复制Excel表格到PowerPoint

Dim i1 As Integer 
Dim PPapp As Object, XLapp As Object 
Dim slide1 As Slide, slide2 As Slide, slide3 As Slide 
Dim PPoutput As Presentation 
Dim output_table As ShapeRange 
Set PPapp = New PowerPoint.Application 
Set XLapp = Excel.Application 
Set PPoutput = PPapp.Presentations.Open("Q:\SDPMaler\blank.potx", untitled:=msoTrue, withwindow:=msoTrue) 
Set slide1 = ppoutput.Slides.AddSlide(1, ppoutput.SlideMaster.CustomLayouts(13)) 
XLapp.ActiveWorkbook.Sheets("PPT output").Range("y4:ae11").Copy 
Set output_table = slide1.Shapes.PasteSpecial(ppPasteJPG, msoFalse, "", 1, "", msoTrue) 

这里我的代码失败:宏创建PowerPoint演示带来了在正确的布局幻灯片,甚至的过去表作为图片

.PasteSpecial(DataType:=ppPasteOLEObject, link:=msoTrue) 

的工作方式相同,但无论是我收到“运行时错误‘13’:类型不匹配“粘贴代码的最后一行。即使#13通常是一个简单的错误发现我这次真的卡住了。 希望有人能帮助我 感谢 PS:II正在使用Office 2010和正在运行Excel中

我猜的.PasteSpecial函数不返回一个ShapeRange所以当你尝试分配的结果,宏观

我的猜测:

更改此:

昏暗output_table作为ShapeRange

要:

昏暗output_table作为PowerPoint.ShapeRange

假设您已经设定了参考PowerPoint或

暗淡output_table作为对象,如果您使用后期绑定

通过调光它作为ShapeRange在Excel中,您要创建一个变量来保存一个Excel shaperange

,但是当你粘贴到PPT,你会得到一个PowerPoint的形状,这将导致类型不匹配。

+0

我刚才看到我忘了谢谢你:非常感谢你修复它。 – seba

.PasteSpecial被声明为ShapeRange对象的变量(output_table)会导致类型不匹配。

尝试Dim output_table作为Variant,然后通过查看TypeName(output_table)进行调试 - 如果您甚至需要PasteSpecial的结果。