次の方法で共有


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

更新 : 2007 年 11 月

対象

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

プロジェクトの種類

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

Microsoft Office のバージョン

  • 2007 Microsoft Office system

  • Microsoft Office 2003

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

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

  • カスタマイズについて

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

  • カスタマイズと 2007 Microsoft Office system との連携

  • カスタマイズと Microsoft Office 2003 との連携

Visual Studio Tools for Office のカスタマイズの使用に関する全般的な情報については、「Office ソリューションの開発の概要」、「Word 用のドキュメント レベルのカスタマイズのプログラミングについて」、および「Excel のドキュメント レベルのカスタマイズのプログラミングの概要」を参照してください。

カスタマイズについて

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

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

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

Visual Studio Tools for Office は、各アセンブリをそれぞれ異なるアプリケーション ドメインに読み込みます。このため、1 つのソリューションが正しく動作しない場合でも、それが原因で他のソリューションにエラーが発生することはありません。また、ドキュメントが閉じられている場合には、すべてのコードが停止され、アセンブリがメモリから確実にアンロードされます。ドキュメント レベルのカスタマイズは、1 つのアプリケーション ドメイン内の 1 つのドキュメントと連携するように設計されています。ドキュメント間のやり取りに対応するように設計されていません。アプリケーション ドメインの詳細については、「アプリケーション ドメインの概要」を参照してください。

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

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

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

Visual Studio Tools for 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 Tools for Office プロジェクトを作成する」を参照してください。

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

Excel 2007

Excel 2003

Excel ブック (.xlsx)

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

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

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

Excel テンプレート (.xltx)

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

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

Excel ブック (.xls)

Excel テンプレート (.xlt)

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

Word 2007

Word 2003

Word 文書 (.docx)

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

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

Word テンプレート (.dotx)

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

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

Word 文書 (.doc)

Word テンプレート (.dot)

Microsoft Office 2003 で作成された文書をベースとする 2007 Microsoft Office カスタマイズである場合、Visual Studio Tools for Office では文書のファイル形式は変更されません。

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

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

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

  • Word XML 文書 (*xml)

  • Word 2003 XML 文書 (*xml)

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

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

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

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

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

Visual Studio Tools for Office ランタイム

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

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

カスタマイズと 2007 Microsoft Office system との連携

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

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

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

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

2007 Microsoft Office System におけるカスタマイズの読み込みプロセス

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

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

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

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

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

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

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

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

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

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

カスタマイズと Microsoft Office 2003 との連携

ユーザーが Microsoft Office 2003 カスタマイズの一部であるドキュメントを開くと、アプリケーションはそのドキュメントに埋め込まれているされているアプリケーション マニフェストを使用して、最新バージョンのカスタマイズ アセンブリを特定し、読み込みます。埋め込まれたアプリケーション マニフェストは、アセンブリを直接指すことができます。または、アセンブリの更新を見つけるときに使用する配置マニフェストを指すこともできます。詳細については、「Office ソリューションにおけるアプリケーション マニフェストと配置マニフェスト」を参照してください。

埋め込まれたアプリケーション マニフェストは、実行時のストレージ コントロールという非表示のコントロールに格納されています。詳細については、「実行時のストレージ コントロールの概要」を参照してください。

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

Microsoft Office 2003 のカスタマイズ アーキテクチャ
Office 2003 カスタマイズ アーキテクチャ

Microsoft Office 2003 におけるカスタマイズの読み込みプロセス

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

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

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

  3. AddinLoader.dll は .NET Framework を読み込み、Visual Studio Tools for Office ランタイムのマネージ部分を起動します。

  4. Visual Studio Tools for Office ランタイムはアプリケーション ドメインを作成し、My Computer Zone を信頼しないようにするポリシーをそのアプリケーション ドメインに設定します。そして、コード アクセス セキュリティ ポリシー ストアを調べて、カスタマイズ アセンブリのポリシーを検出します。

  5. .NET Framework は、アセンブリから提示された証拠をポリシーと照合します。ポリシーに違反する場合はエラーが発生します。ポリシーに違反しない場合はプロセスが続行されます。

  6. カスタマイズが配置マニフェストを使用する場合、Visual Studio Tools for Office ランタイムはその配置マニフェストを使用して、アセンブリの更新をチェックします。更新が必要な場合は、更新がすぐに実行されます。

  7. Visual Studio Tools for Office ランタイムは、アセンブリをアプリケーション ドメインに読み込みます。

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

参照

概念

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

Visual Studio Tools for Office Runtime の概要

Visual Studio における Office ソリューションの作成

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

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

実行時のストレージ コントロールの概要

その他の技術情報

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

Office ソリューションにおけるセキュリティ