相关文章推荐
眉毛粗的风衣  ·  Fluent API - ...·  1 月前    · 
眉毛粗的风衣  ·  Segoe Fluent Icons ...·  1 月前    · 

Office Fluent 使用者介面的新功能區元件已取代在某些 Microsoft Office 應用程式中使用 CommandBars

Office Fluent 功能區會取代舊版 Office 的階層式功能表、工具列和工作窗格的先前系統。 功能區的介面較簡單,最適於促進效率及搜尋功能。 還改善了功能區的快顯功能表、工具提示、迷你工具列和快速鍵等,提升使用者的效能和生產力。

此外,您可使用「功能區擴充性」(Ribbon Extensibility,或稱 RibbonX) 改善使用者經驗。 您可以使用可延伸標記語言 (XML) 和數種傳統程式語言之一來操作組成功能區的元件。 而且由於 XML 是純文字,所以可以用任何文字編輯器或您偏好的 XML 編輯器來建立自訂檔案。 因為每個應用程式都使用相同的程式設計模型,所以自訂檔案只需稍加調整,即可重複使用。 例如,您可以重複使用您在 Word、Excel、Access 或 PowerPoint 中建立的自訂檔案。

使用 XML 標記檔案來自訂功能區,即可大幅降低使用 CommandBars 物件模型建立複雜增益集的需求。 而且,在舊版 Office 中所撰寫的增益集,幾乎不必修改便可繼續在功能區中使用。 您可以執行下列任何動作,在 Word、Excel 或 PowerPoint 中建立功能區的應用層級自訂:

  • 在 Managed 或 Unmanaged 程式碼中使用 COM 增益集。
  • 使用應用程式特定的增益集,例如 .ppam 和 .xlam 檔案。
  • 在 Word 中使用 (.dotm 檔案) 範本。
  • 在一般的案例中,COM 增益集中的程式碼程序會從外部的自訂檔案,或從程式碼本身所含的 XML 傳回 XML 標記。 當應用程式啟動時,增益集會載入並執行傳回 XML 標記的程式碼。 Office 會針對 XSD 架構驗證 XML 標記,然後將它載入記憶體,然後在功能區顯示之前將它套用至功能區。 功能表項目和控制項會使用回呼程序來執行增益集中的程式碼。

    文件層級的自訂則使用相同的 XML 標記,以及具有下列其中一個副檔名的 Open XML Formats 檔案:docx、.docm、.xlsx、.xlsm、.pptx 或 .pptm。 在此案例中,您要建立包含 XML 標記的自訂檔案,並將其儲存到資料夾。 接著則要將 Open XML Formats 容器中的組件修改為指向自訂檔案。 在 Office 應用程式中開啟文件時,自訂檔案會載入至記憶體並套用至功能區。 接著命令和控制項就會呼叫文件中所含的程式碼以提供其功能。

    現有的解決方案

    在 Office 2007 之前的 Office 版本中,開發人員使用 CommandBars 物件模型來建立修改 UI 的 Visual Basic 程式碼。 在 Office 中,此舊版程式碼會在大部分情況下繼續運作,而不需要修改。 不過,對 Office 2003 中工具列所做的變更現在會出現在 Office 的 [載入 宏] 索引標籤上。

    出現的自訂類型取決於增益集的原始設計。 例如,Office 會建立功能表 命令 群組,其中包含您新增至上一個功能表結構的專案, ([ 檔案 ] 功能表、 [插入 ] 功能表、[ 工具 ] 功能表等) 。 它也會建立工具 欄命令 群組,其中包含您新增至先前內建工具列的專案, (例如 標準 工具列、 格式化 工具列和 圖片 工具列) 。 此外,增益集或檔中的自訂工具列會出現在 [ 載入 宏] 索引標籤上的 [ 自訂工具列 ] 群組中。

    回呼程式將功能新增至功能區

    使用功能區擴充性,您可以指定回呼來更新屬性,並在執行時間從您的 UI 執行動作。 例如,請考慮下列 RibbonX 標記中按鈕的 onAction 回呼方法: <button id="myButton" onAction="MyButtonOnAction" />

    此標記會指示 Office 在選取按鈕時呼叫 MyButtonOnAction 函式。 MyButtonOnAction 函式具有取決於您所選擇語言的特定簽章;以下是 Visual C# 中的範例。

    public void MyButtonOnAction (IRibbonControl control) 
          if (control.Id=="myButton") 
             System.Windows.Forms.MessageBox.Show("Button clicked!"); 
    

    使用 COM 增益集自訂功能區

    應用程式層級的自訂會導致功能區修改,且不論開啟的是哪一個文件,修改過的都會顯示在應用程式中。 您主要是建立 COM 增益集來進行這些修改。 若要使用 COM 增益集自訂功能區,請執行下列操作:

  • 建立 COM 增益集專案。 您建立的增益集必須實作所有 COM 增益集實作的 Extensibility.IDTExtensibility2 介面,以及 Microsoft.Office.Core 命名空間中的 IRibbonExtensibility 介面。
  • 建立增益集和設定專案,然後安裝專案。
  • 啟動 Office 應用程式。 增益集載入時,它會觸發 IDTExtensibility2::OnConnection 事件,以初始化增益集,就像舊版 Office 一樣。
  • 接著會呼叫 QueryInterface 方法,該方法則判斷是否已實作 IRibbonExtensibility 介面。
  • 如果已實作該介面,則會呼叫 IRibbonExtensibility::GetCustomUI 方法,該方法則載入 XML 標記 (從 XML 自訂檔案或從內嵌於程序中的 XML 標記),然後將自訂載入應用程式。
  • 最後,自訂的已準備就緒,可供使用者使用。
  • 使用 Office Open XML 格式檔案自訂功能區

    若要使用 XML 標記自訂 UI,請執行下列操作:

  • 在任何文字編輯器中建立自訂檔案。 新增 XML 標記,以將新元件新增至功能區、修改現有的元件,或隱藏元件。 將檔案儲存為 customUI.xml

  • 在桌面上建立名為 customUI 的資料夾,並將自訂檔案複製到該資料夾。

  • 使用自訂 UI 的結構描述驗證 XML 標記。

    這是選擇性的步驟。

  • 在 Office 應用程式中建立文件,然後將其儲存為具有下列其中一個副檔名的 Open XML Formats 檔案:.docx.docm.xlsx.xlsm.pptm.pptx。 基於安全性考量,包含巨集的檔案具有 m 後置字元,且可包含由 RibbonX 命令和控制項所呼叫的程序。

  • .zip 副檔名新增至文件檔案名稱,然後開啟檔案。

  • 將資料夾拖曳至檔案,將自訂檔案新增至容器。

  • .rels 檔案解壓縮至桌面上。 會將包含此 .rels 檔案的 [_rels] 資料夾複製到桌面上。

  • 開啟 .rels 檔案並新增一行,以建立檔檔與自訂檔案之間的關聯性,然後儲存檔案。

  • _rels 資料夾新增至容器,並覆寫現有的檔案。

  • 移除 .zip 副檔名,將檔案重新命名為原始名稱。 現在當您開啟 Office 檔案時,功能區會出現並顯示出您進行的自訂。

    XML 標記檔案的一般格式

    使用 XML 標記來自訂功能區。 下列範例顯示 XML 標記檔案的一般格式,您可以用來在 Word 中自訂功能區。

    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> 
      <ribbon> 
          <tab idMso="TabHome"> 
            <group idMso="GroupFont" visible="false" /> 
          <tab id="CustomTab" label="My Tab"> 
            <group id="SampleGroup" label="Sample Group"> 
              <toggleButton id="ToggleButton1" size="large" label="Large Toggle Button" getPressed="MyToggleMacro"  /> 
              <checkBox id="CheckBox1" label="A CheckBox" screentip="This is a check box" onAction="MyCheckboxMacro" /> 
              <editBox id="EditBox1" getText="MyTextMacro" label="My EditBox" onChange="MyEditBoxMacro"/> 
              <comboBox id="Combo1" label="My ComboBox" onChange="MyComboBoxMacro"> 
                <item id="Zip1" label="33455" /> 
                <item id="Zip2" label="81611" /> 
                <item id="Zip3" label="31561" /> 
              </comboBox> 
              <advanced> 
                <button id="Launcher1" screentip="My Launcher" onAction="MyLauncherMacro" /> 
              </advanced> 
            </group> 
            <group id="MyGroup" label="My Group" > 
              <button id="Button" label="My Large Button" size="large" onAction="MyButtonMacro" /> 
              <button id="Button2" label="My Normal Button" size="normal" onAction="MyOtherButtonMacro" /> 
            </group > 
        </tabs> 
      </ribbon> 
    </customUI> 
    

    此範例會依下列順序對 Word 中的功能區進行下列變更:

  • 宣告預設的命名空間和自訂的命名空間。

  • 隱藏位於內建 [首頁] 索引標籤上的內建 [GroupFont] 群組。

  • 接著範例將新的 [CustomTab] 索引標籤新增至最後一個內建索引標籤的右側。

    使用 id= identifier 屬性建立自訂項目,例如自訂的索引標籤。使用 idMso= identifier 屬性參照內建項目,例如 [TabHome] 索引標籤。

  • 範例將新的 [SampleGroup] 群組新增至 [My Tab] 索引標籤。

  • 將大型 ToggleButton1 按鈕新增至 [我的群組] ,並指定 onAction 回呼以及 GetPressed 回呼。

  • 使用自訂的工具提示將 CheckBox1 核取方塊新增至 [我的群組 ],並指定 onAction 回呼。

  • EditBox1 編輯方塊新增至 [我的群組] ,並指定 onChange 回呼。

  • Combo1 下拉 式方塊新增至具有三個專案 的 [我的群組 ]。 下拉式方塊指定使用每個項目之文字的 onChange 回呼。

  • Launcher1 啟動器 新增至已設定 onAction 回呼的 「我的群組 」。 啟動器還可以顯示自訂的對話方塊來為使用者提供更多選項。

  • 範例將新的 [MyGroup] 群組新增至自訂的索引標籤。

  • 將大型 Button1 按鈕 新增至 MyGroup ,並指定 onAction 回呼。

  • 將一般大小的 Button1 按鈕 新增至 MyGroup ,並指定 onAction 回呼。

    使用舊版命令列增益集

    在建立 COM 增益集時,通常需要提供讓使用者與增益集互動的方式。 在舊版的 Office 中,是使用 CommandBars 物件模型將功能表項目或工具列按鈕新增至應用程式來達到這個目的。 在新版的 Office 中,則大部分的情況下,自訂的應用程式都能繼續在功能中操作,而不需進行修改。 不過,您使用 CommandBars 物件模型或修改 WordBasic 或 XML 等功能表或工具列的任何其他技術所做的變更,都會出現在不同的 [增益集 ] 索引標籤上。這可讓使用者更容易找到控制項。

    動態更新功能區

    傳回控制項屬性的回呼一般只會被呼叫一次,除非有指定重複該呼叫。 您可以在 CustomUI 元素中實作 onLoad 回呼,以重複查詢回呼。 此回呼會在成功載入 RibbonX 標記檔案時呼叫一次,然後將程式碼傳遞至 IRibbonUI 物件。

    下列程式碼範例會取得 IRibbonUI 物件,讓您可以在執行時間更新控制項。

    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="ribbonLoaded">
    

    在 C# 中,在您的 Connect 類別中撰寫回呼。

    IRibbonUI myRibbon; 
         public void ribbonLoaded(IRibbonUI ribbon) { 
             myRibbon = ribbon; 
    

    功能區可讓使用者彈性地使用 Office 應用程式。 您可使用簡單、以文字為基礎的宣告性 XML 標記來建立與自訂功能區。 只要透過幾行 XML,您就可以為使用者建立最適合的介面。 因為 XML 標記是包含在單一檔案內,所以在需求變更而必須修改介面時就會簡單許多。 您也可以將命令放置在使用者可以輕鬆找到的位置,以提升使用者的產能。 最後,功能區還可為應用程式增添一致性,進而減少使用者花在學習每個應用程式上的時間。

  • 使用受管理 COM 增益集自訂 Office Fluent 功能區
  • 使用 Open XML 格式檔案自訂 Office Fluent 功能區
  • 使用 Visual Basic COM 增益集自訂 Office Fluent 功能區
  • 支援和意見反應

    有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應

  •