次の方法で共有


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

更新 : 2008 年 7 月

対象

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

プロジェクトの種類

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

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

Microsoft Office のバージョン

  • Word 2003

  • Word 2007

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

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

このトピックでは、Word オブジェクト モデルの次の側面について説明します。

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

  • Visual Studio Tools for Office プロジェクトの拡張オブジェクト

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

Visual Studio Tools for Office プロジェクトでのタスク実行を目的とした Word オブジェクト モデル使用の詳細については、次のトピックを参照してください。

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

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

Word オブジェクト モデルの階層内にあるオブジェクトのビューを次の図に示します。

Word オブジェクト モデル抽象
Word オブジェクト モデル グラフィック

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

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

  • Application オブジェクト

  • Document オブジェクト

  • Selection オブジェクト

  • Range オブジェクト

  • Bookmark オブジェクト

Visual Studio Tools for Office では、これらのオブジェクトの多くがホスト項目とホスト コントロールに拡張されます。これらの拡張オブジェクトは、ドキュメント レベルのプロジェクトで使用できます。また、Visual Studio 2008 Service Pack 1 (SP1) では、Word 2007 用のアプリケーション レベルのプロジェクトでも使用できるようになりました。ホスト項目とホスト コントロールは、データ バインディング機能やイベントなどの追加機能を備えています。ホスト コントロールの詳細については、「Visual Studio Tools for Office プロジェクトの拡張オブジェクト」を参照してください。

Application オブジェクト

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

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

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

Document オブジェクト

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

Visual Studio Tools for Office は、Microsoft.Office.Interop.Word.Document オブジェクトを拡張して、Microsoft.Office.Tools.Word.Document クラスを装備するようになりました。このクラスは、ネイティブ Microsoft.Office.Interop.Word.Document クラスのすべてのメンバに対するアクセスを提供するホスト項で、追加のイベントと、マネージ コントロールやスマート タグを追加する機能を備えています。詳細については、「ホスト項目とホスト コントロールの概要」を参照してください。

ドキュメント レベルのプロジェクトを作成すると、Visual Studio Tools for Office によって ThisDocument という名前のクラスが作成されます。これは、Microsoft.Office.Tools.Word.Document クラスから派生したクラスです。Microsoft.Office.Tools.Word.Document クラスのメンバにアクセスするには、ThisDocument クラスのコードから Me キーワードまたは this キーワードを使用するか、ThisDocument クラスの外部にあるコードから Globals.ThisDocument を使用します。たとえば、文書の最初の段落を選択するには次のコードを使用します。

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

SP1 では、Word 2007 用のアプリケーション レベルのアドインを使用して、実行時に Microsoft.Office.Tools.Word.Document ホスト項目を生成できます。生成されたホスト項目を使用して、関連付けられている文書にコントロールおよびスマート タグを追加することもできます。詳細については、「アプリケーション レベルのアドインにおける実行時の Word 文書や Excel ブックの拡張」を参照してください。

Selection オブジェクト

Selection オブジェクトは、現在選択されている領域を表します。Word のユーザー インターフェイスでテキストを太字にするなどの処理を行う場合に、テキストを選択、または強調表示してから、書式を適用します。Selection オブジェクトは、文書内に常に存在しています。テキストが選択されていない場合は、カーソル位置を表します。1 つの選択範囲で、連続していない複数のテキスト ブロックを囲むこともできます。

Range オブジェクト

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

  • 単独のカーソル位置、テキストの範囲、または文書全体で構成されます。

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

  • 現在の選択範囲を表す領域、または現在の選択範囲とは別の領域を表すことができます。

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

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

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

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

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

Visual Studio Tools for Office は、Microsoft.Office.Interop.Word.ContentControl オブジェクトをさまざまな種類のホスト コントロールに拡張します。Microsoft.Office.Interop.Word.ContentControl オブジェクトがコンテンツ コントロールで利用可能なさまざまな種類の UI を表示するのに対して、Visual Studio Tools for Office は各種 UI のさまざまなクラスを提供します。たとえば、RichTextContentControl を使用してリッチ テキスト コントロールを作成したり、DatePickerContentControl を使用して日付選択を作成したりすることができます。これらのホスト コントロールは、ネイティブな Microsoft.Office.Interop.Word.ContentControl のように動作しますが、付加的なイベントやデータ バインディング機能を備えています。

詳細については、「コンテンツ コントロール」を参照してください。

Bookmark オブジェクト

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

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

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

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

Visual Studio Tools for Office は、Microsoft.Office.Interop.Word.Bookmark オブジェクトをホスト コントロールに拡張します。Microsoft.Office.Tools.Word.Bookmark コントロールは、ネイティブな Microsoft.Office.Interop.Word.Bookmark のように動作しますが、追加のイベントやデータ バインディング機能を備えています。Windows フォームのテキスト ボックス コントロールにデータをバインドする場合と同じ方法で、文書のブックマーク コントロールにデータをバインドできます。

詳細については、「Bookmark コントロール」を参照してください。

Visual Studio Tools for Office プロジェクトの拡張オブジェクト

