HOW TO:使用 VBA 與 Office Developer 建立 Office COM 增益集

本文曾發行於 CHT306130
本文已封存。本文係以「現狀」提供且不會再更新。
結論
本文將告訴您,如何顯示一個會在您啟動 Microsoft Excel 或 Microsoft Word 時歡迎您的自訂表單。「元件物件模型」(COM) 增益集可提供在已編譯的動態連結程式庫 (DLL) 中集中共用程式碼的方法,而您可以很容易的在任何 Office 應用程式中執行此 DLL (例如,您可以從 Excel、Word 與 Microsoft Access 來存取 Microsoft Outlook 連絡人)。在 Microsoft Office 中開發 COM DLL 的最簡單的方法是使用增益功能專案,增益功能提供了設計工具以及IDTExtensibility2程式庫的參考。

回到頁首

需求

本文假設您熟悉下列主題:

  • 在 Office XP 應用程式中建立 Visual Basic for Applications (VBA) 程序。
  • 使用 VBA 中的自訂表單。
  • 自訂 Office XP 工具列。
回到頁首

建立增益功能專案

您可以在任何 Office 2000 或 Office XP 應用程式中建立增益功能。本範例適用於 Microsoft Word 2002。
  1. 啟動 Microsoft Word 2002。
  2. [工具]功能表,指向[巨集],然後按一下[Visual Basic 編輯器]
  3. 在 [Visual Basic 編輯器] (VBE) 中,按一下[檔案]功能表上的[新增專案]
  4. [新增專案]對話方塊中,按一下[增益功能專案]。這樣會自動提供「增益功能設計工具」。
  5. 如果沒有看見 [屬性] 視窗,請按一下[檢視]功能表上的[屬性視窗]
  6. 在 [屬性] 視窗中,將專案名稱 AddInDesigner1 重新命名為 WelcomeAddIn。
  7. [插入]功能表,按一下[自訂表單]以插入自訂表單。
  8. 從工具箱中,新增一個 Label 與一個CommandButton 至自訂表單。
  9. 在 [屬性] 視窗中,變更控制項的屬性以符合下表的值:
    控制項屬性
    LabelNamelblMessage
    CaptionWelcome
    Font14pt
    AutoSizeTrue
    CommandButtonNamecmdOK
    CaptionOK
    UserFormNamefrmWelcome

  10. [插入]功能表,按一下[模組]以插入標準模組。
  11. 將下面的全域字串變數宣告新增至此標準模組:
    Public gstrUserName As String'This variable will be used to store the name of the user as defined'in the Options dialog boxes (from the Tools menu) in Word and Excel.
  12. 在模組中,新增下面程式碼以建立一個稱為DisplayForm的公用 Sub 程序,以便在螢幕上顯示此表單:
    Public Sub DisplayForm()  frmWelcome.Show vbModalEnd Sub
  13. 檢視 frmWelcome 表單的程式碼視窗,然後將下面程式碼新增至UserForm_Initialize事件,以連接標籤標題和字串變數:
    lblMessage.Caption = lblMessage.Caption & " " & gstrUserName
  14. 將下面程式碼新增至 CommandButtoncmdOKClick事件以卸載此表單:
    Unload me
回到頁首

變更增益功能設計工具的屬性

執行下列步驟以變更設計工具的屬性,這樣只要您一啟動 Microsoft Excel,增益集就會啟動:
  1. 在 [專案總管] 中,按兩下元件以返回「增益功能設計工具」。
  2. 在設計工具的[一般]索引標籤上,變更設計工具的屬性以符合下表的值:
    屬性
    AddIn Display NameFunFormMessage
    AddIn DescriptionThis contains code that is specific to Excel
    ApplicationMicrosoft Excel
    Application VersionMicrosoft Excel 10.0
    Initial Load BehaviorStartup
回到頁首

實作 IDTExtensibility2 事件

  1. [檢視]功能表,按一下[程式碼]以檢視設計工具背後的程式碼模組。
  2. [工具]功能表,按一下[引用],然後設定指向「Microsoft Excel 物件程式庫」(Microsoft Excel Object Library) 的引用項目。
  3. [物件]下拉式清單中,按一下[AddinInstance]。在[程序]下拉式清單中,按一下[OnConnection]

    此事件對於建立 CommandBar 按鈕很有用,或是當增益功能連線至主應用程式時以事件 (例如應用程式事件) 來關聯程式碼,此事件也很有用。
  4. 將下面程式碼新增至AddinInstance_OnConnection事件程序以便在全域變數strUserName中儲存使用者名稱,並呼叫DisplayForm程序:
    gstrUserName = Application.UserNameDisplayForm
  5. 在 VBE 中,按一下[儲存],然後將專案命名為 Welcome.vba。
回到頁首

新增第二個設計工具

