Excel VBA:数据透视表立方字段事实数据表名称?

Excel VBA:数据透视表立方字段事实数据表名称?,vba,excel,cube,olap-cube,Vba,Excel,Cube,Olap Cube,我正在使用一个大型OLAP多维数据集,我正在构建非常基本的搜索功能来帮助我解析数据量(约30个事实表、30个维度,加上计算的度量值),但我遇到了一个有趣的问题。当我访问事实表成员或计算度量值的CubeField.Name属性时,它以[Measures].[FieldName]的形式出现,而不是将我指向正确的事实表/计算度量值文件夹。 以下是我使用的代码: Sub X() Dim pvtTable As PivotTable Dim oCubeField As CubeField

我正在使用一个大型OLAP多维数据集,我正在构建非常基本的搜索功能来帮助我解析数据量(约30个事实表、30个维度,加上计算的度量值),但我遇到了一个有趣的问题。当我访问事实表成员或计算度量值的
CubeField.Name
属性时,它以
[Measures].[FieldName]
的形式出现,而不是将我指向正确的事实表/计算度量值文件夹。
以下是我使用的代码:

Sub X()

    Dim pvtTable As PivotTable
    Dim oCubeField As CubeField

    Set pvtTable = ActiveSheet.PivotTables(1)
    For Each oCubeField In pvtTable.CubeFields
        If InStr(LCase(oCubeField.Name), "spread") > 0 Then
            Debug.Print oCubeField.Parent & ": " & oCubeField.Name
        End If

    Next

End Sub

有没有关于我如何实际获取事实表名称的想法?或者计算出的度量值的文件夹结构?谢谢

试试
oCubeField.Value
也许吧。CubeField对象的显示为:

Name返回表示对象名称的字符串值

Value返回表示指定字段名称的字符串值


不幸的是,您不能这样做,因为度量表达式可能链接到几个事实表

但您可以使用OpenSchema()函数查询和分析多维数据集元数据

大概是这样的:

Sub GetMeasuresList()
    Const adSchemaMeasures = 36

    Set ADOCon = ActiveCell.PivotTable.PivotCache.ADOConnection

    Set RecSet = ADOCon.OpenSchema(adSchemaMeasures)

    While Not RecSet.EOF
        Debug.Print RecSet!MEASURE_NAME & ": " & RecSet!EXPRESSION
        RecSet.MoveNext
    Wend

End Sub


是的,也试过了——运气不好。在这个立方体中,它产生相同的结果。