プログラムのドキュメント レベルのカスタマイズProgram document-level customizations

ドキュメント レベルのカスタマイズを使用して、Microsoft Office Word または Microsoft Office Excel を拡張する場合に、次のタスクを実行できます。When you extend Microsoft Office Word or Microsoft Office Excel by using a document-level customization, you can perform the following tasks:

  • オブジェクト モデルを使用してアプリケーションを自動化します。Automate the application by using its object model.

  • ドキュメントの画面にコントロールを追加します。Add controls to the surface of the document.

  • カスタマイズ アセンブリから、ドキュメント内に Visual Basic for Applications (VBA) コードを呼び出します。Call Visual Basic for Applications (VBA) code in the document from the customization assembly.

  • VBA からカスタマイズ アセンブリ内のコードを呼び出します。Call code in the customization assembly from VBA.

  • Microsoft Office がインストールされていないサーバー上にドキュメントがあるときに、そのドキュメントの特定の要素を管理します。Manage certain aspects of the document while it is on a server that does not have Microsoft Office installed.

  • アプリケーションのユーザー インターフェイス (UI) をカスタマイズします。Customize the user interface (UI) of the application.

    適用対象: このトピックの情報は、ドキュメントに適用されます-Excel および Word のレベルのプロジェクト。Applies to: The information in this topic applies to document-level projects for Excel and Word. 詳細については、「Office アプリケーションおよびプロジェクトの種類で使用できる機能」を参照してください。For more information, see Features available by Office application and project type.

    ドキュメント レベルのプロジェクトのコードの記述には、Visual Studio の他のプロジェクトの種類とは異なる点があります。Some aspects of writing code in document-level projects are different from other types of projects in Visual Studio. 相違点の多くは、Office オブジェクト モデルがマネージド コードに公開される方法に起因しています。Many of these differences are caused by the way the Office object models are exposed to managed code. 詳細については、次を参照してください。 Office ソリューションでコードを記述します。For more information, see Write code in Office solutions.

    Visual Studio の Office 開発ツールを使用して作成できますドキュメント レベルのカスタマイズとその他の種類のソリューションに関する一般的な情報は、次を参照してください。 Office ソリューション開発の概要(VSTO)します。For general information about document-level customizations and other types of solutions you can create by using the Office development tools in Visual Studio, see Office solutions development overview (VSTO).

ドキュメント レベルのプロジェクトで生成されたクラスを使用します。Use the generated classes in document-level projects

ドキュメント レベルのプロジェクトを作成するときに、Visual Studio は、コードの記述を開始できるプロジェクト クラスを自動的に生成します。When you create a document-level project, Visual Studio automatically generates a class in the project that you can use to start writing your code. Visual Studio は、Word と Excel 用のさまざまなクラスを生成します。Visual Studio generates different classes for Word and Excel:

  • Word 用のドキュメント レベルのプロジェクトでは、クラスは既定で ThisDocument と呼ばれます。In document-level projects for Word, the class is called ThisDocument by default.

  • Excel 用のドキュメント レベルのプロジェクトには、生成されたクラスが複数あり、ワークブック自体のために 1 つ、各ワークシート用に 1 つずつです。Document-level projects for Excel have multiple generated classes: one for the workbook itself, and one for each worksheet. 既定では、それらのクラスの名前は次のようになります。By default, these classes have the following names:

    • ThisWorkbook

    • Sheet1

    • Sheet2

    • Sheet3

    生成されたクラスには、ドキュメントを開いたり閉じたりしたときに呼び出されるイベント ハンドラーが含まれています。The generated class includes event handlers that are called when the document is opened or closed. ドキュメントを開いたときにコードを実行するには、 Startup イベント ハンドラーにコードを追加します。To run code when the document is opened, add code to the Startup event handler. ドキュメントを閉じたときにコードを実行するには、 Shutdown イベント ハンドラーにコードを追加します。To run code just before the document is closed, add code to the Shutdown event handler. 詳細については、次を参照してください。 Office プロジェクト内のイベントします。For more information, see Events in Office projects.

生成されたクラスの設計を理解します。Understand the design of the generated classes

