ドキュメント レベルのカスタマイズのアーキテクチャ

Visual Studio 2010 には、Microsoft Office Word および Microsoft Office Excel のドキュメント レベルのカスタマイズを作成するためのプロジェクトが含まれています。 ここでは、ドキュメント レベルのカスタマイズの次の側面について説明します。

  • カスタマイズについて

  • カスタマイズのコンポーネント

  • カスタマイズと Microsoft Office アプリケーションの連携

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

ドキュメント レベルのカスタマイズの作成の概要については、「Office ソリューションの開発の概要」、「Word 用のドキュメント レベルのカスタマイズのプログラミングについて」および「Excel のドキュメント レベルのカスタマイズのプログラミングの概要」を参照してください。

カスタマイズについて

Visual Studio の Office 開発ツールを使用してドキュメント レベルのカスタマイズをビルドする場合は、特定の文書に関連付けられたマネージ コード アセンブリを作成します。 アセンブリがリンクされている文書やブックは、マネージ コード拡張機能がある、と言い表されます。 詳細については、「Office ソリューションのアセンブリの概要」を参照してください。

ユーザーがドキュメントを開くと、Microsoft Office アプリケーションによってアセンブリが読み込まれます。 アセンブリが読み込まれると、ドキュメントが開いている間、カスタマイズはイベントに応答できます。 また、ドキュメントが開いている間、カスタマイズはオブジェクト モデルを呼び出し、アプリケーションを自動化して拡張することもできます。.NET Framework 内の任意のクラスを使用することも可能です。

アセンブリは、アプリケーションのプライマリ相互運用機能アセンブリを介してアプリケーションの COM コンポーネントとの通信を行います。 詳細については、「Office プライマリ相互運用機能アセンブリ」および「Office ソリューションの開発の概要」を参照してください。

複数のドキュメント レベルのカスタマイズを同時に開くと、各アセンブリは異なるアプリケーション ドメインに読み込まれます。 このため、1 つのソリューションが正しく動作しない場合でも、それが原因で他のソリューションにエラーが発生することはありません。 ドキュメント レベルのカスタマイズは、1 つのアプリケーション ドメイン内の 1 つのドキュメントと連携するように設計されています。 ドキュメント間のやり取りに対応するようには設計されていません。 アプリケーション ドメインの詳細については、「アプリケーション ドメイン」を参照してください。

注意

Visual Studio の Office 開発ツールを使用して作成するドキュメント レベルのカスタマイズは、エンド ユーザーがアプリケーションを起動したときのみ使用されることを目的としています。 アプリケーションがプログラムで起動された場合 (オートメーション機能を使用する場合など)、カスタマイズは予期したとおりに動作しないことがあります。

デザイン時と実行時のエクスペリエンス

ドキュメント レベルのカスタマイズのアーキテクチャを理解すると、ソリューションのデザイン時と実行時におけるエクスペリエンスについて理解を深めることができます。

デザイン時

デザイン時のエクスペリエンスには、次のような手順が含まれます。

  1. 開発者は、ドキュメント レベルのプロジェクトを Visual Studio で作成します。 このプロジェクトには、ドキュメントと、ドキュメントとは分離して実行されるアセンブリが組み込まれます。 ドキュメントは既に存在している (設計者によって作成済み) 場合もあります。また、プロジェクトと共に新しいドキュメントを作成することもできます。

  2. 設計者 (プロジェクトを作成する開発者、または他のユーザーのいずれか) は、エンド ユーザー向けにドキュメントの最終的な外観をしあげます。

実行時

実行時のエクスペリエンスには、次のような手順が含まれます。

  1. エンド ユーザーが、マネージ コード拡張機能を実装している文書またはブックを開きます。

  2. 文書またはブックにより、コンパイルされたアセンブリが読み込まれます。

  3. ユーザーが文書またはブックで操作すると、アセンブリがイベントに応答します。

開発者とエンド ユーザーの立場の違い

開発者は主に Visual Studio で作業を行い、エンド ユーザーは Word または Excel で作業を行うため、ドキュメント レベルのカスタマイズを理解するには、次に示す 2 つの視点に立つことが必要です。

開発者の視点

エンド ユーザーの視点

開発者は Visual Studio を使用して、Word および Excel にアクセス可能なコードを記述します。

