使用受管理 COM 增益集自訂 Office Fluent 功能區

Microsoft Office 套件中 Microsoft Office Fluent 使用者介面的功能區元件可讓使用者彈性地使用 Office 應用程式。 功能區擴充性 (RibbonX) 是使用單純以文字為主的宣告性 XML 標記來建立與自訂功能區。

本主題中的程式碼範例示範如何自訂 Office 應用程式中的功能區,不論開啟哪個檔。 在下列步驟中,您會使用受控 COM 增益集建立應用層級自訂,然後使用 Microsoft Visual C# 在 Microsoft Visual Studio 2012 中建立增益集。 此專案會將自訂索引標籤、自訂群組以及按鈕新增至功能區。 若要完成程序,請執行以下工作。

  1. 建立 XML 自訂檔案:

  2. 使用 C# 在 Microsoft Visual Studio 2012 中建立受控 COM 增益集專案。

  3. 將 XML 自訂檔案當做內嵌資源新增至專案。

  4. 實作 IRibbonExtensibility 介面。

  5. 建立選擇按鈕時所觸發的回呼方法。

  6. 建置、安裝及測試專案。

建立 XML 自訂檔案

在此步驟中,您會建立新增自訂元件至功能區的檔案。

  1. 在文字編輯器中,新增下列的 XML 標記。

     <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> 
       <ribbon> 
         <tabs> 
           <tab id="CustomTab" label="My Tab"> 
             <group id="SampleGroup" label="Sample Group"> 
               <button id="Button" label="Insert Company Name" size="large" onAction="InsertCompanyName" /> 
             </group > 
           </tab> 
         </tabs> 
       </ribbon> 
     </customUI> 
    
  2. 關閉檔案,並將其儲存為 customUI.xml

建立受控 COM 增益集專案

