Excel COM 外掛與自動化外掛

摘要

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

更多資訊

COM 外掛

COM 外掛為開發者提供了一種擴展 Office 應用程式以執行自訂任務功能的方式。 COM 外掛通常用於自動化 Excel,回應 CommandBar 按鈕、表單或對話框,或其他 Excel 特定事件,例如開啟、關閉工作簿或在工作表上輸入資料。 COM 的附加函式無法直接從工作表中的儲存格公式呼叫。

COM 外掛是進行中的 COM 伺服器, (必須實作 IDTExensibility2 介面的 ActiveX DLL) 。 所有 COM 外掛程式都必須實作此介面的五種方法:OnConnection、OnStartupComplete、OnAddinsUpdate、OnBeginShutDown 和 OnDisconnection。

當 COM 外掛安裝在使用者系統時,會為該外掛建立登錄表條目。 除了一般的 COM 註冊外,每個執行的 Office 應用程式還會註冊一個 COM 外掛。 Excel 使用的 COM 外掛會註冊在以下登錄表中:


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

此金鑰包含每個已安裝 COM 外掛的子鍵。 子鍵的名稱是 COM 外掛的 ProgID。 COM 外掛的子鍵也包含描述該外掛的友善名稱、描述及載入行為的值。 載入行為描述了外掛在 Excel 中的載入方式:啟動時載入、下次啟動時載入、按需載入,或未載入。

 COM 外掛也可以透過 Excel 使用者介面載入與卸載。 若要這麼做,請按照下列步驟進行:

  1. 在檢視選單中,指向工具列,然後點選自訂。
  2. 在工具列對話框中,點選進階標籤。在分類列表中,選擇工具。 在指令列表中找到 COM 外掛,然後拖曳到你選擇的選單或指令列。 關閉工具列對話框。
  3. 點擊你新增的 COM Add-ins 指令,以顯示 COM Add-ins 對話框。 對話框會列出所有已安裝在你系統上的 COM 外掛,並且會選擇目前載入的 COM 外掛。

COM 外掛也可以透過 Excel 使用者介面載入與卸載。 若要這麼做,請按照下列步驟進行:

  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 的應用程式參數來自動化 Excel。

一個自動化外掛,實作
IDTExtensibility2 可透過 COM Add-Ins 對話框與 Add-Ins 對話框在 Excel 使用者介面中載入。 以下描述了自動化外掛的行為,根據它是否載入於其中一個或兩個對話框中:

  • 僅載入於「附加元件」對話框中。

    這個附加元件是按需載入的。 外掛中的函式可以從工作表中的公式中呼叫。

  • 僅載入於 COM 的附加內容對話框中。

    外掛會以 COM 外掛載入,其載入行為由登錄檔中的設定決定。 Add-in 中的函式無法從工作表中的公式呼叫。

  • 同時載入於 COM 外掛對話框與外掛對話框中。

    會載入兩個獨立的插件實例。 一個實例以 COM 外掛載入,另一個實例以自動化外掛載入。 COM 外掛實例使用登錄檔中所示的載入行為;自動化外掛實例會按需載入。 這兩個實例彼此獨立運作,且不共享全域變數。

由於自動化外掛是按需載入,Excel 可能會嘗試在外掛處於儲存格編輯模式時載入。 因此,當你開發支援 IDTExtensibility2 的自動化外掛時,應小心不要在外掛載入時嘗試改變 Excel 狀態。 如需詳細資訊,請參閱「Microsoft 知識庫」中的下列文章:

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

(c) Microsoft Corporation 2001,保留所有權利。 作者:Lori B. Turner,Microsoft Corporation。