Tags

, , , , , ,

TÙY BIẾN RIBBON TRONG WORD 2010

Bắt đầu từ phiên bản Office 2007, giao diện Ribbon là 1 thành phần mới thay thế cho giao diện Menu truyền thống của các phiên bản trước. Rất nhiều người sử dụng cảm thấy khó khăn khi mới bắt đầu làm quen với giao diện Ribbon, tuy nhiên, sau một thời gian sử dụng, họ nhanh chóng làm quen, ưa thích nó và gần như quên lãng giao diện Menu truyền thống đã gắn với họ suốt nhiều năm qua. Sở dĩ như vậy vì Microsoft đã làm rất tốt vai trò của họ trong việc thu thập thói quen của người sử dụng Office, từ đó thiết kế một giao diện hoàn toàn mới – Ribbon – đầy trực quan và tiện lợi đối với người sử dụng. Ribbon liệt kê nhiều lệnh chức năng được hiển thị dưới nhiều cách khác nhau (button, drop-down list, …). Các lệnh này được nhóm lại theo từng Group và được đặt trong các Tab khác nhau.

Trong nhiều trường hợp, các chức năng mặc định có sẵn trên Ribbon không đáp ứng được yêu cầu sử dụng, và khi đó nhu cầu tùy biến Ribbon, như ẩn đi một Group mặc định, thêm mới một Tab với các lệnh Macro,… là không thể tránh khỏi.

Để có thể tùy biến được thanh Ribbon, yêu cầu người sử dụng phải biết chút ít về XML; và VBA nếu mục đích là để phát triển thêm tính năng cho Word. Có hai cách thực hiện:

  • Tạo XML code
  • Lập trình các VBA procedure để tương tác trực tiếp

Đối với cách tạo XML code, có 2 phạm vi tác động:

  • Cho từng file Word cụ thể: XML code được nhúng trực tiếp kèm theo file Word
  • Cho toàn bộ các file Word có trong máy tính: XML code được nhúng vào file Normal.dotm

 Trong bài viết này, tôi xin hướng dẫn cách tùy biến thanh Ribbon bằng cách tạo XML code thông qua một số ví dụ nhỏ. Công cụ được sử dụng là Custom UI Editor for Microsoft Office, ngoài ra RibbonX Visual Designer cũng là một công cụ rất đáng giá.

  1.  Ẩn Group Editing mặc định trong Tab Home

Group Editing có 3 lệnh: Find, Replace, và Select. Giả sử bạn đã quen với việc bấm Ctrl+F để tìm kiếm, Ctrl+H để mở hộp thoại Replace, và chọn 1 vùng văn bản bằng việc kéo thả thì rõ ràng việc hiển thị Group này là không cần thiết.

Để ẩn Group Editing, chúng ta thực hiện các bước sau:

  1. Mở Custom UI Editor for Microsoft Office. Mở file Normal.dotm

    Vị trí file Normal.dotm được lưu trữ tùy thuộc vào hệ điều hành, với Windows 7 là C:\Users\<user_name>\AppData\Roaming\Microsoft\Templates

  2. Thêm đoạn XML code sau vào khung bên phải:
    <customUI xmlns=”http://schemas.microsoft.com/office/2009/07/customui”&gt;
    <ribbon>
    <tabs>
    <tab idMso=”TabHome”>
    <group idMso=”GroupEditing”
    visible=”false” />
    </tab>
    </tabs>
    </ribbon>
    </customUI>

  3. Click biểu tượng có dấu tích màu đỏ để kiểm tra.

  1. Lưu thay đổi và mở Word 2010 để thấy sự thay đổi

  2. Thêm Tab và Group mới

Trong nhiều trường hợp, chúng ta phải viết một số Macro để tự động hóa 1 chuỗi các tác vụ cần thực hiện hoặc để mở rộng thêm tính năng cho Word. Có nhiều cách để thực thi các Macro đó, như:

  • Tạo phím tắt
  • Hiển thị trên thanh Quick Access Toolbar
  • Tạo Control trực tiếp trên giao diện Word,…

Một cách khác nữa là tạo Control trực tiếp trên Ribbon để gọi các Macro đó. Một số Control được hỗ trợ như: button, dropdown list, menu, toogle button, dialog box launcher, …

