20 개 이상의 탭이있는 Excel 통합 문서가 있습니다.
각 탭에는 하나의 피벗 테이블이 있으며 20 개 이상의 슬라이서가있을 수 있습니다.
워크 시트 "Origin"은 다른 모든 워크 시트와 공유 할 수있는 슬라이서 설정을 가지고 있습니다.
모든 슬라이서를 복사하여 다른 시트의 관련 피벗 테이블에 부착하는 코드를 이미 개발했습니다. 이 과정에서 고유 한 슬라이서 이름이 만들어집니다.
이제 슬라이더의 복사 된 세트가있는 원고를 "원점"으로 사용할 수 있도록이 부분을 확장하려고합니다.
여기 슬라이서의 이름 바꾸기가 현재 모든 slicercache를 반복하면서 문제가 발생합니다. 슬라이서가 속한 워크 시트를 식별 할 수있는 방법이 있습니까?
다음은 슬라이서 정보를 얻는 코드의 일부입니다. 진행중인 작업이므로 약간 지저분합니다.
참고 : SlicerArray는 형식 배열입니다.
"****"이있는 행은 "Origin"이외의 다른 시트에서 프로세스를 시작하면 문제가 발생합니다. (Slicercache의 초기 항목은 Origin 시트에 속하므로 대체 워크 시트에서 캐시를 처리 할 때 이러한 모양을 찾을 수 없습니다). 특정 워크 시트에 속한 슬라이서를 식별 할 수 있으면이 과정을 거칠 수 있습니다.특정 워크 시트에 속하는 피벗 테이블 슬라이서 식별
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