.NET Framework 4.NET Framework 4 または .NET Framework 4.5.NET Framework 4.5を対象とするプロジェクトでは、 Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime のホスト項目の種類はインターフェイスなので、生成されたクラスがそこから実装を派生させることはできません。In projects that target the .NET Framework 4.NET Framework 4 or the .NET Framework 4.5.NET Framework 4.5, the host item types in the Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime are interfaces, so the generated classes cannot derive their implementation from them. 代わりに、生成されたクラスでは、次の基本クラスからそのほとんどのメンバーが派生します。Instead, the generated classes derive most of their members from the following base classes:

  • ThisDocument: DocumentBaseから派生します。ThisDocument: derives from DocumentBase.

  • ThisWorkbook: WorkbookBaseから派生します。ThisWorkbook: derives from WorkbookBase.

  • Sheet n: から派生したWorksheetBaseします。Sheet n: derives from WorksheetBase.

    これらの基本クラスは、そのメンバーのすべての呼び出しを Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtimeの対応するホスト項目インターフェイスの内部実装にリダイレクトします。These base classes redirect all calls to their members to internal implementations of the corresponding host item interfaces in the Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime. たとえば、 Protect クラスの ThisDocument メソッドを呼び出す場合、 DocumentBase クラスはこの呼び出しを DocumentVisual Studio Tools for Office RuntimeVisual Studio Tools for Office runtimeインターフェイスの内部実装にリダイレクトします。For example, if you call the Protect method of the ThisDocument class, the DocumentBase class redirects this call to the internal implementation of the Document interface in the Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime.

ホスト アプリケーションのオブジェクト モデルへのアクセスします。Access the object model of the host application

ホスト アプリケーションのオブジェクト モデルにアクセスするには、プロジェクト内で生成されたクラスのメンバーを使用します。To access the object model of the host application, use members of the generated class in your project. これらの各クラスは Excel または Word のオブジェクト モデル内のオブジェクトに対応しており、同じプロパティ、メソッド、およびイベントのほとんどが含まれています。Each of these classes corresponds to an object in the object model of Excel or Word, and they contain most of the same properties, methods, and events. たとえば、Word のドキュメント レベルのプロジェクトの ThisDocument クラスは、Word オブジェクト モデルの Document オブジェクトとほとんど同じメンバーを提供します。For example, the ThisDocument class in a document-level project for Word provides most of the same members as the Document object in the Word object model.

次のコード例では、Word オブジェクト モデルを使用して、Word のドキュメント レベルのカスタマイズの一部であるドキュメントを保存する方法を示します。The following code example shows how to use the Word object model to save the document that is part of a document-level customization for Word. この例は ThisDocument クラスから実行することを意図しています。This example is intended to be run from the ThisDocument class.

Me.Save()
this.Save();

同じ処理を ThisDocument クラスの外から行うには、 Globals オブジェクトを使用して ThisDocument クラスにアクセスします。To do the same thing from outside the ThisDocument class, use the Globals object to access the ThisDocument class. たとえば、[操作] ウィンドウ UI に [保存] ボタンUI を組み込む場合は、このコードを [操作] ウィンドウのコード ファイルに追加します。For example, you can add this code to an actions pane code file if you want to include a Save button in the actions pane UI.

Globals.ThisDocument.Save()
Globals.ThisDocument.Save();

ThisDocument クラスはそのほとんどのメンバーを Document ホストの項目から取得するので、実際には、このコードで呼び出される Save メソッドは Save ホスト項目の Document メソッドです。Because the ThisDocument class obtains most of its members from the Document host item, the Save method that is called in this code is really the Save method of the Document host item. このメソッドは、Word オブジェクト モデルの Save オブジェクトの Document メソッドに対応しています。This method corresponds to the Save method of the Document object in the Word object model.

Word および Excel のオブジェクト モデルの使用に関する詳細については、次を参照してください。 Word オブジェクト モデルの概要Excel オブジェクト モデルの概要します。For more information about using the object models of Word and Excel, see Word object model overview and Excel object model overview.

詳細については、Globalsオブジェクトを参照してくださいOffice プロジェクト内のオブジェクトへのアクセスをグローバルします。For more information about the Globals object, see Global access to objects in Office projects.

ドキュメントにコントロールを追加します。Add controls to documents

