Excel COM 增益集和自動化增益集

摘要

Microsoft Office Excel 除了支援元件物件模型 (COM) 增益集之外,還支援自動化增益集。本文將說明這兩種增益集類型的差異。

更多資訊

COM 增益集

COM 增益集可為開發人員提供一種擴展 Office 應用程式功能以進行自訂工作的方法。 COM 增益集通常用來自動化 Excel,以回應 CommandBar 按鈕、表單或對話方塊或某些其他 Excel 特定事件,例如開啟或關閉活頁簿,或在工作表上輸入資料。 您無法直接從工作表的儲存格公式呼叫 COM 增益集函數。

COM 增益集是必須實作 IDTExensibility2 介面 (ActiveX DLL) 的同處理序 COM 伺服器。 所有 COM 增益集都必須實作此介面的五個方法中的每一個:OnConnection、OnStartupComplete、OnAddinsUpdate、OnBeginShutDown 和 OnDisconnection。

在使用者的系統上安裝 COM 增益集時,隨即會為該增益集建立登錄項目。 除了一般 COM 註冊之外,COM 增益集也會在其執行的每個 Office 應用程式中註冊。 Excel 使用的 COM 增益集會在下列登錄機碼中登錄:


            
HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\ 

此機碼包含每個已安裝之 COM 增益集的子機碼。 子機碼的名稱是 COM 增益集的 ProgID。 COM 增益集的子機碼也包含描述 COM 增益集的易記名稱、描述及載入行為的值。 載入行為描述增益集在 Excel 中的載入方式:在啟動時載入、僅在下次啟動時載入、隨選載入或未載入。

 您也可以透過 Excel 使用者介面載入和解除載入 COM 增益集。 若要這麼做,請按照下列步驟進行:

  1. 在 [檢視] 功能表上,指向 [工具列],然後按一下 [自訂]。
  2. 在 [工具列] 對話方塊中,按一下 [進階] 索引標籤。在類別清單中,選取 [工具]。 在命令清單中找到 COM 增益集,然後將命令拖曳至您選擇的功能表或命令列。 關閉 [工具列] 對話方塊。
  3. 按一下您新增的 [COM 增益集] 命令以顯示 [COM 增益集] 對話方塊。 對話方塊會列出您系統上安裝的所有 COM 增益集,並選取目前載入的 COM 增益集。

您也可以透過 Excel 使用者介面載入和解除載入 COM 增益集。 若要這麼做,請按照下列步驟進行:

  1. 按一下 [Microsoft Office 按鈕],然後按一下 [Excel 選項]。

  2. 按一下 [增益集]。

  3. 在 [管理] 底下,按一下 [COM 增益集],然後按一下 [執行 ]。

    [ COM 增益集] 對話方塊會列出電腦上安裝的所有 COM 增益集。 已選取目前載入的 COM 增益集。

如需詳細資訊,請參閱下列 Microsoft 網站:

Office 增益集平台概觀

自動化增益集

除了 COM 增益集,Excel 還支援自動化增益集。以 COM 增益集為基礎的自動化增益集,其中自動化增益集中的函數可以從 Excel 工作表中的公式呼叫。 COM 增益集必須是支援 IDTExtensibility2 介面的同處理序 COM 伺服器;不過,自動化增益集可以是同處理序或跨進程 COM 伺服器,而且實作 IDTExtensibility2 是選擇性的。

若要在 Excel 中使用自動化增益集的函數,請遵循下列步驟:

  1. 在 [工具] 功能表上,按一下 [增益集]。
  2. 在 [Add-Ins] 對話方塊中,按一下 [自動化]。 從已註冊的 COM 伺服器清單中,選取您的自動化增益集,然後按一下 [確定]。
  3. [增益集] 對話方塊中隨即出現 [自動化增益集]。 按一下 [確定] 以關閉 [Add-Ins] 對話方塊。

