在VBA中过滤OLAP字段

我定期更新几个OLAP领域,并正在考虑自动执行此任务。

我试着录制一些macros来理解OLAP数据透视表的幕后工作,并得到了这个。

select2016年10月至2017年10月的所有月份(会计期间的层次结构为年,季度和月)时生成以下代码:

ActiveSheet.PivotTables("Microsoft Office PivotTable 10.0").CubeFields(5). _ TreeviewControl.Drilled = Array(Array(""), Array( _ "[Fiscal Period].[All Fiscal Period].[2017]")) ActiveSheet.PivotTables("Microsoft Office PivotTable 10.0").PivotFields( _ "[Fiscal Period].[Year]").HiddenItemsList = Array( _ "[Fiscal Period].[All Fiscal Period].[2004]", _ "[Fiscal Period].[All Fiscal Period].[2005]", _ "[Fiscal Period].[All Fiscal Period].[2006]", _ "[Fiscal Period].[All Fiscal Period].[2007]", _ "[Fiscal Period].[All Fiscal Period].[2008]", _ "[Fiscal Period].[All Fiscal Period].[2009]", _ "[Fiscal Period].[All Fiscal Period].[2010]", _ "[Fiscal Period].[All Fiscal Period].[2011]", _ "[Fiscal Period].[All Fiscal Period].[2012]", _ "[Fiscal Period].[All Fiscal Period].[2013]", _ "[Fiscal Period].[All Fiscal Period].[2014]", _ "[Fiscal Period].[All Fiscal Period].[2015]", _ "[Fiscal Period].[All Fiscal Period].[2019]", _ "[Fiscal Period].[All Fiscal Period].[2016]") ActiveSheet.PivotTables("Microsoft Office PivotTable 10.0").PivotFields( _ "[Fiscal Period].[Quarter]").HiddenItemsList = Array( _ "[Fiscal Period].[All Fiscal Period].[2017].[1]") Range("B8").Select ActiveSheet.PivotTables("Microsoft Office PivotTable 10.0").PivotFields( _ "[Fiscal Period].[Year]").DrilledDown = True ActiveSheet.PivotTables("Microsoft Office PivotTable 10.0").PivotSelect _ "'[Fiscal Period].[All Fiscal Period].[2017].[2]'", xlDataAndLabel, True Range("B9").Select ActiveSheet.PivotTables("Microsoft Office PivotTable 10.0").PivotFields( _ "[Fiscal Period].[Quarter]").DrilledDown = True Range("E9").Select 

我一直在网上search这个任务的任何线索,只看到使用VisibleItemsList 。 当我在自己的工作上实现在互联网上看到的VisibleItemsList代码时,出现错误。

例如以下内容:

 Worksheets(1).PivotTables(1).PivotFields("[Fiscal Period].[Year].[Year]").VisibleItemsList = Array("[Fiscal Period].[All Fiscal Period].[2015]", "[Fiscal Period].[All Fiscal Period].[2016]") 

给出错误:

"Unable to get the PivotFields property of PivotTable class"

我想用上面的代码只select2015和2016财年。

如果有人会帮我完成这个任务,我将非常感激。 这已经开始certificate是我所遇到过的最令人痛苦的事情之一。 我只需要VisibleItemsList属性上的几个指针。 我正在使用Excel 2007,如果相关的。

这是可转换布局的图像:

可枢转的布局

附加信息:

我只logging了2015年和2016年的macros(而不是扩展它们,代码当我展开年份和季度可以看到上面,我select从2016年10月到2017年10月的所有月份)的代码是:

 ActiveSheet.PivotTables("Microsoft Office PivotTable 10.0").CubeFields(5). _ TreeviewControl.Drilled = Array("") ActiveSheet.PivotTables("Microsoft Office PivotTable 10.0").PivotFields( _ "[Fiscal Period].[Year]").HiddenItemsList = Array( _ "[Fiscal Period].[All Fiscal Period].[2004]", _ "[Fiscal Period].[All Fiscal Period].[2005]", _ "[Fiscal Period].[All Fiscal Period].[2006]", _ "[Fiscal Period].[All Fiscal Period].[2007]", _ "[Fiscal Period].[All Fiscal Period].[2008]", _ "[Fiscal Period].[All Fiscal Period].[2009]", _ "[Fiscal Period].[All Fiscal Period].[2010]", _ "[Fiscal Period].[All Fiscal Period].[2011]", _ "[Fiscal Period].[All Fiscal Period].[2012]", _ "[Fiscal Period].[All Fiscal Period].[2013]", _ "[Fiscal Period].[All Fiscal Period].[2014]", _ "[Fiscal Period].[All Fiscal Period].[2019]", _ "[Fiscal Period].[All Fiscal Period].[2017]", _ "[Fiscal Period].[All Fiscal Period].[2018]") 

Macrologging器selectPivotfield的代码是:

 PivotFields("[Fiscal Period].[Year]") 

…但你正在使用:

 PivotFields("[Fiscal Period].[Year].[Year]") 

…所以也许这解释了错误。