1

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

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:我正在使用 Office 2010 并在 Excel 中运行宏

4

2 回答 2

1

我猜:

改变这个:

将 output_table 调暗为 ShapeRange

至:

将 output_table 调暗为 PowerPoint.ShapeRange

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

将 output_table 调暗为对象

如果您使用后期绑定

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

于 2011-11-02T16:43:36.200 回答
0

我猜 .PasteSpecial 函数不会返回 ShapeRange,因此当您尝试将 .PasteSpecial 的结果分配给声明为 ShapeRange 对象的变量 (output_table) 时,您会得到类型不匹配。

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

于 2011-11-02T01:44:16.133 回答