Power Pivot表 - 循环报告过滤器中的字段

Sid*_*out 9 excel vba excel-vba powerpivot

免责声明:这个问题发布在msdn论坛,但由于我没有得到任何回复(令人惊讶),我也在这里交叉发布.在尝试尝试此问题之前,您可能需要检查该链接.如果在该链接中发布解决方案,我不希望您浪费您的时间:)

问题:我想在报告过滤器中找到字段名称.所以我在寻找RegionCountryName,Cityname而且ProductKey.报告过滤器是动态的,可以更改.

截图:

在此输入图像描述

我尝试了什么:我已经检查了Power Pivot的每个属性,但是没有我能找到的属性可以让我循环遍历power pivot的字段.

我甚至尝试过这段代码,但它显然给了我一个错误 Set pf = pt.PageFields(1)

Sub Sample()
    Dim pt As PivotTable, pi As PivotItem, pf As PivotField
    Dim lLoop As Long

    Set pt = Sheet1.PivotTables(1)
    Set pf = pt.PageFields(1)

    For Each pi In pf.PivotItems
        Debug.Print pi.Name
    Next pi
End Sub
Run Code Online (Sandbox Code Playgroud)

错误Scre​​enShot

在此输入图像描述

那我错过了什么?或者我应该采取不同的方法吗?

编辑

如果有人想试验它,可以从这里下载文件我正在查看工作Inventory表.

fla*_*nne 3

经过一些测试,似乎您可以通过列出 PivotFields 并检查其 Orientation 属性的值是否等于 XlPageField 来获取页面过滤器字段的列表。尝试下面的代码:

Sub Test()
    Dim pt as PivotTable
    Dim pf as PivotFields
    set pt=Sheets("test").PivotTables(1)
    For each pf in pt.PivotFields
        If pf.Orientation=xlPageField Then 
            Debug.Print  pf.Name
        End If
    Next pf
End Sub
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助