印刷用ページ       送信     
クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
テクニカルドキュメント
Office 開発
Visual Studio Tools for Office
 Visual Studio 2005 Tools for Office...
Visual Studio 2005 Tools for Office を使用するコード スニペットの概要

Kevin Schultz
Pam Davis
NuSoft Solutions, Inc.

Matt Hessinger
Hessinger Consulting, Inc.

December 2004
日本語版最終更新日 2005 年 10 月 17 日

適用対象:
    Microsoft Visual Studio 2005
    Microsoft Visual Studio 2005 Tools for the Microsoft Office System
    Microsoft Office Professional 2003
    Microsoft Office Excel 2003
    Microsoft Office Word 2003

ダウンロードVSTO2005Beta2CodeSnippets.msi.

概要: Visual Studio Tools for Office 用の IntelliSense コード スニペットは、Visual Studio 2005 Beta 2 で Word および Excel の開発タスクを速やかに開始する手段になります。そのようなタスクには、データのインポート/エクスポート、グラフ作成コラボレーション、Excel と Word のコントロールとの統合などがあります。

メモ   この記事はリリース前のドキュメントであり、今後のリリースで変更される可能性があります。この記事に付記されたサンプル コードは、Microsoft Office System Beta 2 用の Microsoft Visual Studio 2005 Tool に基いています。Microsoft Visual Studio 2005 Tool for the Microsoft Office System のベータ版は、Microsoft Visual Studio 2005 のベータ版に付属しています。

目次

はじめに
スニペットのインストール
Visual Studio Tools for Office 用のスニペットのカテゴリ
Excel コード スニペットの使用例シナリオ
Word コード スニペットの使用例シナリオ
結論
その他のリソース

はじめに

開発者は、Microsoft IntelliSense コード スニペットを使って、カスタマイズしたコード ライブラリを簡単に作成して配布することができます。 Visual Studio 統合開発環境 (IDE) と IntelliSense の能力を活用して、このようなよく使用されるコードを挿入することが、生産性を高めるための効率のよい方法です。 これは時間の節約にもなります。なぜなら、似通ったコードを探し出してコピーし、ソリューション コードに貼り付けるためだけに、数かぎりないコード ソース例を検索する必要がなくなるからです。 単に、図 1 に示されているとおりのコンテキスト メニューを使ってコード スニペットを挿入してから、図 2 に示されている注釈付きのツール ヒントを必要に応じて使用して、反転表示のカスタム パラメータを修正するだけです。

コード スニペットの挿入

図 1. コード スニペットの挿入


カスタム パラメータの修正 (クリックすると拡大表示されます)

図 2. カスタム パラメータの修正 (クリックすると拡大表示されます)


IntelliSense コード スニペットは、Microsoft Office 用のアプリケーションを作成するマネージ コード開発者にとって貴重な資産になります。 Office には、アプリケーション開発者にとって莫大な量の機能性が備わっています。 ユーザーによって実行されるほぼすべての機能を、コード中で自動化することができます。 ただし、このように機能性が高いゆえに、かなりの実力の向上が伴わなければならず、特殊タイプ、操作、および概念に関する詳しい知識が必要になります。 Microsoft Visual Studio Tools for the Microsoft Office System (Visual Studio Tools for Office) は、Microsoft Office Word と Microsoft Office Excel の豊富な機能を Visual Studio IDE にマージしたものです。 現在、Microsoft Windows フォームおよび WebForm アプリケーションを簡単に作成するのに使用できる同じ Visual Studio ツールの多くが、Visual Studio Tools for Office の Word および Excel のアプリケーションでも利用できるようになっています。 Visual Studio Tools for Office を使用すれば、Office の開発プロセスが単純化されます。 たとえば、すべて IDE 内で、編集のために Word または Excel を開いて、コントロール (Windows の標準コントロールまたは Visual Studio Tools for Office ビューのコントロール) をドラッグ アンド ドロップし、そしてイベントを作成することができます。 IDE とのこのレベルの統合があれば、Office 開発者は、IntelliSense コード スニペットをはじめとする Visual Studio の強力な各種機能を利用できるようになります。

この記事では、Visual Studio Tools for Office 用に作成された Excel および Word のコード スニペットの概要について述べます。このスニペットは、VSTO2005Beta2CodeSnippets.msi ダウンロード パッケージに付属しています。 このスニペットは、よく使用されるコードと、知名度はそれより劣るけれどもやはりきわめて有用ないくつかの機能にまつわるコードの両方で構成されています。 このようなコード スニペットはすべて、メソッド本体というスニペット タイプです。すなわち、既存のメソッドに挿入される構造になっているということです。 また、この後に、それらのコード スニペットの使用法を例示するために、Excel および Word のサンプル シナリオも示してあります。

