次の方法で共有


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

アプリケーション レベルのプロジェクトでは、ホスト コントロールと Windows フォーム コントロールにデータをバインドできます。このチュートリアルでは、実行時に Microsoft Office Excel ブックにコントロールを追加し、そのコントロールをデータにバインドする方法を説明します。

対象: このトピックの情報は、Excel 2013 と Excel 2010 のアプリケーション レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。

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

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

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

[!メモ]

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

必須コンポーネント

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

-

Microsoft Office Developer Tools が含まれているエディションの Visual Studio 2012。詳細については、「[Office ソリューションを開発できるようにコンピューターを構成する](bb398242\(v=vs.110\).md)」を参照してください。
  • Excel 2013 または Excel 2010。

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

新規プロジェクトの作成

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

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

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

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

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

データ ソースの作成

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

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

  1. [データ ソース] のウィンドウが表示されない場合は、これを、[ビュー][その他のウィンドウ] を選択する、メニュー バーの [データ ソース] 表示されます。

  2. [データ ソース構成ウィザード] を開始するには [新しいデータ ソースの追加] を選択します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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)
    
            ' Create a workhseet host item.
            Dim extendedWorksheet As Worksheet = Globals.Factory.GetVstoObject(worksheet)
    
    
                Excel.Worksheet worksheet = (Excel.Worksheet)this.Application.ActiveWorkbook.Worksheets[1];
                // Create a workhseet host item.
                Worksheet extendedWorksheet = Globals.Factory.GetVstoObject(worksheet);
    
    
    
  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"];
    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 にバインドされ、さらにこれがデータセット オブジェクトにバインドされます。

参照

処理手順

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

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

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

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

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

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

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

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

関連項目

BindingSource コンポーネントの概要

概念

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

データ ソースの概要

Visual Studio でのデータへの Windows フォーム コントロールのバインド

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

Windows フォーム アプリケーションでのデータへの接続

その他の技術情報

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

Office ソリューションでのコントロールへのデータのバインド