Excel получает проверенные значения из OLAP Filter - PullRequest
1 голос
/ 28 июня 2019

Я хотел бы получить проверенные элементы из фильтра в сводной таблице OLAP.

Я знаю, что могу получить доступ к полю с помощью следующего кода, но не могу понять,как добраться до данных и как получить только проверенные пункты.

Sub Button1_Click()

 ActiveSheet.PivotTables("PivotTable1").PivotFields ("[PA Product].[Commodities].[Commodity Name]") 

End Sub

enter image description here

1 Ответ

1 голос
/ 29 июня 2019

Вы можете получить все проверенные элементы фильтра OLAP по PivotField.VisibleItemsList.

Этот массив содержит значения только в том случае, если установлен флажок «Выбрать несколько элементов» и проверены не все элементы, как в вашем примере.

Итак, вы можете начать с этой короткой версии:

Private Sub GetVisibleItemsOfOLAPFilterVersion1()
    Dim pt As PivotTable
    Dim pf As PivotField
    Dim i As Long

    Set pt = ActiveSheet.PivotTables(1)
    Set pf = pt.PageFields(1)
    For i = LBound(pf.VisibleItemsList) To UBound(pf.VisibleItemsList)
        Debug.Print pf.VisibleItemsList(i)
    Next i
End Sub

Следующая подробная версия показывает, как сначала проверить вышеуказанные условия:

Private Sub GetVisibleItemsOfOLAPFilterVersion2()
    Dim pt As PivotTable
    Dim cf As CubeField
    Dim pf As PivotField
    Dim i As Long

    Set pt = ActiveSheet.PivotTables(1)
    For Each cf In pt.CubeFields
        If cf.Orientation = xlPageField Then
            If cf.EnableMultiplePageItems And Not cf.AllItemsVisible Then
                For Each pf In cf.PivotFields
                    For i = LBound(pf.VisibleItemsList) To UBound(pf.VisibleItemsList)
                        Debug.Print pf.VisibleItemsList(i)
                    Next i
                Next pf
            End If
        End If
    Next cf
End Sub
...