获取数据透视表的源范围

我正在构build一组报表,以便在Excel(2010)中透视图和数据透视表的时候,对于那些不是非常精明的用户每天都会进行更新。 我有从我们的数据库已经自动化的数据拉的数据,但为了使信息有用(和更简单的使用),我想要使用VBA生成枢纽。

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

由于图表是基于可能会根据数据的不同而变化的枢轴,我不能只将一个固定的范围作为来源。 与命名范围相同的问题,因为我仍然不知道什么范围分配一个名称,除非我可以指定一个范围内的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... 

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

基本上我想要的是这个问题的反面 ,它试图find在指定的范围内的数据透视表。 我也回顾了这个问题 ,但这不是我所期望的(也没有提供答案)。

另外:我在这里要求一个方法来获得一个PT的范围,我认为这将是有趣的知道,但最终,我只是想创build数据透视图,所以如果有人想提供一个比什么更好的方法我已经开始了,我也完全开放了。

这是你想要实现的吗?

 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 

所以你的这一行

 MyChart.SetSourceData wksMainPivot.PivotTables(PivotName).SourceData 

 MyChart.SetSourceData wksMainPivot.PivotTables(PivotName).TableRange1