0

我在 olap 多维数据集上有一个数据透视表。我可以进入页面字段并手动取消选择多个项目。如何根据需要排除的项目列表在 VBA 中执行此操作?(注意我没有相应的我需要的物品清单)

我知道如何以其他方式排除这些项目,例如通过更改基础查询。我特别想复制取消选择数据透视中项目的用户操作。

4

3 回答 3

1

您不必运行 MDX 查询来列出维度的成员,您可以在 VBA 中查看多维数据集对象的属性。从这个开始,看看它会把你带到哪里!

设置 oCat = 新 ADOMD.Catalog

例如循环遍历:oCat.CubeDefs(sCube).Dimensions(3).Hierarchies(0).Levels(2).Members(i)

于 2008-10-14T12:43:23.417 回答
0

我很抱歉这个例子是用 C# 编写的,但我真的不知道足够的 VBA 来翻译它(也许有人可以编辑这个条目并在下面添加它)。

你指的是这样的事情吗?

((MOE.PivotField)pivotTableObject.PivotFields("[NAME]")).Delete();

其中 MOE 是 Microsoft.Office.Interop.Excel 命名空间,[NAME] 是您要删除的字段的名称

于 2008-09-19T12:34:09.643 回答
0

我找到了一个不完全令人满意的解决方案。在单独的 MDX 查询中,我检索了与页面字段对应的维度的所有成员。我还建立了要排除的项目的字典。然后我像这样遍历成员:

PivotField.CubeField.EnableMultiplePageItems = True
firstTime = True
For Each member In dimensionMembers
    If Not HiddenMembers.Exists(member) Then
        'firstTime = true is the equivalent of unchecking 
        ' the root node of the items treeview
        PivotField.CubeField.AddPageItem "[Dimension].[" & member & "]", firstTime
        firstTime = False
    End If
Next

我说不满意是因为每次调用 AddPageItem 都会触发对 Analysis Server 的查询,使其速度慢得不切实际。它只是感觉不对。

于 2008-09-19T15:20:02.147 回答