次の方法で共有


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

ホスト項目とホスト コントロールは、Visual Studio の Office 開発ツールを使用して作成された Office ソリューションのプログラミング モデルを提供するのに役立つ型です。 ホスト項目とホスト コントロールは、COM に基づく Microsoft Office Word および Microsoft Office Excel のオブジェクト モデルと対話します。これは、Windows フォーム コントロールなどのマネージド オブジェクトの操作と同様です。

適用対象: このトピックの情報は、Excel および Word のドキュメント レベルのプロジェクトと VSTO アドイン プロジェクトに適用されます。 詳細については、「 Office アプリケーションとプロジェクトの種類で使用できる機能」を参照してください。

ホスト項目

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

  • Document

  • Workbook

  • Worksheet

  • ChartSheet

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

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

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

  • より豊富なイベント モデル。 ネイティブの Word および Excel オブジェクト モデルの一部のドキュメント、ブック、ワークシート のイベントは、アプリケーション レベルでのみ発生します。 ホスト項目は、特定のドキュメントのイベントを簡単に処理できるように、ドキュメント レベルでこれらのイベントを提供します。

ドキュメント レベルのプロジェクトのホスト項目を理解する

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

DocumentおよびWorksheetホスト項目には、Windows フォーム デザイナーのように、ドキュメントまたはワークシートの視覚的表現であるデザイナーが関連付けられています。 このデザイナーを使用すると、Word または Excel でドキュメントまたはワークシートの内容を直接変更したり、コントロールをデザイン画面にドラッグしたりできます。 詳細については、「 ドキュメント ホスト項目 」および 「ワークシート ホスト項目」を参照してください。

Workbook ホスト項目は、ユーザー インターフェイスを持つコントロールのコンテナーとして機能しません。 代わりに、このホスト項目のデザイナーはコンポーネント トレイとして機能します。これにより、 DataSetなどのコンポーネントをデザイン サーフェイスにドラッグできます。 詳細については、ワークブックのホスト項目を参照してください。

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

VSTO アドイン プロジェクトのホスト項目について

VSTO アドインを作成する場合、既定ではホスト項目にアクセスできません。 ただし、実行時に Word アドインと Excel VSTO アドインで DocumentWorkbook、および Worksheet ホスト項目を生成できます。

ホスト項目を生成したら、ドキュメントにコントロールを追加するなどのタスクを実行できます。 詳細については、「実行時に VSTO アドインで Word 文書と Excel ブックを拡張する」を参照してください。

ホスト コントロール

ホスト コントロールは、 Microsoft.Office.Interop.Word.ContentControl オブジェクトや Range オブジェクトなど、Word および Excel オブジェクト モデルのさまざまなユーザー インターフェイス (UI) オブジェクトを拡張します。

Excel プロジェクトでは、次のホスト コントロールを使用できます。

  • グラフ コントロール

  • ListObject コントロール

  • NamedRange コントロール

  • XmlMappedRange コントロール

    Word プロジェクトでは、次のホスト コントロールを使用できます。

  • ブックマーク制御

  • コンテンツ コントロール

  • XMLNode コントロール

  • XMLNodes コントロール

    Office ドキュメントに追加されるホスト コントロールは、ネイティブ Office オブジェクトと同様に動作します。ただし、ホスト コントロールには、イベントやデータ バインディング機能などの追加機能があります。 たとえば、Excel でネイティブ Range オブジェクトのイベントをキャプチャする場合は、まずワークシートの変更イベントを処理する必要があります。 その後、 Range内で変更が発生したかどうかを確認する必要があります。 これに対し、 NamedRange ホスト コントロールには、直接処理できる Change イベントがあります。

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

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

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

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

ドキュメントにホスト コントロールを追加する

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

ホスト コントロールに名前を付けます

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

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

ホスト コントロールを削除する

ドキュメント レベルのプロジェクトでは、Excel ワークシートまたは Word 文書のコントロールを選択し、Delete キーを押すと、デザイン時にホスト コントロールを 削除 できます。 ただし、 コントロールを削除するには、Excel の [NamedRange] ダイアログ ボックスを使用する必要があります。

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

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

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

ドキュメントまたはワークシートの Shutdown イベント ハンドラー中は、プログラムによってコントロールを削除しないでください。 Shutdown イベントが発生すると、UI 要素は使用できなくなります。 アプリケーションを閉じる前にコントロールを削除する場合は、 BeforeCloseBeforeSaveなどの別のイベント ハンドラーにコードを追加します。

ホスト制御イベントに対するプログラム

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

Excel のEnableEvents オブジェクトのApplication プロパティを false に設定しないでください。 このプロパティを false に設定すると、ホスト コントロールのイベントを含め、Excel がイベントを発生させるのを防ぐことができます。