VSTO アドインをプログラミングします。Program VSTO Add-ins

VSTO アドインを作成して Microsoft Office アプリケーションを拡張するときは、プロジェクトの ThisAddIn クラスに対して直接コードを記述します。When you extend a Microsoft Office application by creating a VSTO Add-in, you write code directly against the ThisAddIn class in your project. このクラスを使用し、Microsoft Office ホスト アプリケーションのオブジェクト モデルにアクセスする、アプリケーションのユーザー インターフェイス (UI) をカスタマイズする、その他の Office ソリューションに VSTO アドインのオブジェクトを公開するなどの作業を実行できます。You can use this class to perform tasks such as accessing the object model of the Microsoft Office host application, customizing the user interface (UI) of the application, and exposing objects in your VSTO Add-in to other Office solutions.

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

VSTO アドイン プロジェクトのコードの記述には、Visual Studio の他のプロジェクトの種類とは異なる点があります。Some aspects of writing code in VSTO Add-in 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 開発ツールを使用して作成できます VSTO アドインとソリューションの他の種類に関する全般情報を参照してください。 Office ソリューション開発の概要(VSTO)します。For general information about VSTO Add-ins and other types of solutions you can create by using the Office development tools in Visual Studio, see Office solutions development overview (VSTO).

ThisAddIn クラスを使用します。Use the ThisAddIn class

