我只是在整理我的工作簿,我使用了以下代码来合并我的数据透视表缓存(在整理之前大约有200个)。
Sub changeCache()
Dim ws As Worksheet
Dim pt As PivotTable
Dim pc As PivotCache
Dim first As Boolean
On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
For Each pt In ActiveSheet.PivotTables
If first = False Then
Set pc = pt.PivotCache
first = True
End If
pt.CacheIndex = pc.Index
Next pt
Next ws
End Sub
这使我的“数据透视缓存”数量减少到33。
Sub CountCaches()
MsgBox ActiveWorkbook.PivotCaches.Count
End Sub
它为什么是33而不是1是因为我有32个使用数据模型构建的数据透视表。
我的问题是:有人知道如何更改使用数据模型构建的数据透视表以全部使用相同的PivotCache吗?
编辑
我的第二个问题是:所有基于数据模型构建的多个数据透视表
a)引用单个数据模型;还是
b)每个都有自己的模型,因此使Excel文件“膨胀”
编辑2
经过进一步探索,似乎数据模型确实是共享的,适用于引用相同数据的数据透视表。这可以在“连接”中看到(在功能区“数据”选项卡下)。理论上说,即使代码ActiveWorkbook.PivotCaches.Count计算共享连接的每个数据透视表并错误地表示多个缓存,但这不应该使文件“膨胀”。
然而,我将保留悬赏以防有人能够提供更确切的答案。