仅在PowerPoint VBA中按名称引用图表

仅在PowerPoint VBA中按名称引用图表,vba,charts,powerpoint,Vba,Charts,Powerpoint,我已经搜索了几个小时试图找到这个问题的答案,但没有结果,所以我希望我能在这里找到答案 我想创建一个引用PowerPoint中预先存在的图表的变量,这样我就可以开始自动化其数据。我想通过它的名字来参考图表,使事情变得非常简单,但无论我做什么,我似乎都不能给PPT一个令人满意的图表地址 我尝试了以下几乎所有可能的变化,但没有成功: Dim chrtPP As PowerPoint.Chart Set chrtPP = ActivePresentation.Slides(1).Shapes.Char

我已经搜索了几个小时试图找到这个问题的答案,但没有结果,所以我希望我能在这里找到答案

我想创建一个引用PowerPoint中预先存在的图表的变量,这样我就可以开始自动化其数据。我想通过它的名字来参考图表,使事情变得非常简单,但无论我做什么,我似乎都不能给PPT一个令人满意的图表地址

我尝试了以下几乎所有可能的变化,但没有成功:

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部分)