經測試,通過 SlicerCache 對象中的 PivotTable 時不好傳入作為索引號的變量,或許是微軟的 BUG,我把?ActiveWorkbook.SlicerCaches("Slicer_Year").PivotTables.Item(i) 中的變量 i 改成 1 即可成功引用到名為 "Slicer_Year" 這個切片器緩存裏面的數據透視表對象。
下面是壹個通用的移除到指定切片器緩存的所有數據透視表連接的 SUB 過程:
'?####################################################################'?[功能描述]?切斷到指定切片器緩存的所有數據透視表連接.
'?[參數列表]?1.?Target?目標工作簿;
'2.?SlicerCacheNameOrIndex?切片器緩存名稱或索引號?(可選).
'?[返回類型]?無.
'?####################################################################
Public?Sub?DisconnectAllPivotTablesFromSlicerCache(ByVal?Target?As?Workbook,?_
ByVal?SlicerCacheNameOrIndex?As?Variant)
Dim?sliCacheAs?SlicerCache
Dim?sliCachesAs?SlicerCaches
On?Error?Resume?Next
Set?sliCaches?=?Target.SlicerCaches
If?sliCaches.Count?Then
Dim?spTables?As?SlicerPivotTables
Set?sliCache?=?sliCaches(SlicerCacheNameOrIndex)
Set?spTables?=?sliCache.PivotTables
While?spTables.Count
spTables.RemovePivotTable?1
Wend
End?If
Set?spTables?=?Nothing
Set?sliCache?=?Nothing
Set?sliCaches?=?Nothing
End?Sub
調用如下:
DisconnectAllPivotTablesFromSlicerCache?ActiveWorkbook, "Slicer_Year"
如果妳的?"Slicer_Year" 的索引號是 1,那麽也可以這樣調用
DisconnectAllPivotTablesFromSlicerCache?ActiveWorkbook, 1
運行效果: