仅在PowerPoint VBA中按名称引用图表
我已经搜索了几个小时试图找到这个问题的答案,但没有结果,所以我希望我能在这里找到答案 我想创建一个引用PowerPoint中预先存在的图表的变量,这样我就可以开始自动化其数据。我想通过它的名字来参考图表,使事情变得非常简单,但无论我做什么,我似乎都不能给PPT一个令人满意的图表地址 我尝试了以下几乎所有可能的变化,但没有成功:仅在PowerPoint VBA中按名称引用图表,vba,charts,powerpoint,Vba,Charts,Powerpoint,我已经搜索了几个小时试图找到这个问题的答案,但没有结果,所以我希望我能在这里找到答案 我想创建一个引用PowerPoint中预先存在的图表的变量,这样我就可以开始自动化其数据。我想通过它的名字来参考图表,使事情变得非常简单,但无论我做什么,我似乎都不能给PPT一个令人满意的图表地址 我尝试了以下几乎所有可能的变化,但没有成功: Dim chrtPP As PowerPoint.Chart Set chrtPP = ActivePresentation.Slides(1).Shapes.Char
Dim chrtPP As PowerPoint.Chart
Set chrtPP = ActivePresentation.Slides(1).Shapes.Charts("Chart3")
有人能告诉我我做错了什么吗
谢谢 您需要按名称引用形状(PowerPoint中的“形状”实际上是幻灯片上的任何对象,可以是简单形状、文本框、表格、图表、组、媒体剪辑等。)。如果您使用的是PowerPoint 2010及更高版本,请按Alt+F10打开选择窗格以查找所选图表对象的名称。它可以是标准图表对象,也可以是占位符对象中的图表。然后,您可以按如下方式引用图表:
Option Explicit
Sub ChartStuff()
Dim oShp As Shape
Dim oCht As Chart
Set oShp = ActivePresentation.Slides(1).Shapes("Chart 3")
If oShp.HasChart Then
Set oCht = oShp.Chart
End If
' Do stuff with your chart
If oCht.HasTitle Then Debug.Print oCht.ChartTitle.Text
' Clean up
Set oShp = Nothing
Set oCht = Nothing
End Sub
编写PowerPoint的关键是忽略“形状”对象模型中的对象名称,因为这会产生误导!您需要按名称引用形状(PowerPoint中的“形状”实际上是幻灯片上的任何对象,可以是简单的形状、文本框、表格、图表、组、媒体剪辑等)。如果您使用的是PowerPoint 2010及更高版本,请按Alt+F10打开选择窗格以查找所选图表对象的名称。它可以是标准图表对象,也可以是占位符对象中的图表。然后,您可以参照以下图表:
Option Explicit
Sub ChartStuff()
Dim oShp As Shape
Dim oCht As Chart
Set oShp = ActivePresentation.Slides(1).Shapes("Chart 3")
If oShp.HasChart Then
Set oCht = oShp.Chart
End If
' Do stuff with your chart
If oCht.HasTitle Then Debug.Print oCht.ChartTitle.Text
' Clean up
Set oShp = Nothing
Set oCht = Nothing
End Sub
PowerPoint编程的关键是忽略“形状”对象模型中的对象名称,因为它非常容易误导 Powerpoint没有Excel那样的图表集合;它有形状,形状可能包含一个图表(如果是从Excel粘贴的内容,则可能是一个图表)。在您的情况下,ActivePresentation.Slides(1).Shapes(“Chart3”)应该这样做(即,删除.Charts部分)Powerpoint没有Excel那样的图表集合;它有形状,形状可能包含一个图表(如果是从Excel粘贴的内容,则可能是一个图表)。在您的情况下,ActivePresentation.Slides(1).Shapes.(“Chart3”)应该可以这样做(即删除.Charts部分)