VSTO アドインを作成して Microsoft Office アプリケーションを拡張する場合は、プロジェクト内の ThisAddIn クラスに対して直接コードを記述します。 このクラスを使用すると、Microsoft Office ホスト アプリケーションのオブジェクト モデルへのアクセス、アプリケーションのユーザー インターフェイス (UI) のカスタマイズ、VSTO アドイン内のオブジェクトの他の Office ソリューションへの公開などのタスクを実行できます。
適用対象: このトピックの情報は、VSTO アドイン プロジェクトに適用されます。 詳細については、「 Office アプリケーションとプロジェクトの種類で使用できる機能」を参照してください。
VSTO アドイン プロジェクトでコードを記述する一部の側面は、Visual Studio の他の種類のプロジェクトとは異なります。 これらの違いの多くは、Office オブジェクト モデルがマネージド コードに公開される方法によって発生します。 詳細については、「 Office ソリューションでコードを記述する」を参照してください。
Visual Studio の Office 開発ツールを使用して作成できる VSTO アドインとその他の種類のソリューションに関する一般的な情報については、「 Office ソリューション開発の概要 (VSTO)」を参照してください。
ThisAddIn クラスを使用する
ThisAddIn クラスで VSTO アドイン コードの記述を開始できます。 Visual Studio は、VSTO アドイン プロジェクトの ThisAddIn.vb (Visual Basic) または ThisAddIn.cs (C#) コード ファイルにこのクラスを自動的に生成します。 Visual Studio Tools for Office ランタイムは、Microsoft Office アプリケーションが VSTO アドインを読み込むと、自動的にこのクラスをインスタンス化します。
ThisAddIn クラスには、既定のイベント ハンドラーが 2 つあります。 VSTO アドインが読み込まれたときにコードを実行するには、 ThisAddIn_Startup イベント ハンドラーにコードを追加します。 VSTO アドインがアンロードされる直前にコードを実行するには、 ThisAddIn_Shutdown イベント ハンドラーにコードを追加します。 これらのイベント ハンドラーの詳細については、「 Office プロジェクトのイベント」を参照してください。
注
Outlook では、既定では、VSTO アドインがアンロードされるときに、 ThisAddIn_Shutdown イベント ハンドラーが常に呼び出されるとは限りません。 詳細については、「 Office プロジェクトのイベント」を参照してください。
ホスト アプリケーションのオブジェクト モデルにアクセスする
ホスト アプリケーションのオブジェクト モデルにアクセスするには、Application クラスの ThisAddIn フィールドを使用します。 このフィールドは、ホスト アプリケーションの現在のインスタンスを表すオブジェクトを返します。 次の表に、各 VSTO アドイン プロジェクトの Application フィールドの戻り値の型を示します。
| ホスト アプリケーション | 戻り値の型 |
|---|---|
| Microsoft Office Excel | Application |
| Microsoft Office InfoPath | Application |
| Microsoft Office Outlook | Application |
| Microsoft Office PowerPoint | アプリケーション |
| Microsoft Office プロジェクト | Microsoft.Office.Interop.MSProject.Application |
| Microsoft Office Visio | Microsoft.Office.Interop.Visio.Application |
| Microsoft Office Word | Application |
次のコード例は、 Application フィールドを使用して、Microsoft Office Excel 用 VSTO アドインで新しいブックを作成する方法を示しています。 この例は、 ThisAddIn クラスから実行することを目的としています。
ThisAddIn クラスの外部から同じことを行うには、Globals オブジェクトを使用してThisAddIn クラスにアクセスします。
Globals オブジェクトの詳細については、「Office プロジェクトのオブジェクトへのグローバル アクセス」を参照してください。
Excel.Workbook newWorkbook = Globals.ThisAddIn.Application.Workbooks.Add(System.Type.Missing);
特定の Microsoft Office アプリケーションのオブジェクト モデルの詳細については、次のトピックを参照してください。
Office アプリケーションの起動時にドキュメントにアクセスする
すべての Office 2010 アプリケーションで、起動時にドキュメントが自動的に開くわけではありません。また、どの Office 2013 アプリケーションも、起動時にドキュメントを開くわけではありません。 そのため、コードでドキュメントを開く必要がある場合は、 ThisAdd-In_Startup イベント ハンドラーにコードを追加しないでください。 代わりに、ユーザーがドキュメントを作成または開いたときに Office アプリケーションによって発生するイベントにそのコードを追加します。 そうすることで、コードがドキュメントに対する操作を実行する前にドキュメントが開くことを保証できます。
次のコード例は、ユーザーが文書を作成するか、既存の文書を開いた場合にのみ、Word で文書を操作します。
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.
}
}
ThisAddIn メンバーを他のタスクに使用する
次の表では、他の一般的なタスクについて説明し、タスクの実行に使用できる ThisAddIn クラスのメンバーを示します。
| Task | 使用するメンバー |
|---|---|
| VSTO アドインが読み込まれるときに VSTO アドインを初期化するコードを実行します。 |
ThisAddIn_Startup メソッドにコードを追加します。 これは、 Startup イベントの既定のイベント ハンドラーです。 詳細については、「 Office プロジェクトのイベント」を参照してください。 |
| VSTO アドインがアンロードされる前に、VSTO アドインによって使用されるリソースをクリーンアップするコードを実行します。 |
ThisAddIn_Shutdown メソッドにコードを追加します。 これは、 Shutdown イベントの既定のイベント ハンドラーです。 詳細については、「 Office プロジェクトのイベント」を参照してください。
手記: Outlook では、既定では、VSTO アドインがアンロードされるときに、 ThisAddIn_Shutdown イベント ハンドラーが常に呼び出されるとは限りません。 詳細については、「 Office プロジェクトのイベント」を参照してください。 |
| カスタム作業ウィンドウを表示します。 |
CustomTaskPanes フィールドを使用します。 詳細については、「 カスタム作業ウィンドウ」を参照してください。 |
| VSTO アドイン内のオブジェクトを他の Microsoft Office ソリューションに公開します。 | RequestComAddInAutomationService メソッドをオーバーライドします。 詳細については、「 他の Office ソリューションから VSTO アドインのコードを呼び出す」を参照してください。 |
| 機能拡張インターフェイスを実装して、Microsoft Office システムの機能をカスタマイズします。 | RequestService メソッドをオーバーライドして、インターフェイスを実装するクラスのインスタンスを返します。 詳細については、「 拡張インターフェイスを使用して UI 機能をカスタマイズする」を参照してください。 手記: リボン UI をカスタマイズするには、 CreateRibbonExtensibilityObject メソッドをオーバーライドすることもできます。 |
ThisAddIn クラスの設計を理解する
.NET Framework 4 を対象とするプロジェクトでは、 AddIn はインターフェイスです。
ThisAddIn クラスは、AddInBase クラスから派生します。 この基底クラスは、そのメンバーへのすべての呼び出しを、Visual Studio Tools for Office ランタイムの AddIn インターフェイスの内部実装にリダイレクトします。
Outlook 用 VSTO アドイン プロジェクトでは、 ThisAddIn クラスは、.NET Framework 3.5 を対象とするプロジェクトの Microsoft.Office.Tools.Outlook.OutlookAddIn クラスから派生し、.NET Framework 4 を対象とするプロジェクトの OutlookAddInBase から派生します。 これらの基底クラスには、フォーム領域をサポートするための追加機能がいくつか用意されています。 フォーム領域の詳細については、「 Outlook フォーム領域の作成」を参照してください。
Microsoft Office アプリケーションのユーザー インターフェイスをカスタマイズする
VSTO アドインを使用して、Microsoft Office アプリケーションの UI をプログラムでカスタマイズできます。 たとえば、リボンをカスタマイズしたり、カスタム作業ウィンドウを表示したり、Outlook でカスタム フォーム領域を作成したりできます。 詳細については、「 Office UI のカスタマイズ」を参照してください。
Visual Studio には、カスタム作業ウィンドウ、リボンのカスタマイズ、Outlook フォーム領域の作成に使用できるデザイナーとクラスが用意されています。 これらのデザイナーとクラスは、これらの機能をカスタマイズするプロセスを簡略化するのに役立ちます。 詳細については、「 カスタム作業ウィンドウ、 リボン デザイナー、 および Outlook フォーム領域の作成」を参照してください。
クラスやデザイナーでサポートされていない方法でこれらの機能の 1 つをカスタマイズする場合は、VSTO アドインに 機能拡張インターフェイス を実装することで、これらの機能をカスタマイズすることもできます。 詳細については、「 拡張インターフェイスを使用して UI 機能をカスタマイズする」を参照してください。
また、Word 文書と Excel ブックの UI を変更するには、ドキュメントとブックの動作を拡張するホスト項目を生成します。 これにより、ドキュメントやワークシートにマネージド コントロールを追加できます。 詳細については、「実行時に VSTO アドインで Word 文書と Excel ブックを拡張する」を参照してください。
VSTO アドインのコードを他のソリューションから呼び出す
VSTO アドイン内のオブジェクトは、他の Office ソリューションを含む他のソリューションに公開できます。 これは、VSTO アドインが、他のソリューションで使用できるようにするサービスを提供する場合に便利です。 たとえば、Web サービスの財務データに対して計算を実行する Microsoft Office Excel 用 VSTO アドインがある場合、実行時に Excel VSTO アドインを呼び出すことによって、他のソリューションでこれらの計算を実行できます。
詳細については、「 他の Office ソリューションから VSTO アドインのコードを呼び出す」を参照してください。