Share via


Word オブジェクト モデルの概要

Visual Studio で Word ソリューションを開発するときは、Word オブジェクト モデルと対話します。 このオブジェクト モデルは、Word のプライマリ相互運用機能アセンブリで提供されるクラスとインターフェイスで構成されています。これらのクラスとインターフェイスは Microsoft.Office.Interop.Word 名前空間に定義されています。

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

ここでは、Word オブジェクト モデルの概要を簡単に説明します。 Word オブジェクト モデル全体の詳細に関するリソースについては、「Word オブジェクト モデルのドキュメントを使用する」を参照してください。

Word オブジェクト モデルを使用して特定のタスクを実行する方法については、次のトピックを参照してください。

Word オブジェクト モデルについて

Word では、何百ものオブジェクトが操作対象になります。 これらのオブジェクトは、ユーザー インターフェイスとほぼ同様の階層形式で編成されています。 階層の最上位には、 Application オブジェクトがあります。 このオブジェクトは、Word の現在のインスタンスを表します。 Application オブジェクトには、 DocumentSelectionBookmark、および Range オブジェクトが含まれています。 これらの各オブジェクトには数多くのメソッドとプロパティがあり、それらにアクセスしてオブジェクトを処理したり、オブジェクトと対話したりできます。

次の図は、これらのオブジェクトを Word オブジェクト モデルの階層で一元的に示したものです。

Word Object Model graphic

一見すると、オブジェクトが重複しているように見えます。 たとえば、 Document オブジェクトと Selection オブジェクトは両方とも Application オブジェクトのメンバーですが、 Document オブジェクトは Selection オブジェクトのメンバーでもあります。 Document オブジェクトと Selection オブジェクトの両方に、 Bookmark オブジェクトと Range オブジェクトが含まれています。 このような重複は、同じ型のオブジェクトにアクセスする方法が複数存在するために生じます。 たとえば、 Range オブジェクトに書式を適用するときにも、現在の選択範囲、特定の段落、セクション、または文書全体を範囲としてアクセスしたいことがあります。

この後のセクションでは、最上位レベルのオブジェクトとそれらの相互関係について、簡単に説明します。 これらのオブジェクトには次の 5 つが含まれます。

  • アプリケーション オブジェクト

  • Document オブジェクト

  • Selection オブジェクト

  • Range オブジェクト

  • Bookmark オブジェクト

    Visual Studio の Office プロジェクトには、Word オブジェクト モデルだけでなく、Word オブジェクト モデルの一部のオブジェクトを拡張する ホスト項目ホスト コントロール が用意されています。 ホスト項目とホスト コントロールは、拡張元の Word オブジェクトと同様に動作しますが、データ バインディング機能や付加的なイベントなどの追加機能も備えています。 詳細については、「拡張オブジェクトを使用して Word を自動化する」および「ホスト項目とホスト コントロールの概要」を参照してください。

アプリケーション オブジェクト

Application オブジェクトは Word アプリケーションを表し、他のすべてのオブジェクトの親になります。 そのメンバーは、通常、Word 全体に適用されます。 このオブジェクトのプロパティとメソッドを使用して、Word の環境を制御できます。

VSTO アドイン プロジェクトで Application オブジェクトにアクセスするには、 Application クラスの ThisAddIn フィールドを使用します。 詳細については、「VSTO アドインのプログラミング」を参照してください。

ドキュメント レベルのプロジェクトで Application オブジェクトにアクセスするには、 Application クラスの ThisDocument プロパティを使用します。

Document オブジェクト

Document オブジェクトは、Word プログラミングの中心となるオブジェクトです。 これは、文書とそのすべてのコンテンツを表します。 文書を開いたり、新しい文書を作成したりすると、新しい Document オブジェクトが作成され、 Documents オブジェクトの Application コレクションに追加されます。 フォーカスがある文書は、作業中の文書と呼ばれます。 これは ActiveDocument オブジェクトの Application プロパティによって表されます。

Visual Studio の Office 開発ツールには、 Document オブジェクトを拡張する Document 型が用意されています。 この型は、 オブジェクトのすべての機能に対するアクセスを提供する ホスト項目 Document であり、追加のイベントと、マネージド コントロールを追加する機能を備えています。

ドキュメント レベルのプロジェクトを作成する場合は、プロジェクトで生成された Document クラスを使用して ThisDocument のメンバーにアクセスできます。 Document ホスト項目のメンバーにアクセスするには、ThisDocument クラスのコードで Me キーワードまたは this キーワードを使用するか、ThisDocument クラスの外部にあるコードで Globals.ThisDocument を使用します。 詳細については、「プログラムによるドキュメントレベルのカスタマイズ」を参照してください。 たとえば、文書の最初の段落を選択するには次のコードを使用します。

this.Paragraphs[1].Range.Select();

VSTO アドイン プロジェクトでは、実行時に Document ホスト項目を生成できます。 生成されたホスト項目を使用して、関連付けられた文書にコントロールを追加できます。 詳細については、「実行時に VSTO アドインの Word 文書と Excel ブックを拡張する」を参照してください。

Selection オブジェクト