Word オブジェクト モデルによって提供されるネイティブ オブジェクトと、Visual Studio Tools for Office によって提供される拡張オブジェクト (ホスト項目やホスト コントロール) との違いを理解することは重要です。どちらのタイプのオブジェクトも、Word 2007 用のドキュメント レベルのプロジェクトおよびアプリケーション レベルのプロジェクトで使用できます。詳細については、「ホスト項目とホスト コントロールの概要」を参照してください。

相違点は、次の 4 つに分類されます。

  • デザイン時。拡張された Word コントロールをデザイン時にドキュメント レベルのカスタマイズに追加すると、ホスト項目として自動的に作成されます。たとえば、デザイナで文書にブックマークを追加した場合、コードが自動的に生成されて、ブックマークが Microsoft.Office.Tools.Word.Bookmark コントロールに拡張されます。

  • 実行時。ホスト項目は実行時に自動的に作成されます。Add メソッドを使って、実行時に文書を追加した場合、追加された文書は Microsoft.Office.Interop.Word.Document オブジェクトであり、Microsoft.Office.Tools.Word.Document ホスト項目が提供する追加機能を備えていません。Visual Studio Tools for Office によって提供されるヘルパー メソッドを使用して、プログラムによってホスト コントロールを文書に追加できます。詳細については、「ホスト項目およびホスト コントロールのプログラム上の制限事項」を参照してください。

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

    SP1 では、Word 2007 用のアプリケーション レベルのアドインを使用して、実行時に Microsoft.Office.Tools.Word.Document ホスト項目を作成できます。詳細については、「アプリケーション レベルのアドインにおける実行時の Word 文書や Excel ブックの拡張」を参照してください。

  • 新機能。ホスト項目およびホスト コントロールは、ネイティブ オブジェクトが持っていない機能を備えています。ホスト項目は、マネージ コントロールのコンテナとして機能し、追加のイベントを備えています。ホスト コントロールは、データにバインドでき、追加のイベントを備えています。

  • 型。ネイティブな Word オブジェクトは、Word 用のプライマリ相互運用機能アセンブリの Microsoft.Office.Interop.Word 名前空間で定義された型を使用します。ホスト項目とホスト コントロールは、Visual Studio Tools for Office ランタイムの Microsoft.Office.Tools.Word 名前空間で定義された型を使用します。

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

Word オブジェクト モデルで使用できるクラスの詳細については、以下のドキュメントを参照してください。

最初のリンク先では、Word のプライマリ相互運用機能アセンブリのクラスやインターフェイスに関する情報を提供しています。その他のリンク先では、Visual Basic for Applications (VBA) コードに公開される Word オブジェクト モデルに関する情報を提供しています。Visual Studio Tools for Office を使用している開発者にとって、各資料には一長一短があります。

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

この資料には、Visual Studio Tools for Office プロジェクトで使用できる、Word のプライマリ相互運用機能アセンブリにあるすべての型についての説明が記載されています。ただし、この資料には次のようなデメリットがあります。

  • 説明で取り上げられているのは、Word 2003 のプライマリ相互運用機能アセンブリの型だけです。Word 2007 のプライマリ相互運用機能アセンブリで導入された新しい型やメンバについては、Word 2007 用の VBA リファレンスを参照する必要があります。

  • 現時点では、コード例は提供されていません。

VBA リファレンス

VBA リファレンス内のオブジェクトとメンバはすべて、Visual Studio Tools for Office プロジェクトで使用するプライマリ相互運用機能アセンブリのクラスとメンバに対応します。たとえば、Word VBA ドキュメントに記載されている Document オブジェクトは、プライマリ相互運用機能アセンブリの Microsoft.Office.Interop.Word.Document クラスに相当します。

VBA リファレンスには、次のようなメリットがあります。

  • Word 2007 と Word 2003 の両方のオブジェクト モデルに関する説明があります。

  • ほとんどのメンバについてコード例が記載されています。

VBA リファレンスのデメリットは以下のとおりです。

  • 提供されている構文とコード例は、VBA に関するものだけです。紹介されているコード例を Visual Studio Tools for Office プロジェクトで使用するには、VBA コードを Visual Basic または Visual C# に変換しなければなりません。

プライマリ相互運用機能アセンブリの追加の型

プライマリ相互運用機能アセンブリには、VBA では利用できない型が多数あります。そうした追加の型は、Word の COM ベースのオブジェクト モデルに含まれるオブジェクトをマネージ コードに変換する場合に役立ちますが、コード内で直接使用することを目的としたものではありません。

詳細については、「Overview of Classes and Interfaces in the Office Primary Interop Assemblies」を参照してください。

参照

概念

文書の操作

文書内のテキストの操作

テーブルの操作

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

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

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

Office ソリューションの省略可能なパラメータについて

参照

Office プライマリ相互運用機能アセンブリ

その他の技術情報

Word ホスト コントロール

変更履歴

[日付]

[履歴]

原因

2008 年 7 月

アプリケーション レベルのアドインでの Document ホスト項目の作成に関する情報を追加

SP1 機能変更