【问题标题】:Copy Excel table to Powerpoint returns run-time error '13'将 Excel 表复制到 Powerpoint 返回运行时错误“13”
【发布时间】:2011-11-01 20:25:30
【问题描述】:

我真的很挣扎,我似乎无法找到我的代码无法正常工作的原因:

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 中运行宏

【问题讨论】:

    标签: vba powerpoint office-2010


    【解决方案1】:

    我的猜测:

    改变这个:

    将 output_table 调暗为 ShapeRange

    收件人:

    将 output_table 调暗为 PowerPoint.ShapeRange

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

    将 output_table 调暗为对象

    如果您使用后期绑定

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2020-12-21
        • 2013-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-02
        • 1970-01-01
        • 2015-03-10
        • 1970-01-01
        相关资源
        最近更新 更多