我对此进行了疯狂的研究,我担心没有答案。但也许这个网站上真正聪明的人可以提供帮助。
我有两个可以一起工作的工作簿 - Charts.xlsm 和 Data.xlsm。它们总是一起保存在同一个文件夹中。Charts.xlsm 显然包含我所有的图表,但它们都链接到 Data.xlsm 中的表作为其来源。我的 Charts.xlsm 中还有很多切片器连接到图表,当它们连接到具有相同数据源的图表时,它们共享缓存。这两个工作簿始终同时打开,因此数据源引用如下所示:'Data.xlsm'!Table1
这一切都很好,直到我将这些工作簿放在另一台计算机上(这就是我这样做的原因,所以我需要找出如何解决这个问题)。
关闭工作簿后,源数据引用将更改为我硬盘上的特定位置:'C:\Folder\Data.xlsm'!Table1
如果我想手动将其更改回本地引用,我必须首先检查并断开每个切片器,刷新表,然后重新连接每个切片器。对我的客户来说不是一个可行的解决方案。
每次打开 Charts.xlsm 时,我都会使用 VBA 更改引用,但是当我尝试它时,会发生以下两种情况之一:工作簿产生的错误会阻止保存,或者 Excel 会完全崩溃。
这是非常适合断开切片器的代码,但会产生“保存”错误:
Sub Disconnect_Slicers()
Dim oSliceCache As SlicerCache
Dim PT As PivotTable
Dim i As Long
For Each oSliceCache In ThisWorkbook.SlicerCaches
With ActiveWorkbook.SlicerCaches(oSliceCache.Name).PivotTables
For i = .Count To 1 Step -1
.RemovePivotTable (.Item(i))
Next i
End With
Next oSliceCache
End Sub
所以......我问那里的 Excel/VBA 天才,当他们寻找 Data.xlsm 时,是否有任何方法可以保持我的图表的相对位置,这样无论我在哪台计算机上打开这些工作簿,他们都会始终保持积极联系。
非常感谢你!