在此步驟中,您會在 Microsoft Visual Studio 2012 中建立 COM 增益集 C# 專案。

  1. 啟動 Microsoft Visual Studio 2012。

  2. 在 [ 檔案] 功能表上,選擇 [ 新增專案]

  3. 在 [ 新增專案] 對話方塊的 [ 專案類型] 下方,展開 [ 其他專案],選擇 [ 擴充性專案],然後按兩下 [ 共用增益集]

  4. 新增專案的名稱;在此示範中,請輸入 RibbonXSampleCS

  5. 在 [共用增益集精靈] 的第一個畫面中,選擇 [ 下一步]

  6. 取 [使用 Visual C# 建立增益集],然後選擇 [ 下一步]

  7. 清除Microsoft Word以外的所有選取專案,然後選擇 [下一步]

  8. 輸入增益集的名稱和描述,然後選擇 [ 下一步]

  9. 在 [ 選擇增益集選項] 畫面中 ,選取 [ 我想要在主應用程式載入時載入載入載入 宏],然後選擇 [ 下一步]

  10. 選擇 [完成 ] 以完成精靈。

在專案中新增外部參考

此步驟會加入 Word 主要 Interop 組件和型別程式庫的參考。

  1. 在方案總管中,以滑鼠右鍵按一下 [參考],然後選擇 [新增參考]

    注意事項

    如果您沒有看到 [ 參考] 資料夾,請選擇 [ 專案 ] 功能表,然後選擇 [ 顯示所有檔案]

  2. [.NET] 索引標籤上向下捲動,按住 CTRL 鍵,然後選取 [Microsoft.Office.Interop.Word]

  3. [COM] 索 引標籤上,向下捲動,選取 [Microsoft Office 15.0 物件 庫] (或適用于您 Office) 版本的程式庫,然後選擇 [ 確定]

  4. 如果專案不存在,請在命名空間行正下方新增下列 命名空間 參考。

     using System.Reflection; 
     using Microsoft.Office.Core; 
     using System.IO; 
     using System.Xml; 
     using Extensibility; 
     using System.Runtime.InteropServices; 
     using MSword = Microsoft.Office.Interop.Word; 
    

將 XML 自訂檔案新增為內嵌資源

在此步驟中,您會將 XML 自訂檔案新增為專案中的內嵌資源。

  1. 在方案總管中,以滑鼠右鍵按一下RibbonXSampleCS,指向 [新增],然後選擇 [現有專案]

  2. 流覽至您建立 的customUI.xml 檔案,選取該檔案,然後選擇 [ 新增]

  3. 在方案總管中,以滑鼠右鍵按一下[customUI.xml],然後選取 [屬性]

  4. 在屬性視窗中,選取 [建置動作],然後向下捲動至 [內嵌資源]

實作 IRibbonExtensibility 介面

在此步驟中,您會將程式碼新增至 Extensibility.IDTExtensibility2::OnConnection,以在執行時間建立Word應用程式的參考。 您也會實作 IRibbonExtensibility 介面 GetCustomUI的唯一成員。

  1. 在方案總管中,以滑鼠右鍵按一下Connect.cs,然後選擇 [檢視程式碼]

  2. Connect方法之後,新增下列宣告,以建立Word Application物件的參考:

    private MSword.Application applicationObject;

  3. 將下列程式碼行新增至 OnConnection 方法。 此語句會建立Word Application 物件的實例

    applicationObject =(MSword.Application)application;

  4. 在公用類別 Connect 語句的結尾,新增逗號,然後輸入 IRibbonExtensibility

    注意事項

    使用 Microsoft IntelliSense 為您插入介面方法。 例如,在公用類別 Connect 語句的結尾,輸入 IRibbonExtensibility,按一下滑鼠右鍵並指向 [ 實作介面],然後選擇 [ 明確實作介面]。 這會新增 GetCustomUI 方法的存根。 實作看起來類似下列程式碼。

       string IRibbonExtensibility.GetCustomUI(string RibbonID) 
     { 
     }
    
  5. 將下列語句插入 GetCustomUI 方法中,覆寫現有的程式碼: return GetResource("customUI.xml");

  6. GetCustomUI 方法下方插入下列方法:

     private string GetResource(string resourceName) 
           { 
               Assembly asm = Assembly.GetExecutingAssembly(); 
               foreach (string name in asm.GetManifestResourceNames()) 
               { 
                   if (name.EndsWith(resourceName)) 
                   { 
                       System.IO.TextReader tr = new System.IO.StreamReader(asm.GetManifestResourceStream(name)); 
                       //Debug.Assert(tr != null); 
                       string resource = tr.ReadToEnd(); 
    
                       tr.Close(); 
                       return resource; 
                   } 
               } 
               return null; 
           } 
    
    

    GetCustomUI方法會呼叫GetResource方法。 GetResource方法會在執行時間設定此元件的參考,然後在內嵌資源中執行迴圈,直到找到名為 customUI.xml 的資源為止。 然後,它會建立 StreamReader 物件的實例,以讀取包含 XML 標記的內嵌檔案。 此程式會將 XML 傳遞回 GetCustomUI 方法,以將 XML 傳回功能區。 或者,您可以建構包含 XML 標記的字串,並將其直接讀入 GetCustomUI 方法。

  7. GetResource 方法之後加入此方法。 該方法會將公司名稱插入文件頁面的起始處。

     public void InsertCompanyName(IRibbonControl control) 
           { 
           // Inserts the specified text at the beginning of a range or selection. 
               string MyText; 
               MyText = "Microsoft Corporation"; 
    
               MSword.Document doc = applicationObject.ActiveDocument; 
    
               //Inserts text at the beginning of the active document. 
               object startPosition = 0; 
               object endPosition = 0; 
               MSword.Range r = (MSword.Range)doc.Range( 
                     ref startPosition, ref endPosition); 
               r.InsertAfter(MyText); 
           } 
    
    

建置及安裝專案

在此步驟中,您會建置增益集及其安裝專案。 在繼續操作之前,請務必關閉 Word。

  1. 在 [ 專案] 功能表中,選擇 [ 建置方案]。 建置完成時,視窗左下角會出現通知。

  2. 在方案總管中,以滑鼠右鍵按一下[RibbonXSampleCSSetup],然後選擇 [建置]

  3. 再次以滑鼠右鍵按一下 RibbonXSampleCSSetup ,然後選擇 [ 安裝 ] 以開始 [RibbonXSampleCSSetup 安裝精靈]。

  4. 在每個畫面中選擇 [ 下一步 ],然後在最後一個畫面上選擇 [ 關閉 ]。

  5. 啟動 Word。 您應該會在其他索引標籤的右邊看到 [My Tab] 索引標籤。

測試專案

選擇 [ 我的索引標籤 ] 索引標籤,然後選擇 [ 插入公司名稱 ],將公司名稱插入檔中的資料指標。 如果您沒有看到自訂功能區,您可能需要完成下列步驟,將專案新增至 Windows 登錄。

注意

以下幾個步驟包含如何修改登錄的相關資訊。 修改登錄之前,請務必先備份,並確定您瞭解在發生問題時如何還原登錄。 如需如何備份、還原和編輯登錄的詳細資訊,請參閱此 Microsoft 知識庫文章:進階 使用者的 Windows 登錄資訊 (256986)

  1. 在方案總管中,以滑鼠右鍵按一下安裝專案RibbonXSampleCSSetup,指向 [檢視],然後選擇 [登錄]

  2. [登錄] 索引標籤上,瀏覽至此增益集的下列登錄機碼:HKCU\Software\Microsoft\Office\Word\AddIns\RibbonXSampleCS.Connect

    注意事項

    如果 RibbonXSampleCS.Connect 機碼不存在,您可以加以建立。 若要這樣做,請以滑鼠右鍵按一下 [Addins ] 資料夾,指向 [ 新增],然後選擇 [ 金鑰]。 將機碼命名為 RibbonXSampleCS.Connect。 新增 LoadBehavior DWord,並將其值設定為 3

另請參閱

支援和意見反應

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