将Excel表复制到Powerpoint返回运行时错误“13”

时间:2011-11-01 20:25:31

标签: vba powerpoint-vba office-2010

我真的很挣扎,我似乎无法找到我的代码不起作用的原因:

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通常很容易找到错误,但这次我真的很困难。 希望可以有人帮帮我 谢谢 P.S。:我正在使用Office 2010并在Excel中运行宏

2 个答案:

答案 0 :(得分:1)

我的猜测:

改变这个:

Dim output_table As ShapeRange

要:

Dim output_table As PowerPoint.ShapeRange

假设您已设置对PowerPoint的引用,或

Dim output_table As Object

如果您正在使用后期绑定

通过在Excel中将其变暗为ShapeRange,您创建了一个变量来保存Excel形状范围,但是当您粘贴到PPT中时,会得到一个PowerPoint形状范围,这会导致类型不匹配。

答案 1 :(得分:0)

我猜测.PasteSpecial函数没有返回ShapeRange,因此当您尝试将.PasteSpecial的结果赋值为声明为ShapeRange对象的变量(output_table)时,会出现类型不匹配。

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