获取数据透视表的源范围

Gaf*_*ffi 3 excel vba pivot-table excel-vba excel-2010

我正在构建一组报告,每天更新一些用户,这些用户在Excel(2010)中的数据透视图和数据透视表时并不精通.我有来自数据库的已经自动数据的数据,但为了使这些信息有用(并且使用起来更简单),我想使用VBA生成枢轴.

我已经生成了数据透视表,可以手动操作它们来创建相关的图表.当我创建表格(全部在一张纸上)时,我正在标记它们(如果这有助于解决我的问题).我遇到麻烦的地方是创建数据透视表,特别是设置数据源.

由于图表基于可能根据存在的数据而改变大小的枢轴,因此我不能仅将固定范围指定为源.与命名范围相同的问题,因为我仍然不知道指定名称的范围,除非我可以将PT指定为范围.

我尝试过类似的东西,但是没有用,因为我不是在看实际的'Range'对象:

Dim MyChartObject As ChartObject
Dim MyChart As Chart

'These variables are assigned elsewhere in the code.
Set MyChartObject = wksMainCharts.ChartObjects.Add( _
    iChartLeft, iChartTop, iChartWidth, iChartHeight)
Set MyChart = MyChartObject.Chart
MyChart.SetSourceData wksMainPivot.PivotTables(PivotName).SourceData 'Fails; requires Range object
'More code to follow...
Run Code Online (Sandbox Code Playgroud)

我知道这是一个错误范围的字符串表示,但我正在玩我自己想象的东西.

基本上就是我想要的是对面这个问题,其目的是发现数据透视表在规定的范围内.我也回顾了这个问题,但这并不是我想要的(也没有提供答案).

另外:我在这里要求获得PT的范围,我认为这很有趣,但最终,我只是想创建数据透视图,所以如果有人想要提供比什么更好的方法我已经开始了,我也完全对此持开放态度.

Sid*_*out 6

这是你想要实现的目标吗?

Sub Sample()
    Dim Chrt As Chart, pvtTbl As PivotTable

    Set pvtTbl = ActiveSheet.PivotTables(1)

    Set Chrt = ActiveSheet.ChartObjects(1).Chart

    Chrt.SetSourceData Source:=pvtTbl.TableRange1
End Sub
Run Code Online (Sandbox Code Playgroud)

所以你的这一行

MyChart.SetSourceData wksMainPivot.PivotTables(PivotName).SourceData
Run Code Online (Sandbox Code Playgroud)

MyChart.SetSourceData wksMainPivot.PivotTables(PivotName).TableRange1
Run Code Online (Sandbox Code Playgroud)