我想从OLAP数据透视表中的过滤器中获取选中的项目。
我知道我可以使用以下代码来掌握该字段,但是我看不出如何获取数据以及如何仅获取已检查的项目。
Sub Button1_Click()
ActiveSheet.PivotTables("PivotTable1").PivotFields ("[PA Product].[Commodities].[Commodity Name]")
End Sub
答案 0 :(得分:1)
您可以通过PivotField.VisibleItemsList
获得OLAP筛选器的所有选中项。
如果选中了“选择多个项目”并且未选中所有项,则此数组仅包含值-在您的示例中就是这种情况。
因此,您可以从以下简短版本开始:
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