我在olap多维数据集上有一个数据透视表。我可以进入页面字段并手动取消选择多个项目。如何根据我需要排除的项目列表在VBA中执行此操作? (n.b.我没有相应的项目列表,我需要包括在内)
我知道如何以其他方式排除这些项目,例如通过更改基础查询。我特别想要复制取消选择数据透视中项目的用户操作。
答案 0 :(得分:1)
您不必运行MDX查询来列出维度的成员,您可以在VBA中查看多维数据集对象的属性。 从这开始,看看它在哪里!
设置oCat =新ADOMD.Catalog
循环通过这个例子: oCat.CubeDefs(sCube).Dimensions(3).Hierarchies(0).Levels(2).Members(I)
答案 1 :(得分:0)
我为C#中的这个例子道歉,但我真的不知道有足够的VBA来翻译它(也许有人可以编辑这个条目并在下面添加它。)
你是在引用这样的东西吗?
((MOE.PivotField)pivotTableObject.PivotFields("[NAME]")).Delete();
其中MOE是Microsoft.Office.Interop.Excel命名空间,[NAME]是您要删除的字段的名称
答案 2 :(得分: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的查询,从而使其变得不切实际。它只是感觉不对。