skip to Main Content

După cum bine ştiţi, începând cu Office 2007, Microsoft a introdus ribbon-ul (panglica).
În versiunea 2007, aceasta nu putea fi particularizată decât folosind diverse soft-uri (care nu erau gratuite) sau utilizând cod XML.

Ce înseamnă XML ?

XML, which stands for Extensible Markup Language, is a format for creating documents that are easily parsed by computer programs and which are easy to read and edit using a simple text editor. XML shares much in common with HTML in that they both use tags and attributes to define the data in a document, although XML is designed for a wider range of applications.

Începând cu versiunea Office 2010, echipa Microsoft a integrat în soft, un editor pentru ribbon, dar cu opţiuni limitate:

  • nu se pot selecta alte icon-uri decât cele implicite;
  • nu se pot crea meniuri de tip dropdown list;
  • nu se pot insera comenzi noi alături de cele existente;
  • etc.

Folosind un soft gratuit numit Custom UI Editor For Microsoft Office + Set de icon-uri pentru Office + o listă de controale, putem modifica ribbon-ul bupă bunul plac.
Folosind acestor editor, avem posibilitatea de a altera ribbon-ul aplicaţiilor: Word, PowerPoint, Excel şi Access.

——————————— ——————————— ——————————— ———————————
——————————— ——————————— ——————————— ———————————

Personalizare ribbon Excel
– vom crea un workbook nou şi îl vom salva sub formă de şablon, cu numele Book şi cu extensia xltx: Book.xltx;
– îl vom salva pe desktop şi apoi îl vom închide;
– deschidem Custom UI Editor For Microsoft Office şi accesăm meniul FileOpen – dublu click pe şablonul creat anterior;
– accesăm meniul Insert şi în funcţie de versiunea de Office instalată, selectăm: Office 2007 Custom UI Part sau Office 2010 Custom UI Part;
– codul poate varia în funcţie de ceea ce doriţi să inseraţi în ribbon.
Mai jos, am scris codul pe care l-am creat pentru Excel, cod care rulează macrocomenzi direct din Add-In-ul care este conectat la MS Excel.

