在VBA中更新数据透视表filter使得OLAP查询运行多次

所以我正在创buildExcel中的仪表板,使用几个不同的数据透视表与外部来源。 目前我正在尝试创build一个更新button,更新所有的外部枢轴表(为简单起见已经命名),然后更新这些枢轴点上的枢轴点。

在此更新期间,我希望根据今天的date更新外部数据透视表上的filter。 它是这样工作的:如果我们以今天为例,我们在2017年,第3季度,第9季度,第39周。由于数据库给我的数字是我们所在的星期没有可比性的,所以我只需要这几年selectdate。 我已经写在枢轴和过滤本身工作正常。

我的问题发生在这个过滤过程中,因为OLAP查询运行几次使得更新过程极其缓慢。 当我从数据透视表中selectfilter并select要包含的星期时,它只运行一次OLAP查询,因此只需要大约15-20秒。 但是,当我(完全)与我的VBAmacros相同时,它会多次运行OLAP查询,并且更新需要一分多钟。 不得不为6个支点这样做需要花费太多的时间。

是否有反正我可以让它停止更新主键,直到筛选器已被选中,或以任何其他方式停止运行OLAP查询几次?

这是我所做的代码。 要知道,这是我所做的第一件事情,所以其中一些可能会简单些:

Sub Update_Pivot_Filters(pt) Excel.Application.ScreenUpdating = False Excel.Application.Calculation = xlCalculationManual ..... pt.PivotFields( _ "[Date].[YQMWD (4-4-5)].[Year (4-4-5)]").VisibleItemsList = Array("") pt.PivotFields( _ "[Date].[YQMWD (4-4-5)].[Quarter (4-4-5)]").VisibleItemsList = Array(PivotQStr) pt.PivotFields( _ "[Date].[YQMWD (4-4-5)].[Month (4-4-5)]").VisibleItemsList = Array(PivotMStr) pt.PivotFields( _ "[Date].[YQMWD (4-4-5)].[Week (4-4-5)]").VisibleItemsList = Array(PivotWStr) pt.PivotFields( _ "[Date].[YQMWD (4-4-5)].[Date]").VisibleItemsList = Array("") Excel.Application.ScreenUpdating = True Excel.Application.Calculation = xlCalculationAutomatic End Sub 

这是过滤的最后一部分。 它和我自己做macroslogging的方式一样,所以不需要比手动更长的时间。

这是从今天开始创build数组的更长代码的一部分,而且这本身是完美的。 减慢速度的是这个pivotFields(…)。VisibleitemsList创build了几个OLAP查询。

任何想法如何加快这个过滤?

最好的安德斯