目標は、Excel セルを SQL Analysis Server 2008 にリンクすることです。
ユーザーは、データに対して計算を行う必要があるため、キューブに接続するために Excel のピボット テーブルを使用したくありません。#Ref's
これにより、ピボット テーブル階層を展開したり折りたたんだりするときに、主に参照されるセルがさまざまな問題を引き起こします。+/- をオフにして読み取り専用にする方法を示しましたが、理想的ではありません。
次に、ピボット テーブル生成ツールが好きではありません。SQL 2005、2008 の Cube Browser を好みます。OWCで作成された sql2012 で減価償却され、Excel 2007 以降でも減価償却されます。
だから私は少しピクルスにいます。私は、MDX を生成するためのツールの山を研究してきました。Mosha Pasumanskyの素晴らしい MDX Studioとhttp://silverlight.galantis.comのRanet Olap Library Componentsが際立っていました。
私が今達成しようとしているのは、MDX で Excel セルを設定することです。方法は次のとおりです。
- Excel > [データ] タブ > [接続] > [キューブに接続]
- ピボット テーブル、既存の接続を使用
- ピボット テーブルにデータを追加する
- ピボット テーブルの値をダブルクリックしてドリルダウンすると、データの 2D 表現で新しいシートが作成されます。
- [データ] タブ > [接続] > ドリル ダウンのために Excel によって作成された接続を選択します。
- [プロパティ] > [定義] をクリックし、[コマンド テキスト] フィールドに MDX クエリを貼り付け > [OK]
これにより、セルにキューブ データが入力されますが、1 行しかありません。複数の行と階層を作成する方法がわかりません。ダイアログの背後にある 1 行のデータのみを確認してください。
MDX クエリを生成するツールでは、複数行です。
これを機能させようとするのは長い道のりであることはわかっていますが、それが可能であるとは思えませんが、アイデアが不足しています。
PowerPivotツールを試してみましたが、ひどいものでした。そのキューブ ブラウザーは、SQL キューブ ブラウザーと同じようには機能しません。列しか追加できません。標準のピボットテーブルに戻るようなものです。
この時点で、組み込みの Excel で素敵なピボット テーブルの「ブラウザ」を見つけようとしています。市場には何もないように見えますか? そのため、サードパーティのツールを使用して MDX を取得し、Excel に (プログラムで VSTO を介して) 挿入しています。
運が悪かったが、言及したいと思ったもう1つのことは、Excel 2007 PivotTableのMDXクエリを表示することです。
Private Sub Workbook_Open()
Dim ptcon As CommandBar
'See the following for list of menus in excel
'http://support.microsoft.com/support/kb/articles/Q213/5/52.ASP
'Title: XL2000: List of ID Numbers for Built-In CommandBar Controls
Set ptcon = Application.CommandBars("PivotTable context menu")
insertDisplayMDX:
Dim cmdMdx As CommandBarControl
For Each btn In ptcon.Controls
If btn.Caption = "MDX Query" Then GoTo doneDisplayMDX
Next btn
' Add an item to the PivotTable context menu.
Set cmdMdx = ptcon.Controls.Add(Type:=msoControlButton, temporary:=True)
' Set the properties of the menu item.
cmdMdx.Caption = "MDX Query"
cmdMdx.OnAction = "DisplayMDX"
doneDisplayMDX:
End Sub
'And this is the DisplayMDX subroutine, that you can insert in a separate module.
Sub DisplayMDX()
Dim mdxQuery As String
Dim pvt As PivotTable
Dim ws As Worksheet
Set pvt = ActiveCell.PivotTable
mdxQuery = pvt.MDX
' Add a new worksheet.
Set ws = Worksheets.Add
ws.Range("A1") = mdxQuery
End Sub
残念ながら、pvt.MDX プロパティは ReadOnly です。
ここまで読んでくれてありがとう。どんなアイデアでも大歓迎です:)