[stextbox id=”info” caption=”Code” bgcolor=”ffffff”]<customUI xmlns=”http://schemas.microsoft.com/office/2009/07/customui”>
<!– Creat de Alexandru Dionisie (www.cosmintataru.ro) –>
<ribbon>
  <tabs>
      <!– Cream un grup nou in tab-ul Data, dupa grupul Outline –>
        <tab idMso=”TabData”>
          <group id=”d1″ label=”Data” insertAfterMso=”Outline”>
             <!– Inseram 3 butoane cu 3 icon-uri ce actioneaza 3 macrocomenzi localizate intr-un Add-In –>
             <button id=”b1″ imageMso=”PersonaStatusAway” label=”Valori 1″
                                 onAction=”modFunctionsRibbon.RandomDataFormula”
                                screentip=”Random Data”
                                supertip=”Genereaza un domeniu de valori, folosind functia RANDBETWEEN.”/>

             <button id=”b2″ imageMso=”PersonaStatusBusy” label=”Valori 2″
                                 onAction=”modFunctionsRibbon.RandomDataValori”
                                screentip=”Random Data”
                                supertip=”Genereaza un domeniu de valori (18,98), folosind functia RANDBETWEEN si apoi se copiaza datele generate si se ataseaza ca valori.”/>

             <button id=”b3″ imageMso=”PersonaStatusOnline” label=”Valori 3″
                                 onAction=”modFunctionsRibbon.RandomDataValori2″
                                screentip=”Random Data”
                                supertip=”Genereaza un domeniu de valori (100,3200), folosind functia RANDBETWEEN si apoi se copiaza datele generate si se ataseaza ca valori.”/>
        </group>
    </tab>

      <!– Cream un grup nou in tab-ul Developer, dupa grupul Modify –>
        <tab idMso=”TabDeveloper”>
          <group id=”d2″ label=”Other” insertAfterMso=”Modify”>
             <!– Inseram doua butoane cu doua icon-uri ce actioneaza doua macrocomenzi localizate intr-un Add-In –>
             <button id=”b4″ imageMso=”AddInManager” label=”Detect and Repair”
                                 onAction=”modFunctionsRibbon.Detect_and_Repair”
                                screentip=”Detectare si Reparare”
                                supertip=”Aceasta functie se regasea in Office 2003 si 2007, dar nu se mai regaseste in Office 2010. Detecteaza si repara erorile din Office.”/>

             <button id=”b5″ imageMso=”Folder” label=”Make Directory”
                                 onAction=”modFunctionsRibbon.MakeDirectory”
                                screentip=”Creeaza Directoare”
                                supertip=”Creaza foldere folosind numele dintr-un domeniu de celule.”/>
        </group>
    </tab>

      <!– Cream un grup nou in tab-ul Home, dupa grupul Editing –>
        <tab idMso=”TabHome”>
          <group id=”d4″ label=”Text Functions” insertAfterMso=”Editing”>
        <!– Cream meniul m2 cu eticheta Select Case –>
            <menu id=”m2″ label=”Select Case” imageMso=”QuickStylesGallery”>
             <!– Inseram 4 butoane cu 4 icon-uri ce actioneaza 4 macrocomenzi localizate intr-un Add-In –>
             <button id=”b6″ imageMso=”FontDialogPowerPoint” label=”Proper Case”
                                 onAction=”modFunctionsRibbon.CapitalizeazaCuvintele”
                                screentip=”Capitalizare Cuvinte”
                                supertip=”O automatizare a functiei Proper. Ex.: ana are mere => Ana Are Mere”/>

             <button id=”b7″ imageMso=”ShapeUpArrow” label=”Upper Case”
                                 onAction=”modFunctionsRibbon.UpperCase”
                                screentip=”Upper Case”
                                supertip=”O automatizare a functiei Upper. Ex.: ana are mere => ANA ARE MERE”/>

             <button id=”b8″ imageMso=”ShapeDownArrow” label=”Lower Case”
                                 onAction=”modFunctionsRibbon.LowerCase”
                                screentip=”Lower Case”
                                supertip=”O automatizare a functiei Lower. Ex.: ana are mere => ana are mere”/>

             <button id=”b9″ imageMso=”FontSchemes” label=”Sentence Case”
                                 onAction=”modFunctionsRibbon.SentenceCase”
                                screentip=”Sentence Case”
                                supertip=”O automatizare a functiei Sentence. Ex.: ana are mere => Ana are mere”/>
         </menu>
        <!– Cream meniul m3 cu eticheta Sheet Functions –>
            <menu id=”m3″ label=”Sheet Functions” imageMso=”PageMenu”>
             <!– Inseram doua butoane cu doua icon-uri ce actioneaza doua macrocomenzi localizate intr-un Add-In –>
             <button id=”b10″ imageMso=”MailMergeResultsPreview” label=”Sort Sheets”
                                 onAction=”modFunctionsRibbon.Sort_Sheets”
                                screentip=”Sortare Foi de Calcul”
                                supertip=”Sorteaza foile din workbook, in ordine alfabetica. Ex.: (Sheet2, Sheet3, Sheet1 => Sheet1, Sheet2, Sheet3)”/>

             <button id=”b11″ imageMso=”RmsInvokeBrowser” label=”Make Link”
                                 onAction=”modFunctionsRibbon.MakeHyperlinks”
                                screentip=”Creare Hyperlink”
                                supertip=”Realizeaza hyperlink din continutul celulei active. Ex.: www.google.ro => http://www.google.ro”/>
         </menu>
        </group>
    </tab>
  </tabs>
</ribbon>
</customUI>[/stextbox]