VSTO アドイン コードの記述は ThisAddIn クラスから開始することができます。You can start writing your VSTO Add-in code in the ThisAddIn class. Visual Studio でこのクラスを自動的に生成する、 ThisAddIn.vb (でVisual BasicVisual Basic) またはThisAddIn.cs (c#) のコードでは、VSTO アドイン プロジェクト内のファイル。Visual Studio automatically generates this class in the ThisAddIn.vb (in Visual BasicVisual Basic) or ThisAddIn.cs (in C#) code file in your VSTO Add-in project. Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime は、Microsoft Office アプリケーションが VSTO アドインを読み込むと、このクラスを自動的にインスタンス化します。The Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime automatically instantiates this class for you when the Microsoft Office application loads your VSTO Add-in.

ThisAddIn クラスには既定のイベント ハンドラーが 2 つあります。There are two default event handlers in the ThisAddIn class. VSTO アドインが読み込まれるときにコードを実行するには、 ThisAddIn_Startup イベント ハンドラーにコードを追加します。To run code when the VSTO Add-in is loaded, add code to the ThisAddIn_Startup event handler. VSTO アドインが読み込み解除される直前にコードを実行するには、 ThisAddIn_Shutdown イベント ハンドラーにコードを追加します。To run code just before the VSTO Add-in is unloaded, add code to the ThisAddIn_Shutdown event handler. これらのイベント ハンドラーの詳細については、次を参照してください。 Office プロジェクト内のイベントします。For more information about these event handlers, see Events in Office projects.

Note

Outlook の場合、既定では、VSTO アドインが読み込み解除されるときに ThisAddIn_Shutdown イベント ハンドラーが常に呼び出されるとは限りません。In Outlook, by default the ThisAddIn_Shutdown event handler is not always called when the VSTO Add-in is unloaded. 詳細については、次を参照してください。 Office プロジェクト内のイベントします。For more information, see Events in Office projects.

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

ホスト アプリケーションのオブジェクト モデルにアクセスするには、 Application クラスの ThisAddIn フィールドを使用します。To access the object model of the host application, use the Application field of the ThisAddIn class. このフィールドはホスト アプリケーションの現在のインスタンスを表すオブジェクトを返します。This field returns an object that represents the current instance of the host application. 次の表は各 VSTO アドイン プロジェクトの Application フィールドの戻り値の型をまとめたものです。The following table lists the type of the return value for the Application field in each VSTO Add-in project.

ホスト アプリケーションHost application 戻り値の型Return value type
Microsoft Office ExcelMicrosoft Office Excel Application
Microsoft Office InfoPathMicrosoft Office InfoPath Microsoft.Office.Interop.InfoPath.Application
Microsoft Office OutlookMicrosoft Office Outlook Microsoft.Office.Interop.Outlook.Application
Microsoft Office PowerPointMicrosoft Office PowerPoint Microsoft.Office.Interop.PowerPoint.Application
Microsoft Office ProjectMicrosoft Office Project Microsoft.Office.Interop.MSProject.ApplicationMicrosoft.Office.Interop.MSProject.Application
Microsoft Office VisioMicrosoft Office Visio Microsoft.Office.Interop.Visio.ApplicationMicrosoft.Office.Interop.Visio.Application
Microsoft Office WordMicrosoft Office Word Application

次のコード例を使用する方法を示しています、Applicationフィールドを Microsoft Office Excel 用 VSTO アドインで新しいブックを作成します。The following code example shows how to use the Application field to create a new workbook in a VSTO Add-in for Microsoft Office Excel. この例は ThisAddIn クラスから実行することを意図しています。This example is intended to be run from the ThisAddIn class.

Dim newWorkbook As Excel.Workbook = Me.Application.Workbooks.Add()
Excel.Workbook newWorkbook = this.Application.Workbooks.Add(System.Type.Missing);

同じ処理を ThisAddIn クラスの外から行うには、 Globals オブジェクトを使用して ThisAddIn クラスにアクセスします。To do the same thing from outside the ThisAddIn class, use the Globals object to access the ThisAddIn class. 詳細については、Globalsオブジェクトを参照してくださいOffice プロジェクト内のオブジェクトへのアクセスをグローバルします。For more information about the Globals object, see Global access to objects in Office projects.

Dim newWorkbook As Excel.Workbook = Globals.ThisAddIn.Application.Workbooks.Add()
Excel.Workbook newWorkbook = Globals.ThisAddIn.Application.Workbooks.Add(System.Type.Missing);

特定の Microsoft Office アプリケーションのオブジェクト モデルの詳細については、以下のトピックを参照してください。For more information about the object models of specific Microsoft Office applications, see the following topics:

Office アプリケーションの起動時にドキュメントへのアクセスします。Access a document when the Office application starts

すべての Office 2010Office 2010 アプリケーションが起動時にドキュメントを自動的に開くわけではありません。 Office 2013Office 2013 アプリケーションの場合、起動時にドキュメントは開きません。Not all Office 2010Office 2010 applications automatically open a document when you start them, and none of the Office 2013Office 2013 applications open a document when you start them. そのため、コードを追加しないでください、ThisAdd-In_Startupイベント ハンドラーの場合は、コードがドキュメントを開く必要があります。Therefore, don't add code in the ThisAdd-In_Startup event handler if the code requires a document to be open. 代わりに、ユーザーがドキュメントを作成するとき、または開くときに Office アプリケーションが発生させるイベントにそのコードを追加します。Instead, add that code to an event that the Office application raises when a user creates or opens a document. この方法により、コードがドキュメントに操作を実行する前にドキュメントが確実に開きます。That way, you can guarantee that a document is open before your code performs operations on it.

次のコード例は、ユーザーがドキュメントを作成した、または既存のドキュメントを開いたときにのみ、Word のドキュメントと連動します。The following code example works with a document in Word only when the user creates a document or opens an existing document.

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        this.Application.DocumentOpen +=
new Word.ApplicationEvents4_DocumentOpenEventHandler(WorkWithDocument);

        ((Word.ApplicationEvents4_Event)this.Application).NewDocument +=
            new Word.ApplicationEvents4_NewDocumentEventHandler(WorkWithDocument);  
    }
    
    private void WorkWithDocument(Microsoft.Office.Interop.Word.Document Doc)
    {
        try
        {
            Word.Range rng = Doc.Range(0, 0);
            rng.Text = "New Text";
            rng.Select();
        }
        catch (Exception ex)
        {
            // Handle exception if for some reason the document is not available.
        }
    }
Private Sub ThisAddIn_Startup() Handles Me.Startup

    AddHandler Application.NewDocument, AddressOf WorkWithDocument

End Sub