Word または Excel を実行する実行可能ファイルを作成しているように思えますが、実際の処理は別の方法で行われます。 ドキュメントにはアセンブリが関連付けられており、そのアセンブリへのポインターが含まれています。 ドキュメントを開くと、Word または Excel はアセンブリを検索し、すべてのイベント処理に呼応して動作します。

ソリューションを使用するには、他の Microsoft Office ファイルを開く場合と同様に、文書またはブックを開く (または、テンプレートから新しいドキュメントを作成する) だけです。

アセンブリにより、文書またはブックをカスタマイズできます。たとえば、現在のデータを基に文書やブックを自動生成したり、情報の入力を求めるダイアログ ボックスを表示したりできます。

ドキュメント レベルのカスタマイズでサポートされているドキュメント形式

カスタマイズ プロジェクトを作成するときには、プロジェクト内で使用するドキュメントの形式を選択できます。 詳細については、「方法: Visual Studio で Office プロジェクトを作成する」を参照してください。

Excel および Word のドキュメント レベルのカスタマイズで使用可能なドキュメント形式を、次の表に示します。

Excel

Word

Excel ブック (.xlsx)

Excel マクロ有効ブック (.xlsm)

Excel バイナリ ブック (.xlsb)

Excel 97 ~ Excel 2003 のブック (.xls)

Excel テンプレート (.xltx)

Excel マクロ有効テンプレート (.xltm)

Excel 97 ~ Excel 2003 のテンプレート (.xlt)

Word 文書 (.docx)

Word マクロ有効文書 (.docm)

Word 97 ~ Word 2003 の文書 (.doc)

Word テンプレート (.dotx)

Word マクロ有効テンプレート (.dotm)

Word 97 ~ Word 2003 のテンプレート (.dot)

サポートされている形式のドキュメントに対してだけ、マネージ コード拡張機能を設計する必要があります。 そうしないと、アプリケーションでドキュメントを開くときに、特定のイベントが発生しない可能性があります。 たとえば、Excel XML スプレッドシート形式または Web ページ (.htm、.html) 形式で保存されたブックでマネージ コード拡張機能を使用すると、Open イベントは発生しません。

.xml ファイル名拡張子を持つ Word 文書のサポート

ドキュメント レベルのプロジェクト テンプレートを使用して、次のファイル形式に基づくプロジェクトを作成することはできません。

  • Word XML 文書 (*xml)

  • Word 2003 XML 文書 (*xml)

エンド ユーザーがこれらのファイル形式でカスタマイズを使用できるようにするには、前の表に示した、サポートされているいずれかのファイル形式に基づくカスタマイズを作成して配置します。 このカスタマイズをインストールすると、エンド ユーザーは文書を Word XML ドキュメント (*xml) 形式または Word 2003 XML ドキュメント (*xml) 形式で保存できます。カスタマイズは、引き続き、予期したとおりに動作します。

カスタマイズのコンポーネント

カスタマイズの主要なコンポーネントは、ドキュメントとアセンブリです。 これらのコンポーネントに加えて、Microsoft Office アプリケーションがカスタマイズを検出して読み込むときに重要な役割を果たすものがあります。

配置マニフェストとアプリケーション マニフェスト

カスタマイズは、配置マニフェストとアプリケーション マニフェストを使用して、最新バージョンのカスタマイズ アセンブリを特定し、読み込みます。 配置マニフェストは、最新のアプリケーション マニフェストを指します。 アプリケーション マニフェストは、カスタマイズ アセンブリを指し、エントリ ポイント クラス (1 つまたは複数のクラス) を指定して、アセンブリ内で実行します。 詳細については、「Office ソリューションにおけるアプリケーション マニフェストと配置マニフェスト」を参照してください。

Visual Studio Tools for Office ランタイム

Visual Studio の Office 開発ツールを使用して作成したドキュメント レベルのカスタマイズを実行するには、エンド ユーザーのコンピューターに Visual Studio Tools for Office Runtime がインストールされている必要があります。 Visual Studio Tools for Office Runtime には、カスタマイズ アセンブリを読み込むアンマネージ コンポーネントが含まれています。また、一連のマネージ アセンブリも含まれています。 これらのマネージ アセンブリにより、カスタマイズ コードがホスト アプリケーションを自動化して拡張するために使用するオブジェクト モデルが提供されます。

