数据透视表“RefreshTable”与“更新”方法

我想以编程方式刷新 Excel工作簿的给定工作表中的所有数据透视表。 在这里searchStackOverflow后,我发现这个问题的答案build议使用

ThisWorkbook.RefreshAll 

或类似的东西

 Dim pivot As PivotTable For Each pivot In Worksheets("MySheet").PivotTables pivot.RefreshTable pivot.Update Next 

因为我只想刷新表格中的表格,所以第一种方法并不是我所期待的。 因此,我修改了第二种方法来满足我的需求。

我在这里的问题是什么RefreshTablePivotTable对象的Update方法之间的区别? 我想如果我们使用这两个,就意味着它们在某种程度上是不同的。

在什么情况下,为了节省时间,我们只能使用其中的一种,因为在数据透视表有大量数据的时候, 刷新更新需要相当长的时间。

根据这篇文章和一点testing,区别基本上是这样的:

更新:更新单个数据透视表

刷新:使用相同的源数据更新所有数据透视表

例如使用相同外部数据库的所有数据透视表,或使用Excel中的所有数据透视表(例如,如果有两个数据表Data1和Data2,使用Data1的数据刷新任何数据透视表,将使用Data1的数据刷新所有数据透视表

RefreshAll:更新工作簿中的所有数据透视表

您从答案中省略了重点:

或者,如果您的Excel版本够旧,

该代码适用于当您的Excel版本足够老时(请考虑Excel 97 ish)。

当那个数据透视表在RefreshTable之后会变成一个更新的时候,有一个问题,但是不是那么RefreshTable ,所以需要额外的一个Update调用来“完全”更新它。 这已经很长时间了,我相信Excel 2003已经不需要UpdateRefresh