Private Sub WorkWithDocument(ByVal Doc As Microsoft.Office.Interop.Word.Document) _
    Handles Application.DocumentOpen

    Dim rng As Word.Range = Doc.Range(Start:=0, End:=0)
    rng.Text = " New Text "
    rng.Select()

End Sub

その他のタスクを使用する ThisAddIn メンバーThisAddIn members to use for other tasks

次の表は、他の一般的なタスクに関する説明とタスクを実行するために使用できる ThisAddIn クラスのメンバーをまとめたものです。The following table describes other common tasks and shows which members of the ThisAddIn class you can use to perform the tasks.

タスクTask 使用するメンバーMember to use
VSTO アドインが読み込まれるときに VSTO アドインを初期化するコードを実行します。Run code to initialize the VSTO Add-in when the VSTO Add-in is loaded. ThisAddIn_Startup メソッドにコードを追加します。Add code to the ThisAddIn_Startup method. これは Startup イベントの既定のイベント ハンドラーです。This is the default event handler for the Startup event. 詳細については、次を参照してください。 Office プロジェクト内のイベントします。For more information, see Events in Office projects.
VSTO アドインが読み込み解除される前に VSTO アドインにより使用されるリソースを消去するコードを実行します。Run code to clean up resources used by the VSTO Add-in before the VSTO Add-in is unloaded. ThisAddIn_Shutdown メソッドにコードを追加します。Add code to the ThisAddIn_Shutdown method. これは Shutdown イベントの既定のイベント ハンドラーです。This is the default event handler for the Shutdown event. 詳細については、次を参照してください。 Office プロジェクト内のイベントします。For more information, see Events in Office projects. 注: Outlook の場合、既定では、VSTO アドインが読み込み解除されるときに ThisAddIn_Startup イベント ハンドラーが常に呼び出されるとは限りません。Note: In Outlook, by default the ThisAddIn_Startup event handler is not always called when the VSTO Add-in is unloaded. 詳細については、次を参照してください。 Office プロジェクト内のイベントします。For more information, see Events in Office projects.
カスタム作業ウィンドウを表示します。Display a custom task pane. CustomTaskPanes フィールドを使用します。Use the CustomTaskPanes field. 詳細については、次を参照してください。カスタム作業ウィンドウします。For more information, see Custom task panes.
その他の Microsoft Office ソリューションに VSTO アドインのオブジェクトを公開します。Expose objects in your VSTO Add-in to other Microsoft Office solutions. RequestComAddInAutomationService メソッドをオーバーライドします。Override the RequestComAddInAutomationService method. 詳細については、次を参照してください。他の Office ソリューションから VSTO アドイン内のコードを呼び出すします。For more information, see Call code in VSTO Add-ins from other Office solutions.
機能拡張インターフェイスを実装することで Microsoft Office システムの機能をカスタマイズします。Customize a feature in the Microsoft Office system by implementing an extensibility interface. RequestService メソッドをオーバーライドし、このインターフェイスを実装するクラスのインスタンスを返します。Override the RequestService method to return an instance of a class that implements the interface. 詳細については、次を参照してください。機能拡張インターフェイスによる UI のカスタマイズ機能します。For more information, see Customize UI features by using extensibility interfaces. 注: リボン UI をカスタマイズするには、CreateRibbonExtensibilityObject メソッドをオーバーライドすることもできます。Note: To customize the ribbon UI, you can also override the CreateRibbonExtensibilityObject method.

ThisAddIn クラスの設計を理解します。Understand the design of the ThisAddIn class

.NET Framework 4.NET Framework 4を対象とするプロジェクトでは、 AddIn はインターフェイスです。In projects that target the .NET Framework 4.NET Framework 4, AddIn is an interface. ThisAddIn クラスは AddInBase クラスから派生します。The ThisAddIn class derives from the AddInBase class. この基本クラスは AddIn でそのメンバーのすべての呼び出しを Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtimeインターフェイスの内部実装にリダイレクトします。This base class redirects all calls to its members to an internal implementation of the AddIn interface in the Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime.