ドキュメントの UI をカスタマイズするには、Windows フォーム コントロールまたは ホスト コントロール をドキュメントの画面に追加します。To customize the UI of the document, you can add Windows Forms controls or host controls to the document surface. さまざまな種類のコントロールを組み合わせ、コードを記述することによって、コントロールのデータへのバインド、ユーザー情報の収集、およびユーザーの操作への応答を実行できます。By combining different sets of controls and writing code, you can bind the controls to data, collect information from the user, and respond to user actions.

ホスト コントロールは Word オブジェクト モデルと Excel オブジェクト モデルの一部のオブジェクトを拡張するクラスです。Host controls are classes that extend some of the objects in the Word and Excel object model. たとえば、 ListObject ホスト コントロールには、Excel の ListObject のすべての機能が用意されています。For example, the ListObject host control provides all of the functionality of the ListObject in Excel. ただし、 ListObject ホスト コントロールには追加のイベントやデータ バインディング機能もあります。However, the ListObject host control also has additional events and data binding capabilities.

詳細については、次を参照してください。ホスト項目とホスト コントロールの概要Windows フォームでコントロールの Office ドキュメントの概要します。For more information, see Host items and host controls overview and Windows forms controls on Office documents overview.

VBA とドキュメント レベルのカスタマイズを結合します。Combine VBA and document-level customizations

ドキュメント レベルのカスタマイズの一部であるドキュメントに VBA コードを使用できます。You can use VBA code in a document that is part of a document-level customization. カスタマイズ アセンブリからドキュメント内の VBA コードを呼び出したり、ドキュメント内の VBA コードがカスタマイズ アセンブリのコードを呼び出せるようにプロジェクトを構成したりすることができます。You can call VBA code in the document from the customization assembly, and you can also configure your project to enable VBA code in the document to call code in the customization assembly.

詳細については、次を参照してください。結合 VBA とドキュメント レベルのカスタマイズします。For more information, see Combine VBA and document-level customizations.

管理サーバー上のドキュメントManage documents on a server

Microsoft Office Word または Microsoft Office Excel がインストールされていないサーバーで、ドキュメント レベルのカスタマイズのさまざまな要素を管理することができます。You can manage several different aspects of document-level customizations on a server that does not have Microsoft Office Word or Microsoft Office Excel installed. たとえば、ドキュメントのデータ キャッシュにあるデータにアクセスし、変更することができます。For example, you can access and modify data in the data cache of the document. また、ドキュメントに関連付けられているカスタマイズ アセンブリも管理できます。You can also manage the customization assembly that is associated with the document. たとえば、プログラムを使用してドキュメントからアセンブリを削除して、ドキュメントがコードを実行しないようにしたり、プログラムを使用してアセンブリをドキュメントにアタッチすることができます。For example, you can programmatically remove the assembly from the document so that the document no longer runs your code, or you can programmatically attach an assembly to a document.

詳細については、次を参照してください。 ServerDocument クラスを使用してサーバー上のドキュメントを管理します。For more information, see Manage documents on a server by using the ServerDocument class.

Microsoft Office アプリケーションのユーザー インターフェイスをカスタマイズします。Customize the user interface of Microsoft Office applications

ドキュメント レベルのカスタマイズを使用して、次の方法で、Excel や Word の UI をカスタマイズできます。You can customize the UI of Word and Excel in the following ways by using a document-level customization:

ドキュメント レベルのカスタマイズでネイティブな Office オブジェクトから拡張オブジェクトを取得します。Get extended objects from native Office objects in document-level customizations

Office イベントの多くのイベント ハンドラーでは、イベントが発生するワークブック、ワークシート、またはドキュメントを表すネイティブの Office オブジェクトを受け取ります。Many event handlers for Office events receive a native Office object that represents the workbook, worksheet, or document that raised the event. 場合によっては、いくつかのコードはドキュメント レベルのカスタマイズでワークブックやドキュメントによってイベントが発生した場合のみ実行します。In some cases, you might want to run some code only if the workbook or document in your document-level customization raised the event. たとえば、Excel のドキュメント レベルのカスタマイズでは、カスタマイズされたワークブック内でワークシートを 1 つアクティブ化したときに一部のコードを実行し、同時に開いている他のワークブックでワークシートをアクティブ化したときには実行しないようにします。For example, in a document-level customization for Excel, you might want to run some code when the user activates one of the worksheets in the customized workbook, but not when the user activates a worksheet in some other workbook that happens to be open at the same time.

