我有一个包含20多个选项卡的Excel工作簿。
每个标签都有一个数据透视表,并且可以有20多个切片器。
工作表“Origin”设置了与所有其他工作表共享(经过少量修改)的切片器
我已经开发了将复制所有切片器并将它们附加到其他工作表上的相关枢轴表的代码。在此过程中创建独特的切片机名称。
我现在想扩大这个范围,这样我就可以使用任何带有复制的切片组作为“原点”的工作表。
这里是我遇到问题的地方,因为我的重命名切片机目前循环所有的切片片段。是否有办法识别切片机所属的工作表?
下面是我的代码的一部分,我得到切片机信息。这是有点混乱,因为这是正在进行的工作!
注意:SlicerArray是一个Type数组。
如果我在除“起源”之外的任何其他工作表开始我的工艺,则带“****”的行会导致我出现问题。 (Slicercache中的初始项目属于原始工作表,因此从备用工作表处理缓存时找不到这些形状)。如果我可以识别属于该特定工作表的切片器,我可以绕过这一步。确定属于特定工作表的数据透视表切片器
Dim slCaches As SlicerCaches
Dim slCache As SlicerCache
Dim SlicerInfo(100, 6)
Dim sh As Shape
Dim IntIndex As Integer
Dim SlicerArray(100) As SlicerRecord
Dim pt As PivotTable
Dim jSlicers As Slicers
Dim kSlicer As Slicer
Dim ws As Worksheet
Dim sh_name As String
For Each pt In ActiveSheet.PivotTables
For Each slCache In slCaches
For Each kSlicer In slCache.Slicers
If kSlicer.Shape.TopLeftCell.Worksheet.Name = ActiveSheet.Name Then
Set sh = ActiveSheet.Shapes(slCache.SourceName)'*****
With SlicerArray(IntIndex)
.PivotTable = pt.Name
.Name = slCache.Name
.SourceName = slCache.SourceName
.Top = sh.Top
.Left = sh.Left
.Width = sh.Width
.Height = sh.Height
.Caption = kSlicer.Caption
With slCache.Slicers(slCache.SourceName)
SlicerArray(IntIndex).Columns = .NumberOfColumns
End With
IntIndex = IntIndex + 1
End With
End If
Next kSlicer
Next slCache
Next pt