マイクロソフト株式会社 デベロッパーマーケティング本部
デベロッパーエバンジェリスト 鹿又 京子

最終更新日 2004 年 4 月 7 日

このコンテンツのポイント
  • Microsoft Visual Studio Tools for the Microsoft Office Systems (以下、Visual Studio Tools for Office) プロジェクトの作成方法
  • 型付データセットの作成方法
  • XMLMap オブジェクトの使用方法
  • XML スキーマのマッピング方法

今回紹介するコード

Visual Basic
' ワークブックが開かれたときに呼び出されます。
Private Sub ThisWorkbook_Open() Handles ThisWorkbook.Open
  '接続文字列
  Dim strConnection As String = "Server=localhost;Database=Pubs;User=sa;Password=password"
  'SqlConnection
  Dim con As New SqlConnection(strConnection)
  'SqlDataAdaptor
  Dim da As New SqlDataAdapter("SELECT * FROM Publishers", con)
  '型付データセットのクラス
  Dim ds As New Publisher

  'データベースへの接続
  con.Open()
  '型付データセットへのデータの取得
  da.Fill(ds, "Publishers")
  'データベースの接続終了
  con.Close()

  'Excel にすでにスキーマがマッピングされている場所へデータを表示
  ThisWorkbook.XmlMaps("Publisher_対応付け").ImportXml(ds.GetXml())

End Sub
 

 

目次
はじめに
Visual Studio Tools for Office アプリケーションの開発準備をする
型付データセットの作成する
Excel シートへのマッピング
コードを実装する
実行する
おわりに


  

はじめに

Visual Studio Tools for Office は、Visual Studio .NET 2003 を使用する開発者が、Word 2003 および Excel 2003 ベースのアプリケーションの背後で動作するコードを記述するためのテクノロジーです。これを使用すると Excel 2003 にデータベースや XML データを簡単に操作表示することができます。本稿では ADO.NET の型付データセットを使用してデータベースのデータを Excel に簡単に表示する例をご紹介します。
尚、この例では、SQL Server 2000に標準で付属する "Pubs" サンプル データベースを使用します。

 

Visual Studio Tools for Office アプリケーションの開発準備をする

Visual Studio .NET 2003 を起動して、新規にプロジェクトを作成します。
ここでは、[新しいプロジェクト] ダイアログで [Microsoft Office System Projects] を展開し Visual Basic .NET を選択し、"Excel ワークブック" テンプレートを選択しています。[プロジェクト名] テキストボックスに名称を入力したら "OK" ボタンをクリックします。

図 1. Visual Studio Tools for Office の Excel ワークブックプロジェクトテンプレート選択

 

[Microsoft Office プロジェクト ウィザード] ダイアログで "Excel ワークブック" の作成で [新規作成] オプションをオンにし [OK] をクリックします。 これで Visual Studio Tools for Office を利用する開発の準備が完了しました。

図 2. Visual Studio Tools for Office の Excel プロジェクトウィザード

 

型付データセットの作成する

ここでは、Excel に表示するためのデータを型付データセットとして作成します。ソリューションエクスプローラでプロジェクトを選択し、[プロジェクト] メニューの [新しい項目の追加] を選択します。テンプレートで [データセット] を選択し "Publisher.xsd" という名前で保存します。

図 3. データセットの追加

 

次にソリューションエクスプローラで "Publisher.xsd" をダブルクリックして表示し、サーバーエクスプローラから Pubs サンプル データベースの中にある "Publishers" テーブルを表示されている "Publisher.xsd" へドラッグアンドドロップします。これで型付データセットの作成は完了です。

図 4. 型付データセットの作成

 

Excel シートへのマッピング

ここでは 型付データセットの項で作成した XML スキーマファイル (xsd) をExcel ワークブックへマッピングを行います。

  1. プロジェクトフォルダ内にある Excel ファイルを起動します。
  2. [データ] メニューの [XML] をポイントし [XML ソース] をクリックします。
  3. [XML ソース] 作業ウィンドウの [XML対応付け] ボタンをクリックします。
  4. [XML対応付け] ダイアログの [追加] ボタンをクリックします。

    図 5. XML 対応付けダイアログ

  5. プロジェクトフォルダ内にある型付データセットの作成の項で作成した "Publisher.xsd" ファイルを選択し [OK] ボタンをクリックします

    図 6. スキーマの取り込み

  6. [XML ソース] ウィンドウからデータを表示したいワークシートの場所にスキーマをドラッグアンドドロップします。

    図 7. スキーマのマッピング

  7. Excel ワークブックを保存します。

コードを実装する

データセットのスキーマの作成とスキーマと Excel のマッピングが終了したら最後にコードを実装します。
今回は Excel ワークブックが開く際に発生する ThisWorkbook_Open() イベントにコードを実装します。 このコードでは、コネクションオブジェクトとデータアダプタオブジェクトを使用し型付データセットである Publihser クラスにデータをロードします。その後 XMLMap オブジェクトの ImportXML メソッドの引数に XML データを渡すことによってデータを Excel に一括表示しています。XMLMap オブジェクトは、Excel 2003 からの新しいオブジェクト モデルです。XMLMaps コレクションの引数にすでにワークブック上にマッピングされている XML ソース名を渡すことにより XMLMap オブジェクトを取得することが可能です。あらかじめ Excel ワークブックにスキーマをマッピングしておくことで、今までのようにFor文などを使用して一つ一つデータを Range オブジェクトを使用して入れていくことなくデータを簡単に一括出力することが可能です。

 

Visual Basic
' ワークブックが開かれたときに呼び出されます。
Private Sub ThisWorkbook_Open() Handles ThisWorkbook.Open
  '接続文字列
  Dim strConnection As String = "Server=localhost;Database=Pubs;User=sa;Password=password"
  'SqlConnection
  Dim con As New SqlConnection(strConnection)
  'SqlDataAdaptor
  Dim da As New SqlDataAdapter("SELECT * FROM Publishers", con)
  '型付データセットクラス
  Dim ds As New Publisher

  'データベースへの接続
  con.Open()
  '型付データセットへのデータの取得
  da.Fill(ds, "Publishers")
  'データベースの接続終了
  con.Close()

  'Excel にすでにスキーマがマッピングされている場所へデータセットのデータを表示
  ThisWorkbook.XmlMaps("Publisher_対応付け").ImportXml(ds.GetXml())

End Sub
 

実行する

イベントのコードの記述が完了したら、実行してみましょう。
アプリケーションを実行させるには [F5] キーを押すか、[デバッグ] メニューから [開始] をクリックします。スキーマがマッピングされたシート上にデータが表示されるのを確認できるはずです。

図 8. スキーマのマッピング



おわりに

本稿のように Excel 2003 の新しい機能である XML スキーマファイルのマッピング機能を使用することで型付データセットだけでなく XML ファイルや XML を標準採用している Web サービスなどからデータを簡単に一括表示することが可能です。また、Word 2003 についても同様の機能が備わっております。
スマートクライアントアプリケーションとして Office 2003 を使用する際は是非ご活用ください。


Code Recipe .NET Framework デベロッパー センター

ページのトップへ