使用受管理 COM 增益集自訂 Office Fluent 功能區
Microsoft Office 套件中 Microsoft Office Fluent 使用者介面的功能區元件可讓使用者彈性地使用 Office 應用程式。 功能區擴充性 (RibbonX) 是使用單純以文字為主的宣告性 XML 標記來建立與自訂功能區。
本主題中的程式碼範例示範如何自訂 Office 應用程式中的功能區,不論開啟哪個檔。 在下列步驟中,您會使用受控 COM 增益集建立應用層級自訂,然後使用 Microsoft Visual C# 在 Microsoft Visual Studio 2012 中建立增益集。 此專案會將自訂索引標籤、自訂群組以及按鈕新增至功能區。 若要完成程序,請執行以下工作。
建立 XML 自訂檔案:
使用 C# 在 Microsoft Visual Studio 2012 中建立受控 COM 增益集專案。
將 XML 自訂檔案當做內嵌資源新增至專案。
實作 IRibbonExtensibility 介面。
建立選擇按鈕時所觸發的回呼方法。
建置、安裝及測試專案。
建立 XML 自訂檔案
在此步驟中,您會建立新增自訂元件至功能區的檔案。
在文字編輯器中,新增下列的 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>
關閉檔案,並將其儲存為 customUI.xml。
建立受控 COM 增益集專案
在此步驟中,您會在 Microsoft Visual Studio 2012 中建立 COM 增益集 C# 專案。
啟動 Microsoft Visual Studio 2012。
在 [ 檔案] 功能表上,選擇 [ 新增專案]。
在 [ 新增專案] 對話方塊的 [ 專案類型] 下方,展開 [ 其他專案],選擇 [ 擴充性專案],然後按兩下 [ 共用增益集]。
新增專案的名稱;在此示範中,請輸入 RibbonXSampleCS。
在 [共用增益集精靈] 的第一個畫面中,選擇 [ 下一步]。
選 取 [使用 Visual C# 建立增益集],然後選擇 [ 下一步]。
清除Microsoft Word以外的所有選取專案,然後選擇 [下一步]。
輸入增益集的名稱和描述,然後選擇 [ 下一步]。
在 [ 選擇增益集選項] 畫面中 ,選取 [ 我想要在主應用程式載入時載入載入載入 宏],然後選擇 [ 下一步]。
選擇 [完成 ] 以完成精靈。
在專案中新增外部參考
此步驟會加入 Word 主要 Interop 組件和型別程式庫的參考。
在方案總管中,以滑鼠右鍵按一下 [參考],然後選擇 [新增參考]。
注意事項
如果您沒有看到 [ 參考] 資料夾,請選擇 [ 專案 ] 功能表,然後選擇 [ 顯示所有檔案]。
在 [.NET] 索引標籤上向下捲動,按住 CTRL 鍵,然後選取 [Microsoft.Office.Interop.Word]。
在 [COM] 索 引標籤上,向下捲動,選取 [Microsoft Office 15.0 物件 庫] (或適用于您 Office) 版本的程式庫,然後選擇 [ 確定]。
如果專案不存在,請在命名空間行正下方新增下列 命名空間 參考。
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 自訂檔案新增為專案中的內嵌資源。
在方案總管中,以滑鼠右鍵按一下RibbonXSampleCS,指向 [新增],然後選擇 [現有專案]。
流覽至您建立 的customUI.xml 檔案,選取該檔案,然後選擇 [ 新增]。
在方案總管中,以滑鼠右鍵按一下[customUI.xml],然後選取 [屬性]。
在屬性視窗中,選取 [建置動作],然後向下捲動至 [內嵌資源]。
實作 IRibbonExtensibility 介面
在此步驟中,您會將程式碼新增至 Extensibility.IDTExtensibility2::OnConnection,以在執行時間建立Word應用程式的參考。 您也會實作 IRibbonExtensibility 介面 GetCustomUI的唯一成員。
在方案總管中,以滑鼠右鍵按一下Connect.cs,然後選擇 [檢視程式碼]。
在Connect方法之後,新增下列宣告,以建立Word Application物件的參考:
private MSword.Application applicationObject;
將下列程式碼行新增至 OnConnection 方法。 此語句會建立Word Application 物件的實例:
applicationObject =(MSword.Application)application;
在公用類別 Connect 語句的結尾,新增逗號,然後輸入 IRibbonExtensibility。
注意事項
使用 Microsoft IntelliSense 為您插入介面方法。 例如,在公用類別 Connect 語句的結尾,輸入 IRibbonExtensibility,按一下滑鼠右鍵並指向 [ 實作介面],然後選擇 [ 明確實作介面]。 這會新增 GetCustomUI 方法的存根。 實作看起來類似下列程式碼。
string IRibbonExtensibility.GetCustomUI(string RibbonID) { }
將下列語句插入 GetCustomUI 方法中,覆寫現有的程式碼:
return GetResource("customUI.xml");
在 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 方法。
在 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。
在 [ 專案] 功能表中,選擇 [ 建置方案]。 建置完成時,視窗左下角會出現通知。
在方案總管中,以滑鼠右鍵按一下[RibbonXSampleCSSetup],然後選擇 [建置]。
再次以滑鼠右鍵按一下 RibbonXSampleCSSetup ,然後選擇 [ 安裝 ] 以開始 [RibbonXSampleCSSetup 安裝精靈]。
在每個畫面中選擇 [ 下一步 ],然後在最後一個畫面上選擇 [ 關閉 ]。
啟動 Word。 您應該會在其他索引標籤的右邊看到 [My Tab] 索引標籤。
測試專案
選擇 [ 我的索引標籤 ] 索引標籤,然後選擇 [ 插入公司名稱 ],將公司名稱插入檔中的資料指標。 如果您沒有看到自訂功能區,您可能需要完成下列步驟,將專案新增至 Windows 登錄。
注意
以下幾個步驟包含如何修改登錄的相關資訊。 修改登錄之前,請務必先備份,並確定您瞭解在發生問題時如何還原登錄。 如需如何備份、還原和編輯登錄的詳細資訊,請參閱此 Microsoft 知識庫文章:進階 使用者的 Windows 登錄資訊 (256986) 。
在方案總管中,以滑鼠右鍵按一下安裝專案RibbonXSampleCSSetup,指向 [檢視],然後選擇 [登錄]。
從 [登錄] 索引標籤上,瀏覽至此增益集的下列登錄機碼:HKCU\Software\Microsoft\Office\Word\AddIns\RibbonXSampleCS.Connect
注意事項
如果 RibbonXSampleCS.Connect 機碼不存在,您可以加以建立。 若要這樣做,請以滑鼠右鍵按一下 [Addins ] 資料夾,指向 [ 新增],然後選擇 [ 金鑰]。 將機碼命名為 RibbonXSampleCS.Connect。 新增 LoadBehavior DWord,並將其值設定為 3。
另請參閱
- Office Fluent 功能區概觀
- 使用 Open XML 格式檔案自訂 Office Fluent 功能區
- 使用 Visual Basic COM 增益集自訂 Office Fluent 功能區
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。