次の方法で共有


チュートリアル : アプリケーション レベルのプロジェクトでの複合データ バインディング

更新 : 2008 年 7 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • アプリケーション レベルのプロジェクト

Microsoft Office のバージョン

  • Excel 2007

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

Visual Studio 2008 Service Pack 1 (SP1) 以降、アプリケーション レベルのプロジェクトのホスト コントロールや Windows フォーム コントロールにデータをバインドできるようになりました。このチュートリアルでは、実行時に Microsoft Office Excel ブックにコントロールを追加し、そのコントロールをデータにバインドする方法を説明します。

このチュートリアルでは、次の作業について説明します。

  • 実行時に、ワークシートに ListObject コントロールを追加する。

  • データセットのインスタンスにコントロールを接続する BindingSource を作成する。

Cc668212.alert_note(ja-jp,VS.90).gifメモ :

お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。

前提条件

このチュートリアルを実行するには、次のコンポーネントが必要です。

  • Visual Studio Tools for Office (Visual Studio 2008 Professional および Visual Studio Team System のオプションの要素)

    ここに挙げた Visual Studio のバージョンでは、Visual Studio Tools for Office が既定でインストールされます。インストールされているかどうかを確認する方法については、「Visual Studio Tools for Office のインストール」を参照してください。

  • Excel 2007

  • AdventureWorksLT サンプル データベースが関連付けられている SQL Server 2005 または SQL Server 2005 Express の実行中のインスタンスへのアクセス。AdventureWorksLT データベースは、CodePlex の Web サイトからダウンロードできます。データベースを関連付ける方法の詳細については、以下のトピックを参照してください。

新規プロジェクトの作成

まず、Excel 用のアドイン プロジェクトを作成します。

新しいプロジェクトを作成するには

  • Visual Basic または C# を使用して、Populating Worksheets from a Database という名前の Excel 2007 アドイン プロジェクトを作成します。

    詳細については、「方法 : Visual Studio Tools for Office プロジェクトを作成する」を参照してください。

    Visual Studio は ThisAddIn.vb ファイルまたは ThisAddIn.cs ファイルを開き、Populating Worksheets from a Database プロジェクトをソリューション エクスプローラに追加します。

データ ソースの作成

[データ ソース] ウィンドウを使用して型指定されたデータセットをプロジェクトに追加します。

型指定されたデータセットをプロジェクトに追加するには

  1. [データ] メニューの [新しいデータ ソースの追加] をクリックします。

    データ ソース構成ウィザードが開きます。

  2. [データベース] をクリックし、[次へ] をクリックします。

  3. AdventureWorksLT データベースへの接続が既に設定されている場合は、その接続を選択し、[次へ] をクリックします。

    それ以外の場合は、[新しい接続] をクリックし、[接続の追加] ダイアログ ボックスを使用して新しい接続を作成します。詳細については、「方法 : SQL Server データベースへの接続を作成する」を参照してください。

  4. [アプリケーション構成ファイルに接続文字列を保存] ページで、[次へ] をクリックします。

  5. [データベース オブジェクトの選択] ページで、[テーブル] を展開し、[Address (SalesLT)] を選択します。

  6. [完了] をクリックします。

    AdventureWorksLTDataSet.xsd ファイルがソリューション エクスプローラに追加されます。このファイルでは、次の項目を定義します。

    • AdventureWorksLTDataSet という名前の型指定されたデータセット。このデータセットは、AdventureWorksLT データベースの Address (SalesLT) テーブルの内容を表します。

    • AddressTableAdapter という名前の TableAdapterTableAdapter は、AdventureWorksLTDataSet のデータを読み書きするために使用します。詳細については、「TableAdapter の概要」を参照してください。

    これらのオブジェクトはどちらもこのチュートリアルの後半で使用します。

コントロールの作成とデータへのコントロールのバインド

このチュートリアルでは、ユーザーがブックを開くとすぐに、事前に選択したテーブル内のすべてのデータが ListObject コントロールによって表示されます。リスト オブジェクトは BindingSource を使用してコントロールをデータベースに接続します。

コントロールのデータへのバインドの詳細については、「コントロールへのデータのバインド」を参照してください。

