アプリケーション レベルのアドインのプログラミング
アプリケーション レベルのアドインを作成して Microsoft Office アプリケーションを拡張するときは、プロジェクトの ThisAddIn クラスに対して直接コードを記述します。このクラスを使用して、Microsoft Office ホスト アプリケーションのオブジェクト モデルへのアクセス、アプリケーションのユーザー インターフェイス (UI) のカスタマイズ、アドイン内のオブジェクトの他の Office ソリューションへの公開などのタスクを実行できます。
対象: このトピックの情報は、Microsoft Office 2013 および Microsoft Office 2010 のアプリケーション レベルのプロジェクトに適用されます。詳細については、「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で、既定では 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 アプリケーションのオブジェクト モデルの詳細については、以下のトピックを参照してください。
ドキュメントにアクセスするときのOfficeアプリケーションの起動
これらの起動時にそれらを起動します Office 2013 のアプリケーションでは、ドキュメントを開けません場合 Office 2010 のすべてのアプリケーションが自動的にドキュメントを開かずします。このコードでは、文書が開く必要がある場合は、ThisAdd-In_Startup のイベント ハンドラーにコードを追加しないでください。代わりに、userがドキュメントを作成するか開くと、Officeアプリケーションが発生させるイベントにコードを追加します。その方法、コードでその操作を実行する前に文書が開いていることを保証することができます。
次のコード例は、Word文書をuserがドキュメントを作成するか、既存のドキュメントを開くときにのみ使用します。
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 クラスのメンバーを示します。
タスク |
使用するメンバー |
---|---|
読み込まれたアドインを初期化するコードを実行します。 |
コードを ThisAddIn_Startup メソッドに追加します。これが Startup イベントの既定のイベント ハンドラーです。詳細については、「Office プロジェクトのイベント」を参照してください。 |
アドインのアンロード前にアドインが使用したリソースをクリーンアップするコードを実行します。 |
コードを ThisAddIn_Shutdown メソッドに追加します。これが Shutdown イベントの既定のイベント ハンドラーです。詳細については、「Office プロジェクトのイベント」を参照してください。
メモ
Outlookで、既定では ThisAddIn_Startup のイベント ハンドラーは、アドインがアンロードされるときに常に呼び出されるわけではありません。詳細については、「Office プロジェクトのイベント」を参照してください。
|
カスタム作業ウィンドウを表示します。 |
CustomTaskPanes フィールドを使用します。詳細については、「カスタム作業ウィンドウ」を参照してください。 |
アドインのオブジェクトを他の Microsoft Office ソリューションに公開します。 |
RequestComAddInAutomationService メソッドをオーバーライドします。詳細については、「他の Office ソリューションからのアプリケーション レベルのアドインのコードの呼び出し」を参照してください。 |
機能拡張インターフェイスを実装して Microsoft Office system の機能をカスタマイズします。 |
RequestService メソッドをオーバーライドし、インターフェイスを実装するクラスのインスタンスを返します。詳細については、「機能拡張インターフェイスによる UI 機能のカスタマイズ」を参照してください。
メモ
リボンUIをカスタマイズするために、CreateRibbonExtensibilityObject のメソッドをオーバーライドできます。
|
ThisAddIn クラスのデザインについて
.NET Framework 4を対象とするプロジェクトでは、Microsoft.Office.Tools.AddIn は、インターフェイスです。ThisAddIn クラスは Microsoft.Office.Tools.AddInBase クラスから派生します。この基本クラスでは、メンバーへのすべての呼び出しは Visual Studio Tools for Office Runtime の Microsoft.Office.Tools.AddIn インターフェイスの内部実装にリダイレクトされます。
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 ブックの拡張
他の Office ソリューションからのアプリケーション レベルのアドインのコードの呼び出し