目前,我只是想按照说明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
有什么想法吗?
答案 0 :(得分:4)
因为PowerPoint.Chart
与Excel.Chart
不同(请参阅下面的注释...)。尝试:
Dim plot As PowerPoint.Chart
执行Dim plot as Chart
时,由于Chart
是Excel
对象模型的成员,因此除非另有说明,否则VBA将默认使用Excel.Chart
。
以上假设早期绑定了对PowerPoint库的引用。如果您收到类似“用户定义的类型未定义”的编译错误,则表示您尚未设置对PowerPoint的项目引用。或者,你可以Dim plot as Object
(通用对象类型),但你会以这种方式失去智能感知。
注意:从功能上讲,PowerPoint.Chart
基本上与Excel.Chart
或Word.Chart
等相同,它们将具有相同的方法,属性等,并且很少例外(没有我能想到的)你能做的任何事情,你可以做到另一个。唯一的问题是,当您引用位于 PowerPoint中的的图表时,严格来说,它不是Excel.Chart
,而是需要将其限定为PowerPoint.Chart
(或通用Object
类型)以避免不匹配错误。