Detaliere cod:
– „<!– Cream un grup nou in tab-ul Data, dupa grupul Outline –> ” – este o line de tip comentariu (tot codul are comentarii, pentru a identifica mai uşor paşii realizaţi);
– „<tab idMso=”TabData”>” – specificăm locul în inserăm noul grup de comenzi – în cadrul tab-ului Data;
– „<group id=”d1″ label=”Data” insertAfterMso=”Outline”>” – creăm un grup nou, cu un ID unic, cu o etichetă specifică şi specificăm unde anume să fie inserat în acel tab: înainte sau după o anumită comandă;
– „ <button id=”b1″ imageMso=”PersonaStatusAway” label=”Valori 1″ onAction=”modFunctionsRibbon.RandomDataFormula” screentip=”Random Data” supertip=”Genereaza un domeniu de valori, folosind functia RANDBETWEEN.”/>” – specificăm un id unic pentru primul buton, o imagine, o etichetă,  specificăm codul macro pe care dorim să îl ruleze (se va specifica numele modulului în care este stocat, urmat de numele codului), se va afişa un tip general, urmat de o descriere a comenzii.
În cod am specificat şi funcţia MENU, pentru a crea meniuri de tip DropDown List.
– „<menu id=”m3″ label=”Sheet Functions” imageMso=”PageMenu”>” – creăm un meniu cu un ID unic, cu o etichetă şi cu o anumită imagine;
– „<button id=”b6″ imageMso=”FontDialogPowerPoint” label=”Proper Case” onAction=”modFunctionsRibbon.CapitalizeazaCuvintele” screentip=”Capitalizare Cuvinte” supertip=”O automatizare a functiei Proper. Ex.: ana are mere => Ana Are Mere”/>” – creăm primul element al listei: butonul b6, cu o anumită imagine, cu o etichetă, cu un anumit screentip şi supertip, dar tot aici specificăm şi ce cod să apeleze.
Mai departe, se va repeta aceeaşi procedură şi pentru celelalte comenzi pe care dorim să le inserăm.

În continuare, vom discuta despre codurile macro pe care le apelează butoanele specificate în codul XML.
Pentru codurile macro, singura modificare pe care trebuie sa o realizăm, este aceea de a modifica argumentele codului.
Mai exact, între paranteze vom scrie control As IRibbonControl.

Exemplu:

Sub RandomDataFormula(control As IRibbonControl)
‘genereaza un domeniu de valori, folosind functia RANDBETWEEN
On Error GoTo Err
    Selection.FormulaR1C1 = „=RANDBETWEEN(18,98)”
Exit Sub

Err:
    MsgBox Err.Description
End Sub

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

Mai departe, pentru ca aceste modificări să persiste în toate workbook-urile, vom modifica startup-ul Excel-ului.
Cum ?
– vom copia şablonul creat anterior, în locaţia: %userprofile%\Application Data\Microsoft\Excel\XLSTART sau în locaţia: C:\Program Files\Microsoft Office\Office14\XLSTART.
Pentru a automatiza acest proces, avem posibilitatea de a crea un batch file, pentru a copia şablonul:

Copy To App Data.bat
copy Book.xltx „%userprofile%\Application Data\Microsoft\Excel\XLSTART”

Copy To Program Files.bat
copy Book.xltx „C:\Program Files\Microsoft Office\Office14\XLSTART”

 Cum arată noile modificări ?

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

a – screentip;
b – supertip.

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

——————————— ——————————— ——————————— ———————————
——————————— ——————————— ——————————— ———————————

Personalizare ribbon Word
– deschidem Custom UI Editor For Microsoft Office şi accesăm meniul FileOpen – şi navigăm până la şablonul Normal.dotm => %userprofile%\Application Data\Microsoft\Templates
– accesăm meniul Insert şi în funcţie de versiunea de Office instalată, selectăm: Office 2007 Custom UI Part sau Office 2010 Custom UI Part;
– codul poate varia în funcţie de ceea ce doriţi să inseraţi în ribbon.
Mai jos, am scris codul pe care l-am creat pentru Word, cod care rulează macrocomenzi direct din modulul ataşat şablonului Normal.dotm.

[stextbox id=”info” caption=”Code” bgcolor=”ffffff”]<customUI xmlns=”http://schemas.microsoft.com/office/2009/07/customui”>
<!– Creat de Alexandru Dionisie (www.cosmintataru.ro) –>
    <ribbon>
        <tabs>
            <!– Cream un grup nou in tab-ul Insert, dupa grupul Text –>
            <tab idMso=”TabInsert”>
                <group id=”w1″ label=”Date” insertAfterMso=”GroupInsertText”>
                    <!– Cream un grup nou ce afiseaza un icon si ruleaza si un cod macro
                          localizat in sablonul Normal.dotm–>
                    <button id=”b1″ label=”Data Curenta” size=”large” imageMso=”StartAfterPrevious” onAction=”modCurrentDate.DataCurenta” screentip=”Data Curenta” supertip=”Insereaza data curenta in document.”/>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
