ドキュメントレベルのカスタマイズのアーキテクチャArchitecture of document-level customizations

Visual Studio 2013Visual Studio 2013 には、Microsoft Office Word および Microsoft Office Excel のドキュメント レベルのカスタマイズを作成するためのプロジェクトが含まれています。includes projects for creating document-level customizations for Microsoft Office Word and Microsoft Office Excel. ここでは、ドキュメント レベルのカスタマイズの次の側面について説明します。This topic describes the following aspects of document-level customizations:

カスタマイズについてUnderstand customizations

Visual Studio の Office 開発ツールを使用してドキュメント レベルのカスタマイズをビルドする場合は、特定の文書に関連付けられたマネージド コード アセンブリを作成します。When you use the Office developer tools in Visual Studio to build a document-level customization, you create a managed code assembly that is associated with a specific document. アセンブリがリンクされている文書やブックは、マネージド コード拡張機能がある、と言い表されます。A document or workbook with a linked assembly is said to have managed code extensions. 詳細については、Office ソリューションのデザインと作成を参照してください。For more information, see Design and create Office solutions.

ユーザーがドキュメントを開くと、Microsoft Office アプリケーションによってアセンブリが読み込まれます。When a user opens the document, the assembly is loaded by the Microsoft Office application. アセンブリが読み込まれると、ドキュメントが開いている間、カスタマイズはイベントに応答できます。After the assembly is loaded, the customization can respond to events while the document is open. また、ドキュメントが開いている間、カスタマイズはオブジェクト モデルを呼び出し、アプリケーションを自動化して拡張することもできます。 .NET Framework.NET Framework内の任意のクラスを使用することも可能です。The customization can also call into the object model to automate and extend the application while the document is open, and it can use any of the classes in the .NET Framework.NET Framework.

アセンブリは、アプリケーションのプライマリ相互運用機能アセンブリを介してアプリケーションの COM コンポーネントとの通信を行います。The assembly communicates with the application's COM components through the primary interop assembly of the application. 詳細については、「 office プライマリ相互運用機能アセンブリ」と「 office ソリューション開発の概要(VSTO)」を参照してください。For more information, see Office primary interop assemblies and Office solutions development overview (VSTO).

複数のドキュメント レベルのカスタマイズを同時に開くと、各アセンブリは異なるアプリケーション ドメインに読み込まれます。If a user opens multiple document-level customizations at the same time, each assembly is loaded in a different application domain. このため、1 つのソリューションが正しく動作しない場合でも、それが原因で他のソリューションにエラーが発生することはありません。This means that one solution that behaves incorrectly cannot cause other solutions to fail. ドキュメント レベルのカスタマイズは、1 つのアプリケーション ドメイン内の 1 つのドキュメントと連携するように設計されています。Document-level customizations are designed to work with a single document in a single application domain. ドキュメント間のやり取りに対応するようには設計されていません。They are not designed for cross-document communication. アプリケーションドメインの詳細については、「アプリケーションドメイン」を参照してください。For more information about application domains, see Application domains.

Note

Visual Studio の Office 開発ツールを使用して作成するドキュメント レベルのカスタマイズは、エンド ユーザーがアプリケーションを起動したときのみ使用されることを目的としています。Document-level customizations that you create by using the Office developer tools in Visual Studio are designed to be used only when the application is started by an end user. アプリケーションがプログラムで起動された場合 (オートメーション機能を使用する場合など)、カスタマイズは予期したとおりに動作しないことがあります。If the application is started programmatically, for example, by using Automation, the customization might not work as expected.

デザイン時および実行時のエクスペリエンスDesign-time and run-time experiences

ドキュメント レベルのカスタマイズのアーキテクチャを理解すると、ソリューションのデザイン時と実行時におけるエクスペリエンスについて理解を深めることができます。To understand the architecture of document-level customizations, it helps to understand the experiences of designing a solution and of running a solution.

デザイン時Design time

デザイン時のエクスペリエンスには、次のような手順が含まれます。The design-time experience includes the following steps:

  1. 開発者は、ドキュメント レベルのプロジェクトを Visual StudioVisual Studioで作成します。The developer creates a document-level project in Visual StudioVisual Studio. このプロジェクトには、ドキュメントと、ドキュメントとは分離して実行されるアセンブリが組み込まれます。The project includes the document and the assembly that runs behind the document. ドキュメントは既に存在している (デザイナーによって作成された) か、プロジェクトと共に新しいドキュメントを作成することができます。The document might already exist (created by a designer), or a new document can be created along with the project.

  2. 設計者 (プロジェクトを作成する開発者、または他のユーザーのいずれか) は、エンド ユーザー向けにドキュメントの最終的な外観を仕上げます。The designer—either the developer who creates the project or someone else—creates the final look and feel of the document for the end user.

