ホスト項目とホスト コントロールの概要

更新 : 2008 年 7 月

対象

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

ドキュメント レベルのプロジェクト

  • Excel 2003

  • Excel 2007

  • Word 2003

  • Word 2007

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

  • Excel 2007

  • Word 2007

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

ホスト項目とホスト コントロールは、Visual Studio Tools for Office ソリューションのプログラミング モデルを提供するのに役立つクラスです。ホスト項目とホスト コントロールは、Microsoft Office Word および Microsoft Office Excel の COM ベースのオブジェクト モデルとの対話を、Windows フォーム コントロールなどのマネージ オブジェクトとの対話と似たものにします。

ホスト項目

ホスト項目は、Visual Studio Tools for Office プロジェクトでオブジェクト モデルの階層構造の最上位にあるクラスです。Visual Studio Tools for Office は、Word ソリューションおよび Excel ソリューションに対して次のホスト項目を定義します。

これらのクラスは、それぞれが Word または Excel のオブジェクト モデルにネイティブに存在するクラス (ネイティブ Office オブジェクト) を拡張します。たとえば、Microsoft.Office.Tools.Word.Document ホスト項目は、Word プライマリ相互運用機能アセンブリに定義されている Microsoft.Office.Interop.Word.Document クラスを拡張します。

ホスト項目は、一般に、対応する Office オブジェクトと同じ基本機能を備えていますが、さらに次の機能を備えています。

  • ホスト コントロールや Windows フォーム コントロールなどのマネージ コントロールをホストする機能。

  • 豊富なイベント モデル。Word や Excel のネイティブなオブジェクト モデルでの一部の文書、ブック、ワークシートのイベントは、アプリケーション レベルでのみ発生します。ホスト項目は、特定のドキュメントのイベントを扱いやすくするように、これらのイベントをドキュメント レベルで発生させます。

ドキュメント レベルのプロジェクトのホスト項目について

ドキュメント レベルのプロジェクトでは、ホスト項目はコードのエントリ ポイントを提供し、ソリューションの開発に役立つデザイナを備えています。

Microsoft.Office.Tools.Word.DocumentMicrosoft.Office.Tools.Excel.Worksheet のホスト項目は、Windows フォーム デザイナに似た、文書やワークシートを視覚的に表現するデザイナを備えています。このデザイナを使用して、Word や Excel で文書やワークシートのコンテンツを直接変更したり、デザイン サーフェイスにコントロールをドラッグしたりすることができます。詳細については、「Document ホスト項目」および「Worksheet ホスト項目」を参照してください。

Microsoft.Office.Tools.Excel.Workbook ホスト項目は、ユーザー インターフェイスのあるコントロールのコンテナとしては動作しません。代わりに、このホスト項目のデザイナはコンポーネント トレイとして機能し、ユーザーはこのデザイナを使用して DataSet などのコンポーネントをデザイン サーフェイスにドラッグできます。詳細については、「Workbook ホスト項目」を参照してください。

ドキュメント レベルのプロジェクトでは、ホスト項目をプログラムで作成することはできません。その代わり、デザイン時に Visual Studio Tools for Office によってプロジェクトに自動的に生成される ThisDocument、ThisWorkbook、または Sheetn クラスを使用します。生成されるこれらのクラスは、ホスト項目クラスから派生するもので、コードのエントリ ポイントを提供します。詳細については、「ホスト項目およびホスト コントロールのプログラム上の制限事項」を参照してください。

アプリケーション レベルのプロジェクトのホスト項目について

アプリケーション レベルのアドインを作成するとき、既定では、ホスト項目にはアクセスできません。ただし、Visual Studio 2008 Service Pack 1 (SP1) 以降、実行時にアドインに Microsoft.Office.Tools.Word.DocumentMicrosoft.Office.Tools.Excel.Workbook、および Microsoft.Office.Tools.Excel.Worksheet のホスト項目を生成できるようになりました。

ホスト項目を生成すると、ドキュメントへのコントロールの追加、特定のドキュメントで認識されるスマート タグの作成などのタスクを実行できます。詳細については、「アプリケーション レベルのアドインにおける実行時の Word 文書や Excel ブックの拡張」を参照してください。

ホスト コントロール

ホスト コントロールは、Word や Excel のオブジェクト モデルでさまざまなユーザー インターフェイス (UI: User Interface) オブジェクトを拡張します。たとえば、Microsoft.Office.Interop.Word.ContentControl オブジェクトや Microsoft.Office.Interop.Excel.Range オブジェクトが挙げられます。

Excel プロジェクトで使用できるホスト コントロールを次に示します。

Word プロジェクトで使用できるホスト コントロールを次に示します。

Office ドキュメントに追加されたホスト コントロールは、ネイティブな Office オブジェクトのように動作しますが、ホスト コントロールには、イベントやデータ バインディング機能を含む追加の機能があります。たとえば、Excel 内のネイティブな Microsoft.Office.Interop.Excel.Range オブジェクトのイベントをキャプチャするには、最初にワークシートの変更イベントを処理する必要があります。次に、変更が Microsoft.Office.Interop.Excel.Range 内で発生したかどうかを判断する必要があります。一方、Microsoft.Office.Tools.Excel.NamedRange ホスト コントロールには、直接処理できる Change イベントがあります。

ホスト項目とホスト コントロールの関係は、Windows フォームと Windows フォーム コントロールの関係によく似ています。Windows フォームにテキスト ボックス コントロールを配置するのと同じように、Microsoft.Office.Tools.Excel.Worksheet ホスト項目に Microsoft.Office.Tools.Excel.NamedRange コントロールを配置します。次の図は、ホスト項目とホスト コントロールの関係を示しています。