[/stextbox]

Detaliere cod:
– „<!– Cream un grup nou in tab-ul Data, dupa grupul Outline –> ” – este o line de tip comentariu (tot codul are comentarii, pentru a identifica mai uşor paşii realizaţi);
– „<tab idMso=”TabInsert”>” – specificăm locul în inserăm noul grup de comenzi – în cadrul tab-ului Data;
– „<group id=”d1″ label=”Data” insertAfterMso=”Outline”>” – creăm un grup nou, cu un ID unic, cu o etichetă specifică şi specificăm unde anume să fie inserat în acel tab: înainte sau după o anumită comandă;
– „ <button id=”b1″ label=”Data Curenta” size=”large” imageMso=”StartAfterPrevious” onAction=”modCurrentDate.DataCurenta” screentip=”Data Curenta” supertip=”Insereaza data curenta in document.”/>” – specificăm un id unic pentru primul buton, o imagine, o etichetă,  specificăm codul macro pe care dorim să îl ruleze (se va specifica numele modulului în care este stocat, urmat de numele codului), se va afişa un tip general, urmat de o descriere a comenzii.
Mai departe, se va repeta aceeaşi procedură şi pentru celelalte comenzi pe care dorim să le inserăm.

În continuare, vom discuta despre codurile macro pe care le apelează butoanele specificate în codul XML.
Pentru codurile macro, singura modificare pe care trebuie sa o realizăm, este aceea de a modifica argumentele codului.
Mai exact, între paranteze vom scrie control As IRibbonControl.

Exemplu:

Sub DataCurenta(control As IRibbonControl)
    On Error GoTo err
    Selection.InsertDateTime DateTimeFormat:=”dd.MM.yyyy”, InsertAsField:= _
                             False, DateLanguage:=wdRomanian, CalendarType:=wdCalendarWestern, _
                             InsertAsFullWidth:=False
    Exit Sub

err:
    MsgBox err.Description, vbOKOnly + vbInformation, „Eroare”
End Sub

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

De acum înainte, orice document veţi deschide, în cadrul tab-ul Insert, va fi afişată noua comandă.

Rezultatul ?

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

——————————— ——————————— ——————————— ———————————
——————————— ——————————— ——————————— ———————————

Personalizare ribbon Access
Operaţia de modificare a ribbon-ului din MS Access este puţin diferită faţă de cea a aplicaţiilor Word, PowerPoint şi Excel.
În Access va trebui să creăm un tabel nou în care să stocăm codul XML.

Cum procedăm ?
– creăm o bază de date nouă;
– executăm click dreapta în panoul de navigare şi din meniul contextual selectăm opţiunea Navigation Options;

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

– din meniul afişat, vom bifa opţiunea Show System Objects;

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

– accesăm tab-ul Create, grupul de comenzi Tables şi executăm comanda Table Design;
– tabelul va fi compus din 3 coloane:

  • ID – AutoNumber;
  • RibbonName – Text;
  • RibbonXML – Memo.

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

Vom salva tabelul cu numele USysRibbons.
Acum, îl vom popula astfel:

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML
ID – nu completăm fiindcă se va genera automat;
RibbonName – numele noului tab din RibbonMyTab;
Ribbon XML – codul XML pentru generarea tab-ului şi a comenzilor:

[stextbox id=”info” caption=”Code” bgcolor=”ffffff”]<customUI xmlns=”http://schemas.microsoft.com/office/2006/01/customui”>
<!– Creat de Alexandru Dionisie (www.cosmintataru.ro) –>
  <ribbon startFromScratch=”false”>
    <tabs>
   <!– Cream un tab nou –>
      <tab id=”t1″ label=”My Tab” visible=”true”>
  <!– Cream un grup nou cu doua comenzi rulate dintr-un modul –>
        <group id=”g1″ label=”Custom Commands”>
   <button id=”b1″ imageMso=”CaptionInsert” label=”Ruleaza Query” onAction=”CustomQuery”
      screentip=”Rulare interogare” supertip=”Ruleaza o interogare de tip Update.”/>
   <button id=”b2″ imageMso=”Club” label=”Afiseaza Mesaj” onAction=”CusMsg”
                  screentip=”Afisare Mesaj” supertip=”Afiseaza un mesaj personalizat.”/>      
