萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 辦公室軟體 >  >> Excel 教學 >> Excel 綜合

Excel 2007 RibbonX 自訂功能區開發教學:Custom UI Editor 與 WinRAR 手動打包雙軌實作

Excel 2007 引入 RibbonX (Office Fluent UI) 技術,透過 XML 定義自訂標籤、群組、按鈕、下拉選單等 UI 元素,並對應 VBA 回呼程序。本文提供從零打造自訂功能區的完整實作流程:不僅介紹專業工具 Office Custom UI Editor,更獨家詳解 WinRAR 手動修改 .xlsm 封裝 的無工具替代方案,讓無法安裝工具的環境也能完成開發。

核心架構:XML + VBA 回呼

  • customUI.xml:定義 UI 結構(標籤、群組、控制項),每個控制項指定 onAction 回呼名稱。
  • VBA 標準模組:實作回呼 Sub(簽名固定:Sub 回呼名稱(control As IRibbonControl))。
  • 關聯:.xlsm 封裝內 customUI\customUI.xml 經由 _rels\.rels 關聯至工作簿。

方案一:使用 Office Custom UI Editor(推薦、標準流程)

  1. 下載安裝 Office RibbonX Editor (開源現代版) 或舊版 Custom UI Editor。
  2. 開啟 .xlsm 檔案 → 「插入」→「Office 2007+ Custom UI Part」→ 貼入 XML → 驗證 → 儲存。
  3. 工具自動處理關聯檔與壓縮,零失誤。

方案二:WinRAR 手動打包(無工具環境應急方案)

Step 1:準備 XML 與 VBA

<customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui">
  <ribbon>
    <tabs>
      <tab id="CustomTab" label="My Tab">
        <group id="SampleGroup" label="Company Name">
          <button id="BtnInsert" label="Insert Company Name" size="large" onAction="InsertCompanyName"/>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

另存為 customUI.xml → 放入資料夾 customUI(資料夾名固定)。

VBA 模組:

Sub InsertCompanyName(control As IRibbonControl)
    If TypeName(Selection) <> "Range" Then Exit Sub
    Selection.Value = "Microsoft Corporation"
End Sub

VBA 模組程式碼

Step 2:封裝為 .xlsm → 改副檔名 .zip → 注入 customUI 資料夾

  1. 建立啟用巨集活頁簿 RibbonSample.xlsm,匯入上述 VBA 模組,儲存關閉。
  2. 重命名為 RibbonSample.xlsm.zip。
  3. 用 WinRAR 開啟 .zip → 將 customUI 資料夾拖入壓縮包根目錄。
  4. 關閉 WinRAR → 改回 .xlsm。

WinRAR 開啟 zip 見 _rels 資料夾

Step 3:修正關聯檔 _rels/.rels(關鍵步驟,原文截斷處補完)

  1. 解壓縮 _rels\.rels 到桌面。
  2. 用文字編輯器開啟,在 <Relationships> 內新增關聯:
<Relationship Id="rIdCustomUI" Type="https://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml"/>
  1. 存檔 → 拖回 WinRAR 覆蓋 _rels\.rels。
  2. 改回 .xlsm,開啟 Excel,「My Tab」標籤即出現,按鈕運作正常。

進階 RibbonX 元素速查

元素屬性範例用途
tabid, label, insertAfterMso, insertBeforeMso頂層標籤
groupid, label, autoScale標籤內分組
buttonid, label, imageMso, size, onAction, getEnabled按鈕(大/小/圖示)
toggleButtonid, label, onAction, getPressed切換按鈕
comboBoxid, label, onChange, getItemCount, getItemLabel下拉輸入框
dropDownid, label, onAction, getItemCount, getItemLabel純下拉選單
galleryid, label, columns, rows, getItemCount, getItemImage, getItemLabel圖庫選擇器
menuid, label, itemSize下拉選單容器

除錯技巧

  • XML 錯誤:Excel 啟動時會彈出錯誤訊息,記錄於 %TEMP%\CustomUI_Errors.log。
  • VBA 回呼簽名錯誤:按鈕點擊無反應,立即視窗 ?InsertCompanyName(Nothing) 測試。
  • 圖示不顯示:改用 imageMso 內建圖示(如 ImageMso="HappyFace")或 getImage 回呼動態載入。
copyright © 萬盛學電腦網 all rights reserved