ホスト項目とホスト コントロールの間の関係

また、Visual Studio Tools for Office では、Windows フォーム コントロールを Word および Excel の文書領域に直接追加することによって、Office ソリューションで Windows フォーム コントロールを使用できます。詳細については、「Office ドキュメントでの Windows フォーム コントロールの概要」を参照してください。

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

Word サブ文書へのホスト コントロールおよび Windows フォーム コントロールの追加はサポートされていません。

文書へのホスト コントロールの追加

ドキュメント レベルのプロジェクトでは、次の方法を使用して、デザイン時に Word 文書や Excel ワークシートにホスト コントロールを追加できます。

  • ホスト コントロールを、デザイン時に、ネイティブ オブジェクトを追加する場合と同じ方法でドキュメントに追加します。

  • ツールボックスからホスト コントロールを文書やワークシートにドラッグします。Excel のホスト コントロールは Excel プロジェクトの [Excel コントロール] タブにあり、Word のホスト コントロールは、Word プロジェクトの [Word コントロール] タブにあります。

  • [データ ソース] ウィンドウから文書やワークシートに、ホスト コントロールをドラッグします。これによって、既にデータにバインドされているコントロールを追加できます。詳細については、「コントロールへのデータのバインド」を参照してください。

SP1 以降、ドキュメント レベルのプロジェクトおよびアプリケーション レベルのプロジェクトでは、実行時にドキュメントに対して一部のホスト コントロールを追加できるようになりました。詳細については、「実行時の Office ドキュメントへのコントロールの追加」を参照してください。

ホスト コントロールをドキュメントに追加する方法の詳細については、以下のトピックを参照してください。

ホスト コントロールの名前付け

ツールボックスから文書にホスト コントロールをドラッグすると、コントロールには自動的にコントロールの型と末尾の増分番号で構成される名前が付けられます。たとえば、ブックマークには bookmark1 や bookmark2 などの名前が付けられます。Word または Excel のネイティブ機能を使用してコントロールを追加する場合は、コントロールの作成時に特定の名前を指定できます。[プロパティ] ウィンドウで、[名前] プロパティの値を変更してコントロールの名前を変更することもできます。

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

ホスト コントロールの名前に予約語は使用できません。たとえば、NamedRange コントロールをワークシートに追加し、名前を "System" に変更すると、プロジェクトをビルドするときにエラーが発生します。

ホスト コントロールの削除

ドキュメント レベルのプロジェクトでは、Excel ワークシートまたは Word 文書のコントロールを選択し、Del キーを押すことによって、デザイン時にホスト コントロールを削除できます。ただし、NamedRange コントロールを削除するには、Excel の [名前の定義] ダイアログ ボックスを使用する必要があります。詳細については、「方法 : デザイン時に NamedRange コントロールを削除する」を参照してください。

デザイン時に文書にホスト コントロールを追加した場合は、それを実行時にプログラムで削除しないでください。次にコード内でコントロールを使用すると、例外がスローされます。ホスト コントロールの Delete メソッドは、実行時に文書に追加されたホスト コントロールのみを削除します。デザイン時に作成されたホスト コントロールの Delete メソッドを呼び出すと、例外がスローされます。

たとえば、NamedRangeDelete メソッドは、NamedRange がプログラムによってワークシートに追加された場合のみ (動的に作成されたホスト コントロールと呼ばれます)、これを正しく削除します。動的に作成されたホスト コントロールは、コントロール名を Worksheet.Controls プロパティまたは Document.Controls プロパティの Remove メソッドに渡すことによっても削除できます。詳細については、「実行時の Office ドキュメントへのコントロールの追加」を参照してください。

エンド ユーザーが実行時にドキュメントからホスト コントロールを削除すると、ソリューションは予想外の形で失敗することがあります。Word および Excel のドキュメント保護機能を使用して、ホスト コントロールが削除されないように保護できます。詳細については、「Word ドキュメント保護手法サンプル」および「Excel ドキュメント保護手法サンプル」を参照してください。

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

文書やワークシートの Shutdown イベント ハンドラでは、コントロールをプログラムで削除しないでください。Shutdown イベントが発生すると、UI 要素は使用できなくなります。アプリケーションが終了する前にコントロールを削除する場合は、BeforeClose や BeforeSave などの別のイベント ハンドラにコードを追加してください。

ホスト コントロール イベントのプログラミング

ホスト コントロールは Office オブジェクトを拡張したものですが、その 1 つがイベントの追加です。たとえば、Excel の Microsoft.Office.Interop.Excel.Range オブジェクトと Word の Microsoft.Office.Interop.Word.Bookmark オブジェクトはイベントを持ちませんが、Visual Studio Tools for Office では、プログラミング可能なイベントを追加することによってこれらのオブジェクトを拡張しています。Windows フォームのコントロールのイベントにアクセスするのと同じ方法で、これらのイベントにアクセスし、コーディングすることができます。Visual Basic の場合はイベント ドロップダウン リストを使用し、C# の場合はイベント プロパティ ページを使用します。詳細については、「チュートリアル : NamedRange コントロールのイベントのプログラミング
」を参照してください。

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

Excel の Application オブジェクトの EnableEvents プロパティを false に設定しないでください。false に設定すると、Excel でイベント (ホスト コントロールのイベントなど) が生成されなくなります。

参照

概念

コンテンツ コントロール

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

ホスト項目およびホスト コントロールのプログラム上の制限事項

その他の技術情報

Word ホスト コントロール

Excel のホスト コントロール

Office ドキュメントのコントロール

履歴の変更

日付

履歴

理由

2008 年 7 月

アプリケーション レベルのアドインのホスト項目およびホスト コントロールの使用に関する情報を追加

SP1 機能変更