[Office開發系列] 利用 VBA 操作 Ribbon 介面

[Office開發系列] 利用 VBA 操作 Ribbon 介面

Ribbon 開發初體驗中,筆者使用 Visual Studio Tools for Office (VSTO) 開發出了 Ribbon 工具列的 Excel Workbook,展示了 Office 的 UI 高彈性的一面,但是這可不代表 Ribbon (甚至是 Backstage View) 只能用 VSTO 開發哦,如果你只會使用 VBA,也不必太灰心,因為 VBA 也可以開發 Ribbon 以及 Backstage 介面,在 Ribbon 開發初體驗中所展示的 Ribbon 基本上是 XML 文件,所以只要能夠在 Office 文件中內嵌這份 XML 文件,那麼 VBA 一樣可以操作 Ribbon 介面。

若要在 Office 文件中內嵌 Ribbon 或 Backstage View 的 XML,你必須要先下載與安裝 Custom UI Editor for Microsoft Office 這個工具,它可以支援 Office 2007 以及 Office 2010,它就像是在 VSTO 專案中加入 Ribbon 的 XML 文件一樣,可以直接在 Office 文件中內嵌 Ribbon 的 XML 文件,並且在文件載入時生效。而 VBA 程式碼中只要處理 XML 中設定的 OnAction 事件常式即可。

首先,先開啟 Custom UI Editor for Microsoft Office,並且打開要編輯 Ribbon 的文件 (最好是可允許巨集的文件),並且按功能表的 INSERT > Office 2010 Custom UI Part (若是 Office 2007, 則選擇 Office 2007 Custom UI Part):

image

此時左邊文件下會加入一個 customUI.xml,請在右邊加入要自訂的 Ribbon XML 並儲存:

image

接著在文件中的 VBA 程式中加入 OnAction 的處理函式即可 (這個處理常式要放在模組才可以,筆者測試放在 ThisWorkbook 會無法作用):

Public Sub MyActionHandler(control As IRibbonControl)

    MsgBox "My Action Handler."

End Sub

存檔以後重新開啟該文件,即可看到在 Office Ribbon Tab 中多了一個項目:

image

按下 “Cloud Data Source” 時,它會呼叫 MyActionHandler 事件常式,出現一個訊息對話盒:

image

看到 VBA 也能夠控制 Office 的全新介面,你是否也手癢想玩它了呢?

 

參考資料:
http://blogs.msdn.com/jensenh/archive/2006/06/01/613157.aspx