Outlook の VSTO アドイン プロジェクトで、ThisAddIn クラスは .NET Framework 3.5 を対象とするプロジェクトの Microsoft.Office.Tools.Outlook.OutlookAddIn クラスと .NET Framework 4.NET Framework 4 を対象とするプロジェクトの OutlookAddInBase から誘導されます。In VSTO Add-in projects for Outlook, the ThisAddIn class derives from the Microsoft.Office.Tools.Outlook.OutlookAddIn class in projects that target the .NET Framework 3.5, and from OutlookAddInBase in projects that target the .NET Framework 4.NET Framework 4. これらの基本クラスは、フォーム領域をサポートするための追加の機能をいくつか提供します。These base classes provide some additional functionality to support form regions. フォーム領域の詳細については、次を参照してください。作成の Outlook フォーム領域します。For more information about form regions, see Create Outlook form regions.

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

VSTO アドインを使用すれば、Microsoft Office アプリケーションの UI をプログラミングでカスタマイズできます。You can programmatically customize the UI of Microsoft Office applications by using a VSTO Add-in. たとえば、Outlook でリボンをカスタマイズしたり、カスタム作業ウィンドウを表示したり、カスタム フォーム領域を作成したりできます。For example, you can customize the ribbon, display a custom task pane, or create a custom form region in Outlook. 詳細については、「Office UI のカスタマイズ」を参照してください。For more information, see Office UI customization.

Visual Studio は、カスタム作業ウィンドウの作成、リボンのカスタマイズ、Outlook フォーム領域の作成に使用できるデザイナーとクラスを提供します。Visual Studio provides designers and classes that you can use to create custom task panes, ribbon customizations, and Outlook form regions. これらのデザイナーやクラスはこれらの機能のカスタマイズ プロセスの簡素化に役立ちます。These designers and classes help to simplify the process of customizing these features. 詳細については、次を参照してください。カスタム作業ウィンドウリボン デザイナー、および作成の Outlook フォーム領域します。For more information, see Custom task panes, Ribbon Designer, and Create Outlook form regions.

クラスとデザイナーでサポートされない方法でこれらの機能をカスタマイズする場合、VSTO アドインに 拡張機能インターフェイス を実装する方法でカスタマイズすることもできます。If you want to customize one of these features in a way that is not supported by the classes and designers, you can also customize these features by implementing an extensibility interface in your VSTO Add-in. 詳細については、次を参照してください。機能拡張インターフェイスによる UI のカスタマイズ機能します。For more information, see Customize UI features by using extensibility interfaces.

さらに、文書やブックの動作を拡張するホスト項目を生成する方法で Word 文書や Excel ブックを変更できます。In addition, you can modify the UI of Word documents and Excel workbooks by generating host items that extend the behavior of documents and workbooks. この方法で、管理されているコントロールを文書とワークシートに追加できます。This enables you to add managed controls to documents and worksheets. 詳細については、次を参照してください。拡張 Word 文書や Excel ブックを実行時に VSTO アドインでします。For more information, see Extend Word documents and Excel workbooks in VSTO Add-ins at runtime.

他のソリューションから VSTO アドイン内のコードを呼び出すCall code in VSTO Add-ins from other solutions

VSTO アドインのオブジェクトを、他の Microsoft Office ソリューションを含む、他のソリューションに公開できます。You can expose objects in your VSTO Add-in to other solutions, including other Office solutions. このことは、VSTO アドインが他のソリューションで使用可能なサービスを含む場合に便利です。This is useful if your VSTO Add-in provides a service that you want to enable other solutions to use. たとえば、この場合は、web サービスから受け取る財務データについて計算を実行する Microsoft Office Excel の VSTO アドインである場合は、その他のソリューションは実行時に Excel VSTO アドインを呼び出すことによってこれらの計算を実行できます。For example, if you have a VSTO Add-in for Microsoft Office Excel that performs calculations on financial data from a web service, other solutions can perform these calculations by calling into the Excel VSTO Add-in at run time.

詳細については、次を参照してください。他の Office ソリューションから VSTO アドイン内のコードを呼び出すします。For more information, see Call code in VSTO Add-ins from other Office solutions.

関連項目See also