若要在 Excel 2007 及更新版本中使用自動化增益集的函數,請遵循下列步驟:

  1. 按一下 [Microsoft Office 按鈕],然後按一下 [Excel 選項]。

  2. 按一下 [增益集]。

  3. 在 [管理] 底下,按一下 [Excel 增益集],然後按一下 [執行]。

  4. 在 [增益集] 對話方塊中,按一下 [自動化]。 在已註冊的 COM 伺服器清單中,按一下您的自動化增益集,然後按一下 [確定]。

    [增 益集 ] 對話方塊中隨即出現 [自動化增益集]。 按一下 [確定] 以關閉 [ 增益集] 對話方塊。

當您在 [Add-Ins] 對話方塊中對清單進行新增內容,或當您選取並清除清單中的 [增益集] 時,Excel 會將您的變更儲存在登錄中。 首先,Excel 使用下列登錄設定來判斷 [增益集] 清單中的自動化增益集是否已載入:


 Excel 2002
Key:            HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Options
String:         OPENx
Sample Value:   /A "ServerName.ClassName"

 Excel 2003
Key:            HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Options
String:         OPENx
Sample Value:   /A "ServerName.ClassName"
Excel 2007
Key:            HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Options
String:         OPENx
Sample Value:   /A "ServerName.ClassName"

注意:根據您使用的版本變更 Office 版本號碼。

字串值中使用的 /A 參數是 Excel 的新參數和較舊的參數,專門用來載入自動化增益集。所有自動化增益集都會隨選載入;沒有任何設定可以變更自動化增益集的載入行為。

清除 [Add-Ins] 對話方塊中所列的自動化增益集時,會在下列登錄機碼中建立一個名稱等於增益集 ProgID 的子機碼:

HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Add-in Manager
Excel 2003:

HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Add-in Manager

HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Add-in Manager
此登錄設定可確保您新增至 [增益集] 清單中的自動化增益集會保留在清單中,即使您選擇不載入它們。

如需詳細資訊,請參閱下列 Microsoft 網站:

Office 增益集平台概觀

實作 IDTExtensibility2 的自動化增益集

如前所述,自動化增益集可以實作 IDTExtensibility2,但並非必要,Excel 才能從工作表呼叫增益集中的函數。 如果您需要自動化增益集取得 Excel 執行個體的參照,您可以實作 IDTExtensibility2,並使用 OnConnection 的 Application 參數將 Excel 自動化。

實現的自動化增益集
IDTExtensibility2 可以在 Excel 使用者介面中透過 [COM Add-Ins] 對話方塊和 [Add-Ins] 對話方塊載入。 下列根據是在其中一個或兩個對話方塊載入自動化增益集來描述自動化增益集的行為:

  • 只在 [增益集] 對話方塊中載入。

    增益集會隨選載入。 增益集中的函數可以從工作表中的公式呼叫。

  • 只在 [COM 增益集] 對話方塊中載入。

    增益集會載入為 COM 增益集,其載入行為取決於登錄中的設定。 您無法從工作表的公式呼叫增益集中的函數。

  • 在 [COM 增益集] 對話方塊和 [增益集] 對話方塊中載入。

    隨即載入增益集的兩個個別執行個體。 一個執行個體載入為 COM 增益集,另一個執行個體則載入為自動化增益集。 COM 增益集執行個體會使用登錄中指出的載入行為;自動化增益集執行個體會視需要載入。 這兩個執行個體彼此獨立運作,且不共用全域變數。

由於自動化增益集是隨選載入,Excel 可能會在增益集處於儲存格編輯模式時嘗試載入增益集。 因此,當您開發支援 IDTExtensibility2 的自動化增益集時,應該小心不要在載入增益集時執行任何嘗試變更 Excel 狀態的動作。 如需詳細資訊,請參閱「Microsoft 知識庫」中的下列文章:

284876 錯誤:載入自動化 Add-In 時 Excel 失敗

(c) Microsoft Corporation 2001,保留所有權利。 Microsoft Corporation Lori B. Turner 的貢獻。