他の Office ソリューションからのアプリケーション レベルのアドインのコードの呼び出し
更新 : 2007 年 11 月
対象 |
---|
このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。 プロジェクトの種類
Microsoft Office のバージョン
詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。 |
アドインのオブジェクトを、他の 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 の実装は、次の要件を満たすクラスのインスタンスを返す必要があります。
クラスはパブリックで、ComVisibleAttribute 属性が true に設定されている。
クラスが IDispatch インターフェイスを公開する。このクラスがインターフェイスを公開するには、次の 2 とおりの方法があります。
クラスに、ComVisibleAttribute が true に設定され、InterfaceTypeAttribute が InterfaceIsIDispatch または InterfaceIsDual に設定されたインターフェイスを実装する。
または
クラスの ClassInterfaceAttribute を AutoDual または AutoDispatch に設定する。
これらの要件を満たしていないオブジェクトを返すと、実装が呼び出された後に 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 ソリューションのコード (公開されたアドインではないもの) で、次の手順を実行します。
公開されたアドインを表す COMAddIn オブジェクトを取得します。Application クラスの COMAddIns プロパティを使用して、利用可能なすべてのアドインにアクセスできます。
アドインのメソッドを呼び出す 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 プロジェクトを作成する