</group>
      </tab>
    </tabs>
  </ribbon>
</customUI>
[/stextbox]

Detaliere cod:
– „<ribbon startFromScratch=”false”>acest atribuit se foloseşte doar în Access şi este necesar să îl specificăm ca fiind False. Rolul acestuia este de a îi „spune” Access-ului că vom crea un tab nou sau că vom modifica unul existent.
– „<tab id=”t1″ label=”My Tab” visible=”true”> ” – creăm un tab nou cu un ID unic, cu o etichetă şi stabilim proprietatea Visible ca fiind True, pentru a afişa tab-ul;
– „<button id=”b1″ imageMso=”CaptionInsert” label=”Ruleaza Query” onAction=”CustomQuery”
      screentip=”Rulare interogare” supertip=”Ruleaza o interogare de tip Update.”/>
– specificăm un id unic pentru primul buton, o imagine, o etichetă,  specificăm codul macro pe care dorim să îl ruleze, se va afişa un tip general, urmat de o descriere a comenzii.
Mai departe, se va repeta aceeaşi procedură şi pentru celelalte comenzi pe care dorim să le inserăm.

În continuare, vom discuta despre codurile macro pe care le apelează butoanele specificate în codul XML.
Pentru codurile macro, singura modificare pe care trebuie sa o realizăm, este aceea de a modifica argumentele codului.
Mai exact, între paranteze vom scrie control As IRibbonControl.

Exemplu:

Option Compare Database

Sub CusMsg(control As IRibbonControl)
    msgbox „Acesta este primul meu tab in Access.”, vbOKOnly + vbInformation, „Info”
End Sub

Sub CustomQuery(control As IRibbonControl)
    DoCmd.OpenQuery „Demo”, , acAdd
End Sub

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

Access va afişa un mesaj de eroare atunci când veţi rula codul.
Cum remediem?
Accesăm editorul VBA – meniul ToolsReferences – bifăm librăria: Microsoft Office 14 Object Library.

În continuare, vom ascunde tabelele de sistem:
executăm click dreapta în panoul de navigare şi din meniul contextual selectăm opţiunea Navigation Options;

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

– din meniul afişat, vom debifa opţiunea Show System Objects;

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XMLÎn continuare, vom modifica baza de date, pentru a afişa noul tab:
– meniul FileOptions – categoria Current Database – secţiunea Ribbon and Toolbar Options şi selectăm tab-ul pe care l-am creat anterior.

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML

Acum vom închide baza de date şi o vom redeschide.

Rezultatul ?

Modificarea ribbon-ului din Office 2007 şi 2010 folosind cod XML——————————— ——————————— ——————————— ———————————

 Pentru PowerPoint, procedura este similară cu cea scrisă pentru Word şi Excel.

——————————— ——————————— ——————————— ———————————

Update
Dat fiind faptul că Excel nu are template global, precum Word, modificările aduse ribbon-ului în template-ul creat sunt valabile DOAR pentru workbook-urile noi.
Cele existente nu vor afişa modificările aduse ribbon-ului.
După îndelungi teste, m-am decis să îl contactez pe Ron de Bruin, care este un MVP pe partea de Excel.
Acesta mi-a sugerat să folosesc un Add-In pe care să îl instalez în Excel.
Am creat un workbook nou şi i-am modificat codul XML şi la urmă l-am salvat ca Add-In (*.xlam).
După ce l-am instalat, am deschis un workbook existent şi am constatat că ribbon-ul afişează modificările operate mai sus.

——————————— ——————————— ——————————— ———————————

Download | Materiale de lucru
MSDN
Customizing the 2007 Office Fluent Ribbon for Developers
UI Editor | Office Custom UI Editor
Images | Control ID’s – 2007
Images | Control ID’s – 2010
Icons | Icon Gallery

Cosmin Tătaru

Pasionat de blogging și tehnologie încă din 2009, Cosmin este aici să vă ajute să vă creșteți vânzările și productivitatea punând tehnologia la treabă pentru dumneavoastră.

Mergeți sus

Dacă derulezi pagina sau dacă navighezi pe acest site, îți dai acordul să folosim cookies. Cookie consent --> vezi detalii

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close