詳細については、「Visual Studio Tools for Office Runtime の概要」を参照してください。

カスタマイズと Microsoft Office アプリケーションの連携

ユーザーが Microsoft Office カスタマイズの一部であるドキュメントを開くと、アプリケーションはそのドキュメントにリンクされている配置マニフェストを使用して、最新バージョンのカスタマイズ アセンブリを特定し、読み込みます。 配置マニフェストの場所は、_AssemblyLocation というカスタム ドキュメント プロパティに格納されています。 この場所を示す文字列は、ソリューションをビルドするときにプロパティに挿入されます。

配置マニフェストはアプリケーション マニフェストを指し、アプリケーション マニフェストは最新のアセンブリを指します。 詳細については、「Office ソリューションにおけるアプリケーション マニフェストと配置マニフェスト」を参照してください。

ドキュメント レベルのカスタマイズに関する基本アーキテクチャを、次の図に示します。

カスタマイズ アーキテクチャ

2007 Office カスタマイズ アーキテクチャ

注意

.NET Framework 4 を対象とする Office ソリューションでは、ソリューションは PIA を直接呼び出す代わりに、ソリューション アセンブリに埋め込まれた PIA 型情報を使用してホスト アプリケーションのオブジェクト モデルを呼び出します。 詳細については、「Office ソリューションのデザインと作成」を参照してください。

読み込みプロセス

ユーザーが Microsoft Office ソリューションの一部であるドキュメントを開くと、次の処理が実行されます。

  1. Microsoft Office アプリケーションはカスタム ドキュメント プロパティをチェックして、そのドキュメントに関連付けられているマネージ コード拡張機能があるかどうかを調べます。 詳細については、「カスタム ドキュメント プロパティの概要」を参照してください。

  2. マネージ コード拡張機能がある場合、アプリケーションは VSTOEE.dll を読み込みます。VSTOEE.dll によって、VSTOLoader.dll が読み込まれます。 これらは、Visual Studio 2010 Tools for Office Runtime のローダー コンポーネントであるアンマネージ DLL です。 詳細については、「Visual Studio Tools for Office Runtime の概要」を参照してください。

  3. VSTOLoader.dll は .NET Framework を読み込み、Visual Studio Tools for Office Runtime のマネージ部分を起動します。

  4. ドキュメントがローカル コンピューター以外の場所から開かれている場合、Visual Studio Tools for Office Runtime は、該当する Office アプリケーション用に設定された [セキュリティ センターの設定][信頼できる場所] の一覧にドキュメントの場所が載っていることを確認します。 ドキュメントの場所が信頼できる場所でない場合、カスタマイズは信頼されず、読み込みプロセスはここで停止します。

  5. Visual Studio Tools for Office Runtime は、ソリューションをインストールし (まだインストールされていない場合)、最新のアプリケーション マニフェストと配置マニフェストをダウンロードし、一連のセキュリティ チェックを実行します。 詳細については、「Office ソリューションのセキュリティ保護」を参照してください。

  6. カスタマイズを信頼して実行できる場合、Visual Studio Tools for Office Runtime は配置マニフェストとアプリケーション マニフェストを使用して、アセンブリの更新をチェックします。 利用できる新しいバージョンのアセンブリが存在する場合、ランタイムは、クライアント コンピューターの ClickOnce キャッシュに新しいバージョンのアセンブリをダウンロードします。 詳細については、「Office ソリューションの配置」を参照してください。

  7. Visual Studio Tools for Office Runtime は、カスタマイズ アセンブリを読み込むときに使用する、新しいアプリケーション ドメインを作成します。

  8. Visual Studio Tools for Office Runtime は、カスタマイズ アセンブリをアプリケーション ドメインに読み込みます。

  9. Visual Studio Tools for Office Runtime は、カスタマイズ アセンブリ内の Startup イベント ハンドラーを呼び出します。 詳細については、「Office プロジェクトのイベント」を参照してください。

参照

概念

アプリケーション レベルのアドインのアーキテクチャ

Visual Studio Tools for Office Runtime の概要

Office ソリューションのセキュリティ保護

Office ソリューションのデザインと作成

カスタム ドキュメント プロパティの概要

ドキュメント レベルのカスタマイズのキャッシュ データ

その他の技術情報

Visual Studio の Office ソリューションのアーキテクチャ