本逐步解說示範如何將 VSTO 增益集中的物件公開給其他 Microsoft Office 解決方案,包括 Visual Basic for Applications (VBA) 和 COM VSTO 增益集。
適用於: 本主題中的資訊適用於 VSTO 增益集專案。 如需詳細資訊,請參閱 Office 應用程式和專案類型所提供的功能。
雖然本逐步解說特別使用 Excel,但逐步解說所示範的概念適用於 Visual Studio 提供的任何 VSTO 增益集專案範本。
本逐步解說將說明下列工作:
定義可公開給其他 Office 解決方案的類別。
將類別公開給其他 Office 解決方案。
從 VBA 程式碼調用類別的方法。
備註
在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱 個人化 IDE。
先決條件
您需要下列組件才能完成本步驟解說:
包含 Microsoft Office 開發人員工具的 Visual Studio 版本。 如需詳細資訊,請參閱 設定電腦以開發 Office 解決方案。
Microsoft Excel
建立 VSTO 增益集專案
第一步是建立 Excel 的 VSTO 外掛專案。
建立新專案
使用 Excel VSTO 增益集專案範本,建立名稱為 ExcelImportData 的 Excel VSTO 增益集專案。 如需詳細資訊,請參閱 如何:在 Visual Studio 中建立 Office 專案。
Visual Studio 會開啟 ThisAddIn.cs 或 ThisAddIn.vb 程式碼檔案,並將 ExcelImportData 專案新增至 [方案總管]。
定義可公開給其他 Office 解決方案的類別
本逐步解說的目的是從 VBA 程式碼呼叫 VSTO 增益集中的一個名為 AddInUtilities 的類別的 ImportData 方法。 這個方法將字串寫入活動工作表的儲存格 A1。
若要將 AddInUtilities 類別公開給其他 Office 解決方案,您必須將類別設為公開且對 COM 可見。 您也必須在類別中公開 IDispatch 介面。 下列程式中的程式碼示範符合這些需求的一種方式。 如需詳細資訊,請參閱 在其他 Office 解決方案中呼叫 VSTO 增益集的程式碼。
定義可公開給其他 Office 解決方案的類別
在 [專案 ] 功能表上,按一下 [新增類別]。
在 [ 新增專案] 對話方塊中,將新類別的名稱變更為 AddInUtilities,然後按一下 [新增]。
AddInUtilities.cs或AddInUtilities.vb檔案會在程式碼編輯器中開啟。
將下列指示詞新增至檔案頂端。
將
AddInUtilities類別替換為下列程式碼。[ComVisible(true)] public interface IAddInUtilities { void ImportData(); } [ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] public class AddInUtilities : IAddInUtilities { // This method tries to write a string to cell A1 in the active worksheet. public void ImportData() { Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet as Excel.Worksheet; if (activeWorksheet != null) { Excel.Range range1 = activeWorksheet.get_Range("A1", System.Type.Missing); range1.Value2 = "This is my data"; } } }此程式碼會讓
AddInUtilities類別對 COM 可見,並將方法新增至ImportData類別。 若要公開 IDispatch 介面,類別AddInUtilities也具有 ClassInterfaceAttribute 屬性,而且會實作 COM 可見的介面。
將類別公開給其他 Office 解決方案
若要將AddInUtilities類別公開給其他 Office 解決方案,請在ThisAddIn類別中覆寫RequestComAddInAutomationService方法。 覆寫方法時,返回AddInUtilities類別的實例。
將 AddInUtilities 類別公開給其他 Office 解決方案
在 [方案總管] 中,展開 [Excel]。
以滑鼠右鍵按一下 ThisAddIn.cs 或 ThisAddIn.vb,然後按一下 [ 檢視程式碼]。
將下列程式碼
ThisAddIn新增至類別。在 [建置] 功能表上,按一下 [建置解決方案]。
確認解決方案建置時沒有錯誤。
測試 VSTO 增益集
您可以從數種不同類型的 Office 解決方案呼叫類別 AddInUtilities 。 在本逐步解說中,您將在 Excel 活頁簿中使用 VBA 程式碼。 如需更多關於其他您可以使用的 Office 解決方案類型的資訊,請參閱 從其他 Office 解決方案呼叫 VSTO 增益集中的程式碼。
要測試您的 VSTO 增益集
請按 F5 執行您的專案。
在 Excel 中,將使用中的活頁簿儲存為 Excel Macro-Enabled 活頁簿 (*.xlsm)。 將其保存在方便的位置,例如桌面。
在功能區上,按一下 [開發人員] 索引標籤。
備註
如果「 開發人員」 標籤不可見,您必須先顯示它。 如需詳細資訊,請參閱 如何:在功能區上顯示開發人員索引標籤。
在 [ 程式碼 ] 群組中,按一下 [Visual Basic]。
Visual Basic 編輯器隨即開啟。
在 專案 視窗中,按兩下 此活頁簿。
物件的
ThisWorkbook程式碼檔隨即開啟。將下列 VBA 程式碼新增至程式碼檔案。 此程式碼會先取得代表 ExcelImportData VSTO 增益集的 COMAddIn 物件。 然後,程式碼會使用 COMAddIn 物件的 Object 屬性來呼叫
ImportData方法。Sub CallVSTOMethod() Dim addIn As COMAddIn Dim automationObject As Object Set addIn = Application.COMAddIns("ExcelImportData") Set automationObject = addIn.Object automationObject.ImportData End Sub按 F5。
確認已將新的 [匯入的資料 表] 新增至活頁簿。 此外,請確認儲存格 A1 包含字串 This is my data。
結束 Excel。
後續步驟
您可以從下列主題深入瞭解如何對 VSTO 增益集進行程式設計:
使用類別
ThisAddIn來自動化主機應用程式,並在 VSTO 增益集專案中執行其他工作。 如需詳細資訊,請參閱 程式設計 VSTO 增益集。在 VSTO 增益集中建立自訂工作窗格。 如需詳細資訊,請參閱 自訂工作窗格 和 如何:將自訂工作窗格新增至應用程式。
自訂功能區在 VSTO Add-in 中。 如需詳細資訊,請參閱 功能區概觀 和 如何:開始自訂功能區。