チュートリアル : Excel のアクション ペインのコントロールへのデータ連結
このチュートリアルでは、Microsoft Office Excel の操作ウィンドウ内のコントロールに対するデータのバインドについて説明します。 このコントロールは、SQL Server データベースのテーブル間のマスター/詳細リレーションシップを示します。
対象: このトピックの情報は、Excel 2007 と Excel 2010 のドキュメント レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
このチュートリアルでは、次の作業について説明します。
ワークシートへのコントロールの追加
操作ウィンドウ コントロールの作成
操作ウィンドウ コントロールへのデータ バインド Windows フォーム コントロールの追加
アプリケーションが開かれたときの操作ウィンドウの表示
注意
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用する Visual Studio のエディションとその設定によって決まります。 詳細については、「設定の操作」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
-
Microsoft Office 開発者ツールを含むエディションの Visual Studio 2010。 詳細については、「[Office ソリューションを開発できるようにコンピューターを構成する](bb398242\(v=vs.100\).md)」を参照してください。
Excel 2007 または Excel 2010
Northwind SQL Server サンプル データベースがインストールされたサーバーへのアクセス
SQL Server データベースの読み込み/書き込みアクセス許可
プロジェクトの作成
最初に、Excel ワークブック プロジェクトを作成します。
新しいプロジェクトを作成するには
My Excel Actions Pane という名前の Excel ワークブック プロジェクトを作成します。 ウィザードで、[新規ドキュメントの作成] をクリックします。 詳細については、「方法: Visual Studio で Office プロジェクトを作成する」を参照してください。
新しい Excel ブックがデザイナーで開き、My Excel Actions Pane プロジェクトがソリューション エクスプローラーに追加されます。
プロジェクトへの新しいデータ ソースの追加
プロジェクトに新しいデータ ソースを追加するには
[データ ソース] ウィンドウが表示されていない場合は、[データ] メニューの [データ ソースの表示] をクリックします。
注意
[データ ソースの表示] が表示されていない場合は、Excel ワークシートの内部をクリックし、再び確認します。
[新しいデータ ソースの追加] をクリックしてデータ ソース構成ウィザードを起動します。
[データベース] をクリックし、[次へ] をクリックします。
SQL Server Northwind サンプル データベースへのデータ接続を選択するか、または [新しい接続] をクリックして新しい接続を追加します。
[次へ] をクリックします。
接続を保存するオプションがオンになっている場合はオフにし、[次へ] をクリックします。
[データベース オブジェクト] ウィンドウの [テーブル] ノードを展開します。
[Suppliers] テーブルの横のチェック ボックスをオンにします。
[Products] テーブルを展開し、[ProductName]、[SupplierID]、[QuantityPerUnit]、および [UnitPrice] を選択します。
[完了] をクリックします。
[データ ソース] ウィンドウに [Suppliers] テーブルと [Products] テーブルが追加されます。 さらに、ソリューション エクスプローラーに表示できる、型指定されたデータセットもプロジェクトに追加されます。
ワークシートへのコントロールの追加
次に、NamedRange コントロールと ListObject コントロールを、最初のワークシートに追加します。
NamedRange コントロールおよび ListObject コントロールを追加するには
Visual Studio デザイナーで My Excel Actions Pane.xls ブックが開いていて、Sheet1 が表示されていることを確認します。
[データ ソース] ウィンドウの [Suppliers] テーブルを展開します。
[会社名] ノードのドロップダウン矢印をクリックし、[NamedRange] をクリックします。
[データ ソース] ウィンドウから Sheet1 のセル A2 へ、[会社名] をドラッグします。
CompanyNameNamedRange という名前の NamedRange コントロールが作成され、セル A2 に <CompanyName> というテキストが表示されます。 同時に、suppliersBindingSource という名前の BindingSource、テーブル アダプター、および DataSet がプロジェクトに追加されます。 コントロールは BindingSource にバインドされ、さらにこれが DataSet インスタンスにバインドされます。
[データ ソース] ウィンドウで、[Suppliers] テーブルの下にある列をスクロール ダウンします。 リストの一番下には、[Suppliers] テーブルの子である [Products] テーブルがあります。 [Suppliers] テーブルと同じレベルにあるものではなく、この [Products] テーブルを選択し、表示されるドロップダウン矢印をクリックします。
ドロップダウン リストの [ListObject] をクリックし、[Products] テーブルを Sheet1 のセル A6 にドラッグします。
ProductNameListObject という名前の ListObject コントロールがセル A6 に作成されます。 同時に、productsBindingSource という名前の BindingSource とテーブル アダプターがプロジェクトに追加されます。 コントロールは BindingSource にバインドされ、さらにこれが DataSet インスタンスにバインドされます。
C# の場合のみ、コンポーネント トレイの [suppliersBindingSource] を選択し、[プロパティ] ウィンドウで [Modifiers] プロパティを Internal に変更します。
操作ウィンドウへのコントロールの追加
次に、コンボ ボックスを含む操作ウィンドウ コントロールが必要です。
操作ウィンドウ コントロールを追加するには
ソリューション エクスプローラーで My Excel Actions Pane プロジェクトを選択します。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスで、[操作ウィンドウ コントロール] を選択し、ActionsControl という名前を指定して、[追加] をクリックします。
操作ウィンドウ コントロールにデータ バインド Windows フォーム コントロールを追加するには
ツールボックスの [コモン コントロール] タブから操作ウィンドウ コントロールへ、ComboBox コントロールをドラッグします。
[Size] プロパティを 171, 21 に変更します。
ユーザー コントロールのサイズをコンボ ボックスと同じ大きさに変更します。
操作ウィンドウ コントロールのデータへのバインド
ここでは、ComboBox のデータ ソースを、ワークシート上の NamedRange コントロールと同じデータ ソースに設定します。
コントロールのデータ バインディング プロパティを設定するには
操作ウィンドウ コントロールを右クリックし、[コードの表示] をクリックします。
操作ウィンドウ コントロールの Load イベントに次のコードを追加します。
Private Sub ActionsControl_Load(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Load Me.ComboBox1.DataSource = Globals.Sheet1.SuppliersBindingSource Me.ComboBox1.DisplayMember = "CompanyName" End Sub
private void ActionsControl_Load(object sender, EventArgs e) { this.comboBox1.DataSource = Globals.Sheet1.suppliersBindingSource; this.comboBox1.DisplayMember = "CompanyName"; }
C# では、ActionsControl のイベント ハンドラーを作成する必要があります。 このコードを ActionsControl コンストラクターに追加できます。 イベンド ハンドラーの作成方法の詳細については、「方法: Office プロジェクトでイベント ハンドラーを作成する」を参照してください。
public ActionsControl() { InitializeComponent(); this.Load += new EventHandler(ActionsControl_Load); }
操作ウィンドウの表示
実行時に操作ウィンドウ コントロールを追加するまで、操作ウィンドウは表示されません。
操作ウィンドウを表示するには
ソリューション エクスプローラーで ThisWorkbook.vb または ThisWorkbook.cs を右クリックし、[コードの表示] をクリックします。
ThisWorkbook クラスで、ユーザー コントロールの新しいインスタンスを作成します。
Dim actions As New ActionsControl
ActionsControl actions = new ActionsControl();
ThisWorkbook の Startup イベント ハンドラーで、コントロールを操作ウィンドウに追加します。
Private Sub ThisWorkbook_Startup(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Startup Me.ActionsPane.Controls.Add(actions) End Sub
private void ThisWorkbook_Startup(object sender, System.EventArgs e) { this.ActionsPane.Controls.Add(actions); }
アプリケーションのテスト
文書をテストして、文書を開いたときに操作ウィンドウが開き、コントロールの間にマスター/詳細リレーションシップがあることを確認します。
文書をテストするには
F5 キーを押してプロジェクトを実行します。
操作ウィンドウが表示されることを確認します。
リスト ボックスから会社を選択します。 会社名が NamedRange コントロールに表示され、製品の詳細が ListObject コントロールに表示されることを確認します。
さまざまな会社を選択して、会社名と製品の詳細が適切に変化することを確認します。
次の手順
ここでは、次の作業を行います。
Word のコントロールへのデータのバインド。 詳細については、「チュートリアル : Word の操作ウィンドウ上のコントロールへのデータ バインディング」を参照してください。
操作ウィンドウ上のコントロールの表示および非表示。 詳細については、「チュートリアル : ユーザー コンテキストに応じた操作ウィンドウの変更」を参照してください。
プロジェクトの配置。 詳細については、「配置の概要 (Visual Studio での Office 開発)」を参照してください。
参照
処理手順
方法 : アクション ペイン上のコントロールのレイアウトを管理する