在應用程式層級增益集中呼叫其他 Office 方案的程式碼
更新:2007 年 11 月
適用於 |
---|
本主題中的資訊僅適用於指定的 Visual Studio Tools for Office 專案和 Microsoft Office 版本。 專案類型
Microsoft Office 版本
如需詳細資訊,請參閱依應用程式和專案類型提供的功能。 |
您可以將增益集中的物件公開 (Expose) 給其他 Microsoft Office 方案。如果您想要讓其他 Office 方案也能使用增益集提供的服務時,這就很有用。例如,如果有個 Microsoft Office Excel 增益集會計算 Web 服務提供的財務資料,則其他 Office 方案可以在執行階段呼叫這個 Excel 增益集來執行這些計算。
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 類別 (Class) 中的 RequestComAddInAutomationService 方法。傳回想要公開給其他 Office 方案的物件。
載入增益集時,Visual Studio Tools for Office 執行階段會呼叫 RequestComAddInAutomationService 方法。執行階段會將傳回的物件指派給代表增益集之 COMAddIn 物件的 Object 屬性。這個 COMAddIn 物件可供其他 Office 方案使用。
所傳回物件的需求
RequestComAddInAutomationService 的實作所傳回的類別執行個體必須符合下列要求:
類別必須是公用的,且具有設為 true 的 ComVisibleAttribute 屬性。
類別必須公開 IDispatch 介面。有二種方法可讓類別符合上述要求:
類別可實作其 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 方案 (不是公開的增益集) 的程式碼中,執行下列步驟:
下列程式碼範例示範如何使用 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
請參閱
工作
HOW TO:建立 Visual Studio Tools for Office 專案