ランタイムRuntime

実行時のエクスペリエンスには、次のような手順が含まれます。The run-time experience includes the following steps:

  1. エンド ユーザーが、マネージド コード拡張機能を実装している文書またはブックを開きます。The end user opens a document or workbook that has managed code extensions.

  2. 文書またはブックにより、コンパイルされたアセンブリが読み込まれます。The document or workbook loads the compiled assembly.

  3. ユーザーが文書またはブックで操作すると、アセンブリがイベントに応答します。The assembly responds to events as the user works in the document or workbook.

開発者とエンドユーザーの視点の比較Developer and end-user perspective compared

開発者は主に Visual StudioVisual Studioで作業を行い、エンド ユーザーは Word または Excel で作業を行うため、ドキュメント レベルのカスタマイズを理解するには、次に示す 2 つの視点に立つことが必要です。Because the developer works primarily in Visual StudioVisual Studio, and the end user works in Word or Excel, there are two ways of understanding document-level customizations.

開発者の視点Developer's Perspective エンド ユーザーの視点End User's Perspective
開発者は Visual StudioVisual Studioを使用して、Word および Excel にアクセス可能なコードを記述します。Using Visual StudioVisual Studio, the developer writes code that is accessible to Word and Excel.

Word または Excel を実行する実行可能ファイルを作成しているように思えますが、実際の処理は別の方法で行われます。Although it might seem that the developer is creating an executable file that runs Word or Excel, the process actually works the other way around. ドキュメントにはアセンブリが関連付けられており、そのアセンブリへのポインターが含まれています。The document is associated with an assembly and contains a pointer to that assembly. ドキュメントを開くと、Word または Excel はアセンブリを検索し、すべてのイベント処理に呼応して動作します。When the document opens, Word or Excel locates the assembly and runs the code in response to all handled events.
ソリューションを使用するには、他の Microsoft Office ファイルを開く場合と同様に、文書またはブックを開く (または、テンプレートから新しいドキュメントを作成する) だけです。Those who use the solution simply open the document or workbook (or create a new document from a template) just as they would open any other Microsoft Office file.

アセンブリにより、文書またはブックをカスタマイズできます。たとえば、現在のデータを基に文書やブックを自動生成したり、情報の入力を求めるダイアログ ボックスを表示したりできます。The assembly provides customizations in the document or workbook such as automatically populating it with current data, or showing a dialog box to request information.

ドキュメントレベルのカスタマイズでサポートされているドキュメント形式Supported document formats for document-level customizations

カスタマイズ プロジェクトを作成するときには、プロジェクト内で使用するドキュメントの形式を選択できます。When you create a customization project, you can choose the format of the document that you want to use in the project. 詳細については、「方法 :Visual Studio で Office プロジェクトを作成する方法」を参照してください。For more information, see How to: Create Office projects in Visual Studio.

Excel および Word のドキュメント レベルのカスタマイズで使用可能なドキュメント形式を、次の表に示します。The following table lists the document formats you can use in document-level customizations for Excel and Word.

ExcelExcel WordWord
Excel ブック ( .xlsx)Excel workbook (.xlsx)

Excel マクロ有効ブック ( .xlsm)Excel macro-enabled workbook (.xlsm)

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

Excel 97-2003 ブック ( .xls)Excel 97-2003 workbook (.xls)

Excel テンプレート (xltx)Excel template (.xltx)

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

Excel 97-2003 テンプレート ( .xlt)Excel 97-2003 template (.xlt)
Word 文書 ( .docx)Word document (.docx)

Word マクロが有効なドキュメント ( .docm)Word macro-enabled document (.docm)

Word 97-2003 文書 ( .doc)Word 97-2003 document (.doc)

Word テンプレート ( .dotx)Word template (.dotx)

Word マクロ有効テンプレート (normal.dotm)Word macro-enabled template (.dotm)

Word 97-2003 テンプレート ( .dot)Word 97-2003 template (.dot)

サポートされている形式のドキュメントに対してだけ、マネージド コード拡張機能を設計する必要があります。You should design managed code extensions only for documents in the supported formats. そうしないと、アプリケーションでドキュメントを開くときに、特定のイベントが発生しない可能性があります。Otherwise, certain events might not be raised when the document opens in the application. たとえば、Excel XML Openスプレッドシート形式または web ページ ( .htm) で保存されたブックでマネージコード拡張機能を使用した場合、イベントは発生しません。 .html)形式.For example, the Open event is not raised when you use managed code extensions with workbooks saved in the Excel XML spreadsheet format or in the web page (.htm; .html) format.

