0

オラップ キューブにピボット テーブルがあります。ページ フィールドに移動して、複数の項目を手動で選択解除できます。除外する必要があるアイテムのリストに基づいて、VBA でこれを行うにはどうすればよいですか? (nb 私が含める必要がある項目の対応するリストを持っていません)

たとえば、基になるクエリを変更するなど、他の方法でこれらのアイテムを除外する方法を知っています。具体的には、ピボットでアイテムの選択を解除するユーザー アクションを再現したいと考えています。

4

3 に答える 3

1

ディメンションのメンバーを一覧表示するために MDX クエリを実行する必要はありません。VBA でキューブ オブジェクトのプロパティを確認できます。これから始めて、どこにたどり着くか見てみましょう!

oCat を設定 = New 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 に答える