我想以编程方式刷新我的Excel工作簿的给定工作表中的所有数据透视表。在StackOverflow上搜索之后,我找到了this question,答案建议使用
ThisWorkbook.RefreshAll
或类似
Dim pivot As PivotTable
For Each pivot In Worksheets("MySheet").PivotTables
pivot.RefreshTable
pivot.Update
Next
因为我只想刷新给定工作表中的表格,所以第一种方法不是我想要的。因此,我修改了第二种方法以满足我的需求。
我在这里的问题是RefreshTable
对象的Update
和PivotTable
方法之间的区别是什么?我想如果我们同时使用它们,那就意味着它们在某种程度上是不同的。
在什么情况下我们只能使用其中一个来节省时间,因为似乎刷新和更新在数据透视表中需要相当长的时间有很多数据?
答案 0 :(得分:3)
根据this article和一点点测试,区别在于:
更新:更新单个数据透视表
刷新:使用相同的源数据更新所有数据透视表
e.g。使用相同外部数据库的所有数据透视表,或使用Excel中相同数据表的所有数据透视表 - 例如如果您有两个数据表,Data1和Data2,使用Data1的数据刷新任何数据透视表,将使用Data1的数据刷新所有数据透视表
RefreshAll:更新工作簿中的所有数据透视表
答案 1 :(得分:2)
您省略了answer:
中的关键字行或者,如果您的Excel版本足够老,
该代码适用于Excel版本足够大的时候(想想Excel 97 ish)。
当然,当RefreshTable
之后枢轴变得更新时会出现问题,但不完全,因此需要额外调用Update
以完全"更新它。自修复以来已经很长时间了,我相信在Update
之后Excel 2003已经不需要Refresh
。