.Xml ファイル名拡張子を持つ Word 文書のサポートSupport for Word documents that have .xml file name extensions

ドキュメント レベルのプロジェクト テンプレートを使用して、次のファイル形式に基づくプロジェクトを作成することはできません。The document-level project templates do not allow you to create projects based on the following file formats:

  • Word xml ドキュメント ( *xml)。Word XML Document (*xml).

  • Word 2003 xml ドキュメント ( *xml)。Word 2003 XML Document (*xml).

    エンド ユーザーがこれらのファイル形式でカスタマイズを使用できるようにするには、前の表に示した、サポートされているいずれかのファイル形式に基づくカスタマイズを作成して配置します。If you want your end users to use customizations in these file formats, build and deploy a customization that uses one of the supported file formats specified in the table above. カスタマイズをインストールすると、エンドユーザーは word xml ドキュメント ( *xml) 形式または word 2003 xml ドキュメント ( *xml) 形式でドキュメントを保存できるようになり、カスタマイズは想定どおりに動作し続けます。After installing the customization, end users can save the document in the Word XML Document (*xml) format or the Word 2003 XML Document (*xml) format, and the customization will continue to work as expected.

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

カスタマイズの主要なコンポーネントは、ドキュメントとアセンブリです。The main components of a customization are the document and the assembly. これらのコンポーネントに加えて、Microsoft Office アプリケーションがカスタマイズを検出して読み込むときに重要な役割を果たすものがあります。In addition to these components, there are several other parts that play an important role in how Microsoft Office applications discover and load customizations.

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

カスタマイズは、配置マニフェストとアプリケーション マニフェストを使用して、最新バージョンのカスタマイズ アセンブリを特定し、読み込みます。Customizations use deployment manifests and application manifests to identify and load the most current version of the customization assembly. 配置マニフェストは、最新のアプリケーション マニフェストを指します。The deployment manifest points to the current application manifest. アプリケーション マニフェストは、カスタマイズ アセンブリを指し、エントリ ポイント クラス (1 つまたは複数のクラス) を指定して、アセンブリ内で実行します。The application manifest points to the customization assembly, and specifies the entry point class (or classes) to execute in the assembly. 詳細については、「 Office ソリューションのアプリケーションマニフェストと配置マニフェスト」を参照してください。For more information, see Application and deployment manifests in Office solutions.

Visual Studio Tools for Office ランタイムVisual Studio Tools for Office Runtime

Visual Studio の Office developer tools を使用して作成されたドキュメントレベルのカスタマイズを実行するには、エンドユーザー Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtimeのコンピューターにがインストールされている必要があります。To run document-level customizations that are created by using the Office developer tools in Visual Studio, end-user computers must have the Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime installed. Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime には、カスタマイズ アセンブリを読み込むアンマネージド コンポーネントが含まれています。また、一連のマネージド アセンブリも含まれています。The Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime includes unmanaged components that load the customization assembly, and also a set of managed assemblies. これらのマネージド アセンブリにより、カスタマイズ コードがホスト アプリケーションを自動化して拡張するために使用するオブジェクト モデルが提供されます。These managed assemblies provide the object model that your customization code uses to automate and extend the host application.

詳細については、「 Visual Studio tools For Office runtime の概要」を参照してください。For more information, see Visual Studio tools for Office runtime overview.

Microsoft Office アプリケーションでのカスタマイズのしくみHow customizations work with Microsoft Office applications

ユーザーが Microsoft Office カスタマイズの一部であるドキュメントを開くと、アプリケーションはそのドキュメントにリンクされている配置マニフェストを使用して、最新バージョンのカスタマイズ アセンブリを特定し、読み込みます。When a user opens a document that is part of a Microsoft Office customization, the application uses the deployment manifest that is linked to the document to locate and load the most current version of the customization assembly. 配置マニフェストの場所は、 Assemblylocationという名前のカスタムドキュメントプロパティに格納されます。The location of the deployment manifest is stored in a custom document property named AssemblyLocation. この場所を示す文字列は、ソリューションをビルドするときにプロパティに挿入されます。The string that identifies this location is inserted into the property when you build the solution.

配置マニフェストはアプリケーション マニフェストを指し、アプリケーション マニフェストは最新のアセンブリを指します。The deployment manifest points to the application manifest, which then points to the most current assembly. 詳細については、「 Office ソリューションのアプリケーションマニフェストと配置マニフェスト」を参照してください。For more information, see Application and deployment manifests in Office solutions.