ネイティブの Office オブジェクトがある場合は、そのオブジェクトがドキュメント レベルのカスタマイズで ホスト項目 または ホスト コントロール に拡張されているかどうかをテストできます。When you have a native Office object, you can test whether that object has been extended into a host item or host control in a document-level customization. ホスト項目とホスト コントロールは、Word または Excel オブジェクト モデルにネイティブで存在するオブジェクト ( Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime ネイティブの Office オブジェクト ) に機能を追加するが提供する種類のインスタンスです。Host items and host controls are types provided by the Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime that add functionality to objects that exist natively in the Word or Excel object models (called native Office objects). 総称して、ホスト項目とホスト コントロールは 拡張オブジェクトとも呼ばれます。Collectively, host items and host controls are also called extended objects. ホスト項目とホスト コントロールの詳細については、次を参照してください。ホスト項目とホスト コントロールの概要します。For more information about host items and host controls, see Host items and host controls overview.

Getvstoobject メソッドと HasVstoObject メソッドを理解します。Understand the GetVstoObject and HasVstoObject methods

ネイティブの Office オブジェクトをテストするには、プロジェクト内で HasVstoObject メソッドと GetVstoObject メソッドを使用します。To test a native Office object, use the HasVstoObject and GetVstoObject methods in your project:

  • カスタマイズでネイティブの Office オブジェクトに拡張オブジェクトがあるかどうかを判断するには、HasVstoObject メソッドを使用します。Use the HasVstoObject method if you want to determine whether the native Office object has an extended object in your customization. このメソッドは、ネイティブの Office オブジェクトに拡張オブジェクトがある場合は true を返し、ない場合は false を返します。This method returns true if the native Office object has an extended object, and false otherwise.

  • ネイティブの Office オブジェクトに対する拡張オブジェクトを取得する場合は、GetVstoObject メソッドを使用します。Use the GetVstoObject method if you want to get the extended object for a native Office object. このメソッドは、指定したネイティブの Office オブジェクトに拡張オブジェクトがあれば、 ListObjectWorkbookWorksheet、または Document オブジェクトを返します。This method returns a ListObject, Workbook, Worksheet, or Document object if the specified native Office object has one. それ以外の場合、GetVstoObject返しますnullします。Otherwise, GetVstoObject returns null. たとえば、GetVstoObject メソッドは、指定した Document が Word ドキュメント プロジェクトのドキュメントで基礎となるオブジェクトの場合、Document を返します。For example, the GetVstoObject method returns a Document if the specified Document is the underlying object for the document in your Word document project.

    ドキュメント レベルのプロジェクトで使用することはできません、GetVstoObject新たに作成するメソッドWorkbookWorksheet、またはDocument実行時にホスト項目。In document-level projects, you cannot use the GetVstoObject method to create a new Workbook, Worksheet, or Document host item at runtime. このメソッドは、デザイン時にプロジェクトで生成される既存のホスト項目へのアクセスにのみ使用できます。You can use this method only to access existing host items that are generated in your project at design time. 実行時に新しいホスト項目を作成する場合は、VSTO アドイン プロジェクトを開発する必要があります。If you want to create new host items at runtime, you must develop a VSTO Add-in project. 詳細については、次を参照してください。ホスト項目とホスト コントロールのプログラム上の制限事項拡張 Word 文書や Excel ブックを実行時に VSTO アドインでします。For more information, see Programmatic limitations of host items and host controls and Extend Word documents and Excel workbooks in VSTO Add-ins at runtime.

Getvstoobject メソッドと HasVstoObject メソッドを使用します。Use the GetVstoObject and HasVstoObject methods

呼び出す、HasVstoObjectGetVstoObjectメソッドを使用して、Globals.Factory.GetVstoObjectまたはGlobals.Factory.HasVstoObjectメソッド、およびネイティブの Word または Excel オブジェクトを渡します (など、DocumentまたはWorksheet) をテストします。To call the HasVstoObject and GetVstoObject method, use the Globals.Factory.GetVstoObject or Globals.Factory.HasVstoObject method, and pass in the native Word or Excel object (such as a Document or Worksheet) that you want to test.

関連項目See also