ソフトウェア要件

これらのスニペットを使用するには、次のようなソフトウェアをこの順にインストールする必要があります。

  1. Microsoft Windows 2000 またはそれ以上
  2. Microsoft Office Professional 2003 (Service Pack 1 を適用済み。完全インストール)
    または Microsoft Office Excel 2003 および Microsoft Office Word 2003 (Service Pack 1 を適用済み)
  3. Microsoft Visual Studio 2005 Beta 2

スニペットのインストール

スニペットをインストールするには、次のステップを行います。

  1. この記事に関連したインストーラ VSTO2005Beta2CodeSnippets.msi をダウンロードして実行します。
    デフォルトでは、このインストーラは、C# スニペットを「マイ ドキュメント\Visual Studio 2005\Code Snippets\VC#\My Code Snippets\Office Development」 フォルダ内に入れ、Visual Basic スニペットを「マイ ドキュメント\Visual Studio 2005\Code Snippets\Visual Basic\My Code Snippets\Office Development」 フォルダに入れます。
  2. 必ず、実行中の Visual Studio インスタンスは 1 つだけとし、すべてのソリューションを閉じてください。
  3. [ツール] メニューで [コード スニペット マネージャ] を選択します。
  4. [言語] リスト ボックスで [Visual Basic] を選択します。 すると、Visual Basic で使用できるすべてのスニペットが表示されます。
  5. [追加] をクリックします。
  6. マイ ドキュメント\Visual Studio 2005\Code Snippets\Visual Basic\My Code Snippets」 フォルダ (またはインストーラの実行時に指定したフォルダ) に移動し、[Office Development] を反転表示してから、[開く] をクリックします。
  7. [言語] リスト ボックスの [Visual C#] をクリックし、Visual C# で利用可能なすべてのスニペットを表示します。
  8. [追加] をクリックします。
  9. マイ ドキュメント\\Visual Studio 2005\Code Snippets\VC#\My Code Snippets」 フォルダ (またはインストーラの実行時に指定したフォルダ) に移動し、[Office Development] を反転表示してから、[開く] をクリックします。

これで、図 3 に示されている [コード スニペット マネージャ] 内にコード スニペットが表示されます。

 [コード スニペット マネージャ] (クリックすると拡大表示されます)

図 3. [コード スニペット マネージャ] (クリックすると拡大表示されます)


Visual Studio Tools for Office 用のスニペットのカテゴリ

Visual Studio Tools for Office のコード スニペットを見つけ出すには、[コード エディタ] の内部を右クリックし、[スニペットの挿入] を選択します。 Visual Studio Tools for Office のコード スニペットは、[Office Development] グループの下に置かれています。このグループは、ExcelOffice、および Word の 3 つのグループに大別されます。

Excel コード スニペットの使用例シナリオ

このサンプル シナリオでは、2 つのコード スニペットについて順をおって説明します。この 2 つのコード スニペットを結びつけて、ユーザー選択セルにおいて新規の ListObject コントロールを作成してから、データ ソースをリストにバインドします。

メモ   Visual Basic と C# には、まったく同じ一連のコード スニペットが存在します。 ここの例は、わかりやすいように Visual Basic のもののみを示しています。

このサンプルでは、Excel の Visual Studio Tools for Office アプリケーションが Visual Basic に存在することが前提になっています。 クラス関数またはイベント ハンドラといった、任意のメソッドにコードを追加することができます。 この例では、プロジェクト中のデータ ソースとして Northwind データベース内に Customers テーブルがすでに追加済みであると想定されています。

ツールボックスから、BindingSource コントロールを Sheet1 にドラッグします。 DataSource プロパティを NorthwindDataSet に設定し、DataMember プロパティを Customers に設定します。 ボタンを Sheet1 にドラッグしてからダブルクリックし、イベント ハンドラを作成します。 これで、ここで説明しているスニペットを挿入する場所が作成されます。 Sheet1 上のコードは次のようになるはずです。

Public Class Sheet1

    Private Sub Sheet1_Startup(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles Me.Startup
        'TODO: NorthwindDataSet.Customers のデフォルトの AutoFill を除去するには、
        'このコード行を削除します。
        If Me.NeedsFill("NorthwindDataSet") Then
            Me.CustomersTableAdapter.Fill(Me.NorthwindDataSet.Customers)
        End If
    End Sub

    Private Sub Sheet1_Shutdown(ByVal sender As Object, ByVal e As _
    System.EventArgs) Handles Me.Shutdown

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click

    End Sub
End Class

ListObject の作成

ListObject コントロールを挿入するには、たとえば Button1_Click イベント手順内などの、コードを挿入しようとしている先の関数にカーソルを置きます。 [Office Development] の下の [Excel] を指してから、[Create ListObject control by range] スニペットを選択します。

[Create ListObject control by range] コード スニペットの挿入 (クリックすると拡大表示されます)

図 4. [Create ListObject control by range] コード スニペットの挿入 (クリックすると拡大表示されます)


次のようなコード スニペットが挿入されます。

'選択範囲内に新規の ListObject コントロールを作成します。
Dim range As Microsoft.Office.Interop.Excel.Range
range = TryCast(Globals.ThisWorkbook.Application.Selection, _
   Microsoft.Office.Interop.Excel.Range)
If range IsNot Nothing Then
    Dim listObject1 As Microsoft.Office.Tools.Excel.ListObject _
       = Globals.Sheet1.Controls.AddListObject(range, "ListObject1")
End If

コード スニペットを挿入すると、置き換えの必要な項目が Visual Studio IDE で反転表示されます。 上記のスニペットのうちの 8 つの値が反転表示されて、変更する必要があることが示されます。 反転表示になった各域の上にマウス カーソルを置くと、その値を説明するツール ヒントが表示されます。 たとえば、ListObject1 という値の場合、[Replace with the name of the ListObject control (ListObject コントロールの名前に置き換えてください)] というツール ヒントが表示されます。 このサンプルでは、挿入するコード スニペットは、何も変更されずに作動します。

データ ソースへの ListObject のバインド

上記で作成した ListObject コントロールをデータ ソースにバインドするには、[Office Development] の下の [Excel] を指してから、[Bind ListObject contents to Data Source] スニペットを選択します。

[Bind ListObject contents to DataConnector] コード スニペットの挿入 (クリックすると拡大表示されます)

図 5. [Bind ListObject contents to Data Source] コード スニペットの挿入 (クリックすると拡大表示されます)


次のようなコード スニペットが挿入されます。

'データ ソース内の指定テーブルを使用します。
'既存の ListObject へのデータ移植のためのテーブル値をバインドします。
ListObject1.SetDataBinding(DataSource1, "TableName")

ここでも、置換値が反転表示になって、交換する項目がツール ヒントで説明されます。 このスニペットの場合のそのような置換値としては、ListObject1DataSource1、および "TableName" 値などがあります。 BindingSource および Customers テーブルと一緒に、ListObject1 を、最初のスニペットで作成したオブジェクトに置き換えると、次のようになります。

'データ ソース内の指定テーブルを使用します。
'既存の ListObject へのデータ移植のためのテーブル値をバインドします。
Me.Controls("ListObject1").SetDataBinding( _
     Me.NorthwindDataSet, "Customers")
メモ   別の方法として、ListObject コントロールをバインド ソースに直接バインドし、SetDataBinding メソッド中のテーブル名パラメータを省略することもできます。

ここまでで、ソリューションに必要な個々の値がスニペットに入ったので、コードを実行して実装内容を検証します。 このケースでは、ユーザー選択セルのロケーションに新規の ListObject コントロールを作成し、事前に読み込んだデータ ソースの Customers テーブル値をそこに取り込みました。

Word コード スニペットの使用例シナリオ

次に、使用可能ないくつかのスニペットを使用して、Word でシナリオを実装する方法を示します。 このシナリオでは、新規の Bookmark オブジェクトを作成し、ある特定のテキストをその Bookmark ロケーションにインポートします。

メモ   Visual Basic と C# には、まったく同じ一連のコード スニペットが存在します。 ここの例は、わかりやすいように Visual Basic のものを示しています。
コード スニペットを挿入するには、コード エディタの内部を右クリックし、[Insert Snippet] を選択します。

以下の例では、Visual Studio Tools for Office の Visual Basic Word Document プロジェクトが開かれていて、コードの追加先のイベント ハンドラが用意されていることが前提になっています。 また、Word 文書にインポートする Word 文書 C:\in.doc が用意されていることも前提となっています。

イベント ハンドラでは、以下のコード行を追加します。 これによって、新規テーブルの挿入先である文書の末尾が Range で参照されます。

Dim rng As Word.Range = Me.Bookmarks("\EndOfDoc").Range

Bookmark オブジェクトの作成

まず、新規の Bookmark を文書内に作成します。 通常の Word Bookmark を使用できますが、ここでは、Visual Studio Tools for Office の Bookmark を作成します。 [Office Development] の下の [Word] を指してから、[Add Bookmark control to document at range] スニペットを選択します。

[Add Bookmark control to document at range] コード スニペットの挿入 (クリックすると拡大表示されます)

図 6. [Add Bookmark control to document at range] コード スニペットの挿入 (クリックすると拡大表示されます)


次のようなコード スニペットが挿入されます。

Dim name As String = "NewBookmark"
Dim Bookmark1 As Bookmark = Me.Controls.AddBookmark(Range1, name)

コード スニペットを挿入すると、置き換えの必要な項目が Visual Studio IDE で反転表示されることに注意してください。 この場合、コードは、Bookmark のデフォルト名として "NewBookmark" を挿入します。 Range1 を、Bookmark の作成予定場所の Range オブジェクトの名前に置き換えます。 コードは次のようになるはずです。

Dim name As String = "NewBookmark"
Dim Bookmark1 As Bookmark = Me.Controls.AddBookmark(rng, name)

このコードは、"NewBookmark" という新規の Bookmark を、文書の末尾の範囲参照地点に挿入します。

テキストのインポート

これで、C:\in.doc からテキストをインポートする準備ができました。 [Office Development] の下の [Word] を指してから、[Import entire Word Document and place at existing bookmark] スニペットを選択します。

[Import entire Word Document and place at existing bookmark] コード スニペットの挿入 (クリックすると拡大表示されます)

図 7. [Import entire Word Document and place at existing bookmark] コード スニペットの挿入 (クリックすると拡大表示されます)


次のようなコード スニペットが挿入されます。

Dim rng1 As Microsoft.Office.Interop.Word.Range = _
     Me.Bookmarks("Bookmark1").Range
rng1.InsertFile("replaceThisFilePathAndFilename.doc")

この場合も、変更の必要なプレースホルダが反転表示で示されます。 このようなプレースホルダを実際の参照および値に置き換えた後、コードは次のようになるはずです。

Dim rng1 As Microsoft.Office.Interop.Word.Range = _
     Me.Bookmarks("NewBookmark").Range
rng1.InsertFile("c:\in.doc")

ここまでで、ソリューションに必要な個々の値がスニペットに入ったので、コードを実行して実装内容を検証します。 ここでは、新規の Bookmark コントロールを作成し、c:\in.doc ファイルの内容をそこへ移植しました。 挿入したテキストを備えた範囲への参照を確立したら、次に修正することができます。 たとえば、その書式の変更、テーブルへの変換、挿入テキストの前後へのセクション中断の挿入などを行うことができます。

まとめ

この記事では、Visual Studio のコード スニペット機能の概要を述べ、Word および Excel の Visual Studio Tools for Office のコード スニペットを一緒に使用して、Word および Excel のソリューションでの実装プロセスを簡略化する例を示しました。 Visual Studio Tools for Office スニペットのグループ分けについても説明しました。 ここに記載したコード スニペットを見直してください。そうすれば、Visual Studio Tools for Office 環境に新しく参入する開発者にとっては、このようなコード スニペットによって、Word および Excel の多数の基本的なコード タスクをどのように実装すればよいかを簡単に習得する方法が見つかる一方で、経験豊かな開発者にとっては、再利用可能なコード スニペットを使って、 Word および Excel のソリューションを作成する手段を得ることができます。  

追加資料

Visual Studio Tools for Office

コード スニペット

執筆者紹介

Kevin Schultz 氏は、過去 10 年にわたって小売業および企業ユーザー向けのさまざまなデスクトップ アプリケーションおよびクライアント/サーバー アプリケーションの作成に携わってきました。 ビジネス インテリジェンス (データのウェアハウジング) および組み込みプラットフォーム (ポケット PC) における深い経験に加えて Visual Studio Tools for Office を活用することで、同氏は従来のデスクトップおよび Web 開発と、今日のモビリティ需要との間のギャップを埋める別のプラットフォームを獲得しました。 同氏の勤務先は、NuSoft Solutions Aa537177.leave-ms(ja-jp,office.11).gif です。

Pam Davis 氏は、NuSoft Solutions Aa537177.leave-ms(ja-jp,office.11).gif の上級開発者であり、この記事のサンプルの作成に貢献しました。

Matt Hessinger 氏は、10 年以上にわたってソフトウェア開発およびアーキテクチャに従事しています。 同氏は最近、自身の会社 Hessinger Consulting 社を設立し、アーキテクチャの側面から Microsoft .NET および Office の開発に取り組んでいる新規参入企業に対する支援に尽力しています。 Hessinger 氏は、サービス指向アーキテクチャ (SOA)、.NET、およびコラボレーション テクノロジの先駆者である Econium 社の主任設計者として過去 3 年間勤務していました。 同氏とその妻でありステンド グラス アーチストである Diana は、ニュージャージー州アッパー モントクレア在住です。

© 2009 Microsoft Corporation. All rights reserved. 使用条件 | 商標 | プライバシー
Page view tracker