为什么我无法将PowerPoint图表分配给VBA中的图表变量?

时间:2017-01-30 19:08:05

标签: vba excel-vba powerpoint-vba excel

目前,我只是想按照说明here进行操作,但我之前已经遇到过这个问题。出于某种原因,我无法将PowerPoint图表分配给声明的Chart变量。使用.HasChart,我确认那里肯定有一个图表,并使用Shapes(i).Type,我已经确认Shape是图表类型,但是我得到了运行时错误& #39; 13':每次输入不匹配。我已经在多个文件和多种图表类型中尝试了这一点,但无济于事 - 我必须遗漏一些明显和愚蠢的东西,但我无法弄明白。

例如:

Dim plot As Chart

For Each shp In PPT.Slides(5).Shapes

    If shp.HasChart Then

        MsgBox (shp.Type)
        Set plot = shp.Chart 

    End If

Next shp

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

因为PowerPoint.ChartExcel.Chart不同(请参阅下面的注释...)。尝试:

Dim plot As PowerPoint.Chart

执行Dim plot as Chart时,由于ChartExcel对象模型的成员,因此除非另有说明,否则VBA将默认使用Excel.Chart

以上假设早期绑定了对PowerPoint库的引用。如果您收到类似“用户定义的类型未定义”的编译错误,则表示您尚未设置对PowerPoint的项目引用。或者,你可以Dim plot as Object(通用对象类型),但你会以这种方式失去智能感知。

注意:从功能上讲,PowerPoint.Chart基本上与Excel.ChartWord.Chart等相同,它们将具有相同的方法,属性等,并且很少例外(没有我能想到的)你能做的任何事情,你可以做到另一个。唯一的问题是,当您引用位于 PowerPoint中的的图表时,严格来说,它不是Excel.Chart,而是需要将其限定为PowerPoint.Chart(或通用Object类型)以避免不匹配错误。