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