他の Office ソリューションからのアプリケーション レベルのアドインのコードの呼び出し

更新 : 2007 年 11 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • アプリケーション レベルのプロジェクト

Microsoft Office のバージョン

  • 2007 Microsoft Office system

  • Microsoft Office 2003

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

アドインのオブジェクトを、他の Microsoft Office ソリューションに公開することができます。これは、作成したアドインが、他の Office ソリューションで使用可能なサービスを提供する場合に役立ちます。たとえば、Web サービスの財務データについて計算する Microsoft Office Excel のアドインがある場合、実行時に Excel アドインを呼び出すことによって、他の Office ソリューションがこれらの計算を実行できます。

Visual Studio Tools for Office は、ドキュメント レベルのカスタマイズに対しても同様の機能を提供します。2007 Microsoft Office system のカスタマイズを開発している場合、ドキュメント内の VBA コードから、カスタマイズ内にあるコードを呼び出すことができます。詳細については、「VBA からドキュメント レベルのカスタマイズ内のコードを呼び出す」を参照してください。

アドインのコードを呼び出すことができる Office ソリューション

アドインのオブジェクトを、次のような種類の Office ソリューションに公開できます。

  • その他の Visual Studio Tools for Office アドイン

  • アドインと同じアプリケーション プロセスで読み込まれるドキュメント レベルのカスタマイズ

  • COM アドイン (IDTExtensibility2 インターフェイスを直接実装するアドイン)

  • アドインと同じアプリケーション プロセスで読み込まれるドキュメントの Visual Basic for Applications (VBA) コード

他の Office ソリューションへのオブジェクトの公開

オブジェクトを他のアドインに公開するには、ThisAddIn クラスの RequestComAddInAutomationService メソッドをオーバーライドします。他の Office ソリューションに公開するオブジェクトを返します。

アドインが読み込まれるときに、Visual Studio Tools for Office ランタイムは RequestComAddInAutomationService メソッドを呼び出します。ランタイムは、返されたオブジェクトを、アドインを表す COMAddIn オブジェクトの Object プロパティに割り当てます。この COMAddIn オブジェクトを、他の Office ソリューションで利用できます。

返されるオブジェクトの要件

RequestComAddInAutomationService の実装は、次の要件を満たすクラスのインスタンスを返す必要があります。

これらの要件を満たしていないオブジェクトを返すと、実装が呼び出された後に Visual Studio Tools for Office ランタイムによって InvalidCastException がスローされます。

これらの要件を満たすクラスの例については、「チュートリアル : アプリケーション レベルのアドインのコードを VBA から呼び出す」を参照してください。

RequestComAddInAutomationService をオーバーライドする方法を次のコード例に示します。この例では、他の Office アプリケーションに公開する AddInUtilities という名前のクラスが定義されていることと、AddInUtilities クラスが上記で指定した要件を満たしていることを前提としています。より広範なチュートリアルでこのコードを参照するには、「チュートリアル : アプリケーション レベルのアドインのコードを VBA から呼び出す」をご覧ください。

Private utilities As AddInUtilities

Protected Overrides Function RequestComAddInAutomationService() As Object
    If utilities Is Nothing Then
        utilities = New AddInUtilities()
    End If
    Return utilities
End Function
private AddInUtilities utilities;

protected override object RequestComAddInAutomationService()
{
    if (utilities == null)
        utilities = new AddInUtilities();

    return utilities;
}

他の Office ソリューションからのオブジェクトへのアクセス

別の Office ソリューションのコード (公開されたアドインではないもの) で、次の手順を実行します。

  1. 公開されたアドインを表す COMAddIn オブジェクトを取得します。Application クラスの COMAddIns プロパティを使用して、利用可能なすべてのアドインにアクセスできます。

  2. COMAddIn オブジェクトの Object プロパティにアクセスします。

アドインのメソッドを呼び出す VBA の使用方法を示すコード例を次に示します。この VBA マクロは、ExcelImportData というアドインに定義されている、ImportData というメソッドを呼び出します。より広範なチュートリアルでこのコードを参照するには、「チュートリアル : アプリケーション レベルのアドインのコードを VBA から呼び出す」をご覧ください。

Sub CallVSTOMethod()
    Dim addIn As COMAddIn
    Dim automationbject As Object
    Set addIn = Application.COMAddIns("ExcelImportData")
    Set automationObject = addIn.Object
    automationObject.ImportData
End Sub

参照

処理手順

チュートリアル : アプリケーション レベルのアドインのコードを VBA から呼び出す

方法 : Visual Studio Tools for Office プロジェクトを作成する

概念

アプリケーション レベルのアドインのプログラミング

Office ソリューションの開発

AddIn ホスト項目

機能拡張インターフェイスによる UI 機能のカスタマイズ

アプリケーション レベルのアドインのアーキテクチャ