Selection オブジェクトは、現在選択されている領域を表します。 Word のユーザー インターフェイスで太字のテキストなどの操作を実行するときは、テキストを選択 (強調表示) してから書式を適用します。 Selection オブジェクトは、文書内に常に存在します。 何も選択されていない場合は、挿入ポイントを表します。 1 つの選択範囲で、連続していない複数のテキスト ブロックを囲むこともできます。

Range オブジェクト

Range オブジェクトは、文書内の連続した領域を表し、開始文字位置と終了文字位置によって定義されます。 Range オブジェクトは 1 つに限定されていません。 同じ文書内に複数の Range オブジェクトを定義できます。 Range オブジェクトには次の特徴があります。

  • 単独の挿入ポイント、テキストの範囲、または文書全体で構成されます。

  • 空白、タブ文字、段落記号などの非印刷文字を含みます。

  • 現在の選択範囲によって表される領域、または現在の選択範囲とは異なる領域を表すことができます。

  • 常に表示されている選択範囲とは異なり、文書内には表示されません。

  • 文書と共に保存されることはなく、コードの実行中にのみ存在します。

    範囲の末尾にテキストを挿入すると、挿入したテキストが含まれるように自動的に範囲が拡張されます。

コンテンツ コントロール オブジェクト

ContentControl は、Word 文書のテキストおよびその他の種類のコンテンツの入力と表示を制御する方法を提供します。 ContentControl は、Word 文書内で使用するために最適化されたさまざまな種類の UI (リッチ テキスト コントロール、日付選択、コンボ ボックスなど) を表示できます。 ContentControl を使用して、ユーザーが文書やテンプレートのセクションを編集できないようにすることもできます。

Visual Studio は、 ContentControl オブジェクトをさまざまな種類のホスト コントロールに拡張します。 ContentControl オブジェクトがコンテンツ コントロールで利用可能なさまざまな種類の UI を表示するのに対して、Visual Studio は各コンテンツ コントロールに対応するさまざまな型を提供します。 たとえば、 RichTextContentControl を使用してリッチ テキスト コントロールを作成したり、 DatePickerContentControl を使用して日付選択を作成したりできます。 これらのホスト コントロールは、ネイティブな ContentControlと同様に動作しますが、付加的なイベントやデータ バインディング機能を備えています。 詳細については、「コンテンツ コントロール」を参照してください。

Bookmark オブジェクト

Bookmark オブジェクトは、開始位置と終了位置によって文書内の連続した領域を表します。 ブックマークは、文書内の場所にマークを付けたり、文書内のテキストのコンテナーとして使用したりできます。 Bookmark オブジェクトは、挿入ポイントで構成されますが、文書全体になることもあります。 Bookmark には、 Range オブジェクトとは異なる次の特徴があります。

  • デザイン時に、ブックマークに名前を付けることができます。

  • Bookmark オブジェクトは文書と共に保存されるため、コードの実行を停止したり文書を閉じたりしても、削除されません。

  • View オブジェクトの ShowBookmarks プロパティを false または true に設定することにより、ブックマークの表示と非表示を切り替えることができます。

    Visual Studio は Bookmark ホスト コントロールを提供することで Bookmark オブジェクトを拡張します。 Bookmark ホスト コントロールは、ネイティブな Bookmarkと同様に動作しますが、付加的なイベントやデータ バインディング機能を備えています。 Windows フォームのテキスト ボックス コントロールにデータをバインドするのと同じ方法で、文書の Bookmark コントロールにデータをバインドできます。 詳細については、「Bookmark コントロール」を参照してください。

Word オブジェクト モデルのドキュメントを使用する

Word オブジェクト モデルの詳細については、Word プライマリ相互運用機能アセンブリ (PIA) のリファレンス、および Visual Basic for Applications (VBA) オブジェクト モデルのリファレンスを参照してください。

プライマリ相互運用機能アセンブリのリファレンス

Word PIA のリファレンス ドキュメントでは、Word プライマリ相互運用機能アセンブリの型について説明しています。 このドキュメントは、「Word 2010 プライマリ相互運用機能アセンブリのリファレンス」から入手できます。

PIA のクラスとインターフェイスの違い、PIA のイベントの実装方法など、Word PIA の設計の詳細については、Office プライマリ相互運用機能アセンブリのクラスとインターフェイスの概要に関する記事を参照してください。

VBA オブジェクト モデルのリファレンス

VBA オブジェクト モデルのリファレンスでは、VBA コードに公開される Word オブジェクト モデルについて説明しています。 詳細については、Word 2010 オブジェクト モデル リファレンスに関する記事を参照してください。

VBA オブジェクト モデルのリファレンス内のオブジェクトとメンバーはすべて、Word PIA の型とメンバーに対応します。 たとえば、VBA オブジェクト モデルのリファレンス内の Document オブジェクトは、Word PIA の Document オブジェクトに対応します。 VBA オブジェクト モデルのリファレンスでは、ほとんどのプロパティ、メソッド、およびイベントのコード例を紹介しています。ただし、Visual Studio を使用して作成した Word プロジェクトでこのリファレンス内の VBA コードを使用するには、それらを Visual Basic または Visual C# に変換する必要があります。