リスト オブジェクト、データセット、およびテーブル アダプタを追加するには

  1. ThisAddIn クラスで、次のコントロールを宣言し、AdventureWorksLTDataSet データセットの Address テーブルを表示するようにします。

    Private addressListObject As Microsoft.Office.Tools.Excel.ListObject
    Private adventureWorksDataSet As AdventureWorksLTDataSet
    Private addressTableAdapter As AdventureWorksLTDataSetTableAdapters.AddressTableAdapter
    Private addressBindingSource As System.Windows.Forms.BindingSource
    
    private Microsoft.Office.Tools.Excel.ListObject addressListObject;
    private AdventureWorksLTDataSet adventureWorksDataSet;
    private AdventureWorksLTDataSetTableAdapters.AddressTableAdapter addressTableAdapter;
    private System.Windows.Forms.BindingSource addressBindingSource;
    
  2. ThisAddIn_Startup メソッドに次のコードを追加し、データセットを初期化して、AdventureWorksLTDataSet データセットから得た情報をデータセットに設定します。

    Me.addressTableAdapter = New AdventureWorksLTDataSetTableAdapters.AddressTableAdapter()
    Me.adventureWorksDataSet = New AdventureWorksLTDataSet()
    Me.addressTableAdapter.Fill(Me.adventureWorksDataSet.Address)
    Me.addressBindingSource = New System.Windows.Forms.BindingSource()
    
    this.addressTableAdapter = new AdventureWorksLTDataSetTableAdapters.AddressTableAdapter();
    this.adventureWorksDataSet = new AdventureWorksLTDataSet();
    this.addressTableAdapter.Fill(this.adventureWorksDataSet.Address);
    this.addressBindingSource = new System.Windows.Forms.BindingSource();
    
  3. ThisAddIn_Startup メソッドに次のコードを追加します。これによりホスト項目が生成され、ワークシートの機能が拡張されます。詳細については、「アプリケーション レベルのアドインにおける実行時の Word 文書や Excel ブックの拡張」を参照してください。

    Dim worksheet As Excel.Worksheet = DirectCast(Me.Application.ActiveWorkbook.Worksheets(1), Excel.Worksheet)
    Dim extendedWorksheet As Worksheet = worksheet.GetVstoObject()
    
    Excel.Worksheet worksheet = (Excel.Worksheet)this.Application.ActiveWorkbook.Worksheets[1];
    Worksheet extendedWorksheet = worksheet.GetVstoObject();
    
  4. 範囲を作成して ListObject コントロールを追加します。

    Dim cell As Excel.Range = extendedWorksheet.Range("$A$1:$G$5", System.Type.Missing)
    Me.addressListObject = extendedWorksheet.Controls.AddListObject(cell, "list1")
    
    Excel.Range cell = extendedWorksheet.Range["$A$1:$G$5", System.Type.Missing];
    this.addressListObject = extendedWorksheet.Controls.AddListObject(cell, "list1");
    
  5. BindingSource を使用して、コンテンツ コントロールを AdventureWorksLTDataSet にバインドします。リスト オブジェクトにバインドする列の名前を渡します。

    Me.addressBindingSource.DataSource = Me.adventureWorksDataSet.Address
    Me.addressListObject.AutoSetDataBoundColumnHeaders = True
    Me.addressListObject.SetDataBinding( _
        Me.addressBindingSource, "", "AddressID", "AddressLine1", _
        "AddressLine2", "City", "StateProvince", "CountryRegion", "PostalCode")
    
    this.addressBindingSource.DataSource = this.adventureWorksDataSet.Address;
    this.addressListObject.AutoSetDataBoundColumnHeaders = true;
    this.addressListObject.SetDataBinding(
        this.addressBindingSource, "", "AddressID", "AddressLine1", 
        "AddressLine2", "City", "StateProvince", "CountryRegion", "PostalCode");
    

アドインのテスト

Excel を開くと、ListObject コントロールにより AdventureWorksLTDataSet データセットの Address テーブルのデータが表示されます。

アドインをテストするには

  • F5 キーを押します。

    addressListObject という名前の ListObject コントロールがワークシートに作成されます。同時に、adventureWorksLTDataSet という名前のデータセット オブジェクトと、addressBindingSource という名前の BindingSource がプロジェクトに追加されます。ListObjectBindingSource にバインドされ、さらにこれがデータセット オブジェクトにバインドされます。

参照

処理手順

方法 : データベースのデータをワークシートに読み込む

方法 : データベースからドキュメントにデータを読み込む

方法 : サービスのデータをドキュメントに読み込む

方法 : オブジェクトのデータをドキュメントに読み込む

方法 : ワークシート内でデータベースのレコードをスクロールする

方法 : ホスト コントロールからのデータでデータ ソースを更新する

チュートリアル : ドキュメント レベルのプロジェクトでの単純データ バインディング

チュートリアル : ドキュメント レベルのプロジェクトでの複合データ バインディング

概念

コントロールへのデータのバインド

Office ソリューションにおけるローカル データベース使用の概要

データ ソースの概要

データの表示の概要

Office ソリューションにおけるローカル データベース使用の概要

Visual Studio でのデータへの接続の概要

参照

BindingSource コンポーネントの概要

その他の技術情報

Office ソリューションにおけるデータ

履歴の変更

日付

履歴

理由

2008 年 7 月

トピックを追加

SP1 機能変更