如何使用 VBA 清除数据透视表缓存,但不破坏数据透视表结构?我的数据透视表已连接到外部数据源。 SQL 源决定哪个用户应该看到数据的哪一部分。当表被刷新时,源填充表。我想保存 Excel 文件并使用干净的数据透视表(里面没有数据)分发它。
结果我想得到这个:
我已经围绕这段代码进行了试验,但没有成功。 VBA 中没有 PivotCaches.Clear 这样的东西。
Sub PT_cache_clear()
For Each pc In ActiveWorkbook.PivotCaches
pc.Clear
Next pc
End Sub
我找到的唯一好的解决方案是使用有权访问 SQL Server 源但不允许查看任何单个数据记录的用户来刷新表。
想法:
ActiveSheet.PivotTables("PivotTable1").SaveData = False
似乎不会导致预期的结果。
最佳答案
我这样做的方法是使用将返回表结构但具有 0 条记录的查询进行刷新。因此,如果从类似的 View 中选择:
select top 0 *
from vw_MyPivotData
如果使用存储过程,您可以发送一个参数来确保不会返回任何记录,例如您知道数据中不存在的过滤器或为不返回任何记录而设计的特殊参数。
关于sql-server - VBA只清除数据透视表缓存,但保留数据透视表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32271306/