ドキュメント レベルのカスタマイズに関する基本アーキテクチャを、次の図に示します。The following illustration shows the basic architecture of a document-level customization.

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

Note

.NET Framework 4.NET Framework 4を対象とする Office ソリューションでは、ソリューションはプライマリ相互運用機能アセンブリ (PIA: Primary Interop Assembly) を直接呼び出す代わりに、ソリューション アセンブリに埋め込まれた PIA 型情報を使用してホスト アプリケーションのオブジェクト モデルを呼び出します。In Office solutions that target the .NET Framework 4.NET Framework 4, solutions call into the object model of the host application by using primary interop assembly (PIA) type information that is embedded in the solution assembly, instead of calling into the PIA directly. 詳細については、Office ソリューションのデザインと作成を参照してください。For more information, see Design and create Office solutions.

読み込みプロセスLoading process

ユーザーが Microsoft Office ソリューションの一部であるドキュメントを開くと、次の処理が実行されます。The following steps occur when a user opens a document that is part of a Microsoft Office solution.

  1. Microsoft Office アプリケーションはカスタム ドキュメント プロパティをチェックして、そのドキュメントに関連付けられているマネージド コード拡張機能があるかどうかを調べます。The Microsoft Office application checks the custom document properties to see whether there are managed code extensions associated with the document. 詳細については、「カスタムドキュメントプロパティの概要」を参照してください。For more information, see Custom document properties overview.

  2. マネージコード拡張機能がある場合、アプリケーションはvstoee.dllを読み込みます。これにより、 vstoloader.dllが読み込まれます。If there are managed code extensions, the application loads VSTOEE.dll, which loads VSTOLoader.dll. これらは、Visual Studio 2010 Tools for Office runtime のローダーコンポーネントであるアンマネージ Dll です。These are unmanaged DLLs that are the loader components for the Visual Studio 2010 Tools for Office runtime. 詳細については、Visual Studio Tools for Office runtime の概要を参照してください。For more information, see Visual Studio Tools for Office runtime overview.

  3. Vstoloader.dll.NET Framework.NET Frameworkを読み込み、のVisual Studio Tools for Office RuntimeVisual Studio Tools for Office runtimeマネージ部分を開始します。VSTOLoader.dll loads the .NET Framework.NET Framework and starts the managed portion of the Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime.

  4. ドキュメントがローカル コンピューター以外の場所から開かれている場合、 Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime は、該当する Office アプリケーション用に設定された [セキュリティ センターの設定][信頼できる場所] の一覧にドキュメントの場所が載っていることを確認します。If the document is opened from a location other than the local computer, the Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime verifies that the location of the document is in the Trusted Locations list in the Trust Center Settings for that particular Office application. ドキュメントの場所が信頼できる場所でない場合、カスタマイズは信頼されず、読み込みプロセスはここで停止します。If the document location is not in a trusted location, the customization is not trusted, and the load process stops here.

  5. Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime は、ソリューションをインストールし (まだインストールされていない場合)、最新のアプリケーション マニフェストと配置マニフェストをダウンロードし、一連のセキュリティ チェックを実行します。The Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime installs the solution if it has not been installed yet, downloads the most recent application and deployment manifests, and performs a series of security checks. 詳細については、セキュリティで保護された Office ソリューションを参照してください。For more information, see Secure Office solutions.

  6. カスタマイズを信頼して実行できる場合、 Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime は配置マニフェストとアプリケーション マニフェストを使用して、アセンブリの更新をチェックします。If the customization is trusted to run, the Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime uses the deployment manifest and application manifest to check for assembly updates. 利用できる新しいバージョンのアセンブリが存在する場合、ランタイムは、クライアント コンピューターの ClickOnceClickOnce キャッシュに新しいバージョンのアセンブリをダウンロードします。If a new version of the assembly is available, the runtime downloads the new version of the assembly to the ClickOnceClickOnce cache on the client computer. 詳細については、「 Office ソリューションの配置」を参照してください。For more information, see Deploy an Office solution.

  7. Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime は、カスタマイズ アセンブリを読み込むときに使用する、新しいアプリケーション ドメインを作成します。The Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime creates a new application domain in which to load the customization assembly.

  8. Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime は、カスタマイズ アセンブリをアプリケーション ドメインに読み込みます。The Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime loads the customization assembly into the application domain.

  9. Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime は、カスタマイズ アセンブリ内の Startup イベント ハンドラーを呼び出します。The Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime calls the Startup event handler in your customization assembly. 詳細については、「 Office プロジェクトのイベント」を参照してください。For more information, see Events in Office projects.

関連項目See also