在此程序中,您會新增第二個設計工具以便在 Microsoft Word 中執行相同的功能。
  1. 在 VBE 中建立另一個增益功能。根據預設值,會隨即建立 AddInProject2。
  2. 在 [專案總管] 中,將新的「增益功能設計工具」介面 (AddInDesigner1) 拖曳至現有的增益功能專案中。專案中會有兩個設計工具。
  3. 在 [專案總管] 中,以右鍵按一下[AddInProject2],然後按一下[關閉專案]以移除您剛才建立的專案。
  4. 當您收到下面訊息或類似訊息時
    專案 AddInProject2 已經被修改。您希望儲存這個變更嗎?
    請按一下[否]
  5. 變更設計工具的屬性,指定Word 10作為目標應用程式並在Startup(啟動) 時載入。
  6. 將下面程式碼新增至新的 Word 設計工具的AddinInstance_OnConnection事件程序,這和先前寫給 Excel 設計工具的OnConnection事件的程式碼相同:
    gstrUserName = Application.UserNameDisplayForm
回到頁首

對增益功能進行偵錯

  1. 如果您願意,可在程式碼中加入適當的中斷點。
  2. 在 VBE 中,按一下[執行]功能表上的[執行專案]以執行增益功能。
  3. 啟動 Microsoft Excel。當此專案啟動時,您可能會看見「增益功能設計工具」的對話方塊。按一下選項以啟動某個應用程式,然後瀏覽至 Excel.exe。如果沒有出現此對話方塊,請按一下[開始],指向[程式集],然後按一下[Microsoft Excel]以啟動 Excel。您的自訂表單應該就會出現。
  4. 如果 COM 增益功能管理員尚無法使用,請將[COM 增益集]指令新增至工具列,如下所示:
    1. [工具]功能表上,按一下[自訂]
    2. [自訂]對話方塊中,在[指令]索引標籤上,將[COM 增益集]指令從[工具]類別中拖曳至工具列上,或拖曳至[工具]功能表[CommandBarPopup]物件上。
  5. 按一下[COM 增益集]指令列以顯示 COM 增益功能管理員 (CAM)。CAM 中的清單會顯示出所有載入的增益集。
  6. 若要測試OnConnection事件,請清除 CAM 中的[Welcome]增益功能核取方塊,然後按一下[確定]。重新顯示 CAM,選取[Welcome]核取方塊,然後按一下[確定]。自訂表單應該會再次出現。
  7. 關閉主應用程式 (不論是 Word 或 Excel),然後在 VBE 中按一下[執行]功能表上的[停止專案]以停止執行此專案。
回到頁首

確認增益功能可以運作

您現在可以編譯此增益功能並檢查它在另一部電腦上是否可以運作。
  1. 在 VBE 中儲存此專案。這是您可編輯的版本,已編譯好的狀態無法讓您進行任何修改。
  2. [檔案]功能表,按一下[製成 Welcome.DLL]
  3. 使用regsvr32指令來註冊此 DLL,如下所示:
    1. 從 Windows[開始]功能表,按一下[執行]
    2. [開啟]文字方塊中,輸入下面文字:
      regsvr32 <path>\Welcome.DLL
      其中 <path> 是 DLL 的檔案系統路徑。
  4. 按一下[確定]以確認此 DLL 的註冊。
  5. 執行 Excel 與/或 Word。您的自訂表單應該會出現。如果沒有看見您的自訂表單,請按一下[工具]功能表上的[Com 增益集],然後選取[Welcome]核取方塊。
注意:散發 DLL 最簡單的方法是使用「封裝暨部署精靈」。

回到頁首

疑難排解

  • 確認您替增益功能在載入記憶體中時撰寫簡短又有效率的程式碼。例如,如果您的OnConnection事件會在啟動時處理資料庫的資料,使用者會以為電腦停止回應了 (掛掉)。
  • 請小心使用自訂表單。當使用者按一下主應用程式時,因為表單會隱藏在主應用程式後面,使用者可能會以為表單不見了。替代方法是使用強制回應的表單來克服此問題。若要建立強制回應的表單,請使用vbModal常數,如下所示:
    frmMyUserForm.Show vbModal
    若要查看此程式碼在本範例中的適用位置,請參閱〈建立增益功能專案〉一節步驟 12 中的程式碼。
回到頁首

參考

如需增益集範本,請參考 Office XP Developer CD 上的 \Samples\Working with AddIns\VBA_COM_AddIn 資料夾。

如需如何建立 CommandBar 按鈕的程式碼範例,請參閱下面的 MSDN 網站:如需如何設計 Outlook 增益集的資訊,請參閱下面的 MSDN 網站:

回到頁首


参考
本文件是根據 Microsoft Knowledgebase 文件編號 Q306130 翻譯的。若要參考原始英文文件內容,請至以下網址:

MOD
內容

文章識別碼:306130 - 最後檢閱時間:12/06/2015 04:53:26 - 修訂: 1.1

Microsoft Office XP Developer Edition, Microsoft Office XP Professional Edition

  • kbnosurvey kbarchive kbhowto kbhowtomaster KB306130
意見反應