按名称引用现有数据透视图

Reference an existing pivot chart by name

我在工作表上有多个数据透视图。如何按名称引用特定的现有数据透视图? 我目前有以下有效代码:

ThisWorkbook.Sheets("State").Shapes.AddChart2(XlChartType:=xlColumnStacked, Left:=140, Top:=0, Width:=800, Height:=550, NewLayout:=True).Select
ActiveChart.SetSourceData Source:=Range(ThisWorkbook.Sheets("State").PivotTables("StateTableName").TableRange2.Address)
ActiveChart.ChartTitle.Text = "State Resourcing"

当您第一次创建图表时这没问题,但如果我需要更改现有数据透视图的格式,我需要替换“ActiveChart”。类似:ThisWorkbook.Sheets("State").ChartObjects("MyPivotChart").ChartTitle

如何命名数据透视图,然后通过名称引用该数据透视图?

要按名称引用图表,您首先必须为其命名...尝试在创建过程中添加它:

您的代码:

ThisWorkbook.Sheets("State").Shapes.AddChart2(XlChartType:=xlColumnStacked, Left:=140, Top:=0, Width:=800, Height:=550, NewLayout:=True).Select
ActiveChart.SetSourceData Source:=Range(ThisWorkbook.Sheets("State").PivotTables("StateTableName").TableRange2.Address)
ActiveChart.ChartTitle.Text = "State Resourcing"

只需添加:

ActiveChart.Parent.Name = "MyPivotChart1" 'Chart Object keeps the name...

那么可以通过这种方式获取对象:

Dim chO as ChartObject
Set chO = sh.ChartObjects("MyPivotChart1")
Debug.Print chO.Chart.ChartTitle.Text

我发现我的问题是尝试使用 ChartObjects 集合而不是 Chart 对象。

我试图使用这个(但失败了):

ThisWorkbook.Sheets("MySheet").ChartObjects("MyPivotChart").ChartTitle.Text = "My Title"

正确的代码是:

ThisWorkbook.Sheets("MySheet").ChartObjects("MyPivotChart").Chart.ChartTitle.Text = "My Title"

在此工作之前,还需要按照 FaneDuru 所述设置 .Name 属性。我将这部分排除在我的问题之外,因为设置名称对我来说工作正常,但对于将来搜索此答案的任何人来说,这都是重要的背景。