Trong ví dụ này, tôi sẽ tạo 1 Tab mới trên Ribbon tên là Macros. Trong Tab này, sẽ gồm nhiều Group chứa các Control khác nhau để gọi những Macro đã được viết sẵn. Các bước thực hiện như sau:

  1. Tạo mới 1 file Word RibbonMod.docm, chuyển qua VBE (Visual Basic Editor) để viết Macro bằng cách nhấn Alt+F11 hoặc chọn tab Developer à Visual Basic.

    Để hiển thị tab Developer, chúng ta chọn File à Options à Customize Ribbon và chọn Developer ở khung bên phải.

  2. Mở ThisDocument trong file RibbonMod.docm và gõ 1 số Macro như sau:
    Sub showID (control As IRibbonControl)
    MsgBox control.ID
    End Sub
     
    Sub ConvertCase (control As IRibbonControl)
    MsgBox “convert”
    End Sub
     
    Sub Memo(control As IRibbonControl)
    MsgBox “memo”
    End Sub
     
    Sub setfirst(ByVal control As IRibbonControl, ByRef x)
    x = 0
    End Sub
     
    Sub test_list(control As IRibbonControl, id As String, index As Integer)
    Select Case index
    Case 0
    MsgBox (“item1”)
    Case 1
    MsgBox (“item2”)
    Case 2
    MsgBox (“item3”)
    End Select
    End Sub
     
    Sub test_dialog(control As IRibbonControl)
    Dialogs(wdDialogInsertDateTime).Show
    End Sub
     
    Sub test_toggle_button(control As IRibbonControl, down As Boolean)
    If down Then
    MsgBox “Button Down”
    Else
    MsgBox “Button Up”
    End If
    End Sub

    Các Sub này bắt buộc phải có chứa tham số control As IribbonControl.

3. Lưu và đóng file RibbonMod.docm lại
4. Trong Custom UI Editor, mở file RibbonMod.docm và gõ đoạn XML code như sau:
<customUI xmlns=”http://schemas.microsoft.com/office/2009/07/customui”&gt;
    <ribbon>
        <tabs>
            <tab id=”tabMacros” label=”Macros”>
                <group id=”group01″ label=”Testing Macros”>
                    <button id=”testButton” label=”Test button”
                        imageMso= “ShowTimeZones” size=”large”
                        screentip=”Run a Macro”
                        supertip=”Click this button to execute the test macro.”
                        onAction=”ThisDocument.showID” />
                    <toggleButton id=”tbutton1″ label=”Click to Toggle”
imageMso=”DeclineInvitation” onAction=”ThisDocument.test_toggle_button” />
                    <menu id=”testMenu” label=”Choose a Macro”>
                        <button id=”bConvert” imageMso=”InkDeleteAllInk”
                        label=”Convert Case”
                        onAction=”ThisDocument.ConvertCase” />
                        <button id=”bMemo”
imageMso=”PictureBrightnessGallery”
                            label=”Memo Format”
onAction=”ThisDocument.Memo” />
                    </menu>
                </group>
                <group id=”group2″ label=”Favorite Macros”>                    
                <dropDown id=”testDropDownList”
getSelectedItemIndex=”ThisDocument.setFirst”
                    label=”Test DropDown List” onAction=”ThisDocument.test_list”>
                        <item id=”i1″ label=”Convert Case”/>
                        <item id=”i2″ label=”Replace 5pt with 10pt”/>
                        <item id=”i3″ label=”Memo Format”/>
                </dropDown>
                <dialogBoxLauncher>
                        <button id=”testDialogBoxLauncher”
onAction=”ThisDocument.test_dialog” />
                </dialogBoxLauncher>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

Trong đoạn XML Code ở trên:

  • Thuộc tính onAction của các Control dùng để gọi Macro
  • Mỗi Control bắt buộc phải có 1 ID, ID này phải là duy nhất
5. Lưu và đóng Custom UI Editor.
6. Mở RibbonMod.docm để thấy sự thay đổi.

Qua 2 ví dụ trên, chúng ta cơ bản đã biết cách tùy biến thanh Ribbon của Word 2010. Hy vọng nó sẽ giúp ích cho mọi người.

Enjoy! J
Nhat Phan