【发布时间】:2015-09-25 07:29:59
【问题描述】:
我只是在清理我的工作簿,并且我使用以下代码来合并我的 PivotCache(在清理之前我有大约 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
这已将我的 PivotCache 计数减少到 33 个。
Sub CountCaches()
MsgBox ActiveWorkbook.PivotCaches.Count
End Sub
它是 33 而不是 1 的原因是因为我有 32 个使用 数据模型 构建的数据透视表。
我的问题是:有谁知道如何将使用数据模型构建的数据透视表更改为全部使用相同的数据透视表?
编辑
我的第二个问题是:多个数据透视表都建立在一个数据模型上
a) 引用单一数据模型;或
b) 每个都有自己的模型,因此会“膨胀”Excel 文件
EDIT2
在进一步探索中,数据模型似乎为引用相同数据的数据透视表共享。这可以在“连接”中看到(位于功能区的“数据”选项卡下)。理论上,这不应该“膨胀”文件,即使代码ActiveWorkbook.PivotCaches.Count 计算共享连接的每个数据透视表并且错误地(?)指示多个缓存。
但是,如果有人可以提供更明确的答案,我会保留悬赏。
【问题讨论】:
-
查看本页信息。我还没有测试过缓存是否以相同的方式构建,但它可能会让你更接近答案。 datapigtechnologies.com/blog/index.php/…
-
感谢您的链接,但没有运气
标签: vba excel pivot-table