Personalizzare la Barra Multifunzione di Excel
Dalla versione 2007 di Excel, Microsoft ha introdotto la barra multifunzione (In inglese
Ribbon User Interface, abbreviato Ribbon UI), che, per la maggior parte, non poteva essere modificata in alcun modo se non tramite programmazione, lasciando così molti utenti senza un mezzo pratico per aggiungere o personalizzare l’interfaccia grafica di Excel. Con il rilascio di Office 2010 è stata introdotta la funzione di poter Personalizzare la barra multifunzione, raggiungibile dal menu
File – Opzioni. Questa funzione permette di personalizzare gli elementi della barra creando nuove schede o gruppi a cui assegnare i comandi di cui necessitiamo, permette inoltre di rinominare o nascondere schede e gruppi esistenti.
Questa funzione però presenta un notevole limite, specialmente per gli sviluppatori, in quanto una volta eseguita la personalizzazione della Barra, la stessa
rimane modificata per tutti i file Excel che andremo a creare o quelli esistenti che vogliamo consultare, questo perché la modifica viene salvata nel file modello di Excel (Excel15.xlsb per Excel 2013). Risulterebbe molto più utile riuscire a personalizzare la barra multifunzione in base all'applicazione che viene sviluppata e che lasci inalterato il modello di Excel in modo che tutti i file creati o quelli consultati appaiano con la barra di default.
Prima di addentraci nell'argomento facciamo una premessa per comprendere alcune interazioni di Office in questo contesto. Si deve tenere presente che i file di Office 2007/10 sono in realtà delle cartelle compresse, infatti se proviamo a salvare un file di Excel sul Desktop e rinominiamo l’estensione da
.xlsx in
.zip e in seguito facendo doppio click sul file (si ipotizza che sia presente nel sistema il compressore Zip) verrà aperto riportando una schermata come quella in
Fig. 1
Fig. 1
Possiamo notare che cambiando l’estensione sono apparse delle cartelle e navigando tra di esse troveremo dei file con estensione
.xml, questo perché ci sono dei componenti di Office basati su xml che vengono integrati nel file di Excel. Proviamo ora a modificare la barra multifunzione agendo dall'apposita funzione tramite il menu
File – Opzioni e una volta eseguita la modifica alla barra e salvata l’operazione, clicchiamo sul pulsante
Importa/Esporta. Al click sul pulsante viene mostrato un menu a discesa che riporta due opzioni, scegliendo di esportare tutte le personalizzazioni della barra, verrà mostrata una finestra in cui possiamo notare che la personalizzazione viene esportata in un file con un’estensione
exportedUI, che se lo apriamo con Notepad o qualsiasi altro editor di testo, noteremo una sintassi molto simile all'XML
Fig. 2
Queste verifiche per mostrare che dalla versione di Office 2007 Microsoft ha usato particolari funzioni scritte in linguaggio
xml e una di queste è riferita alla barra multifunzione, che utilizza la tecnica
RibbonX (Ribbon Extensibility), per memorizzare le personalizzazioni della barra in un file .xml, che viene incorporato o nel file modello, tramite la funzione personalizza barra multifunzione presente dalla versione 2010, oppure nel file Excel (xlsx o xlsm) che stiamo personalizzando utilizzando il linguaggio di programmazione XML
L'editor CustomUI per personalizzare la barra multifunzione
A questo punto risulta evidente che possiamo utilizzare il linguaggio xml per personalizzare la barra multifunzione in modo da adeguarla all'applicazione Excel che stiamo sviluppato, lasciando inalterato il file modello in modo da avere una barra personalizzata solo per un file specifico. Per svolgere questa operazione useremo un Tool gratuito chiamato
Custom UI Editor [download], che permette di inserire un file denominato
customUI.xml nella cartella di lavoro che viene caricata quando si apre il file in Excel 2007-2013 e/o un file
customUI14.xml che si carica solo quando si apre la cartella di lavoro in Excel 2010-2013.
Se si preferisce creare una scheda personalizzata nella propria cartella di lavoro, si deve scrivere o registrare almeno una macro nel file, questo per poter assegnare ai vari pulsanti della barra delle operazioni da compiere, e si deve salvarlo con l’estensione xlsm (cioè con attivazione delle macro). Supponiamo di modificare la barra di un file chiamato
prova.xlsm, il primo passo da compiere è quello di aggiungere la parte personalizzata alla barra di Excel tramite l'editor Custom UI seguendo queste indicazioni:
1. Chiudere la cartella di lavoro e anche Excel.
2. Aprire l'Editor Custom UI
3. Fare clic sul pulsante Apri, quindi selezionare e aprire il file prova.Xlsm
4. Fare clic sul menu Inserisci, quindi fare clic su una delle opzioni Custom UI.
o Se il file viene utilizzato solo in Excel 2010 o versioni successive, selezionare la prima voce
o Se il file verrà utilizzato anche in Excel 2007, selezionare la seconda voce
Importante: In questa fase viene effettuata la distinzione tra le versioni, quindi, se si utilizza Office 2007 si deve scegliere la seconda opzione dal menu a discesa altrimenti seguite l'esempio.
Fig. 3
Se è stata selezionata una delle due opzioni si vedrà apparire un nodo addizionale nella vista ad albero di sinistra con una piccola icona e la dicitura custom accanto ad essa, come si può vedere in
Fig. 2. Ora è possibile utilizzare un codice XML predefinito invece di riscriverlo tutto, basta andare all’opzione
Inserisci della barra menu e scegliere
Sample XML e dal menu che compare selezionare
Excel – A Custom Tab (scheda personalizzata)
Fig. 4
Questa operazione aggiunge del codice di esempio nella finestra di codice, il file
customUI14.xml nella finestra di sinistra e questo esempio predefinito ha tutti gli elementi di cui abbiamo bisogno. Si creerà la barra, il gruppo e il tasto che ci serve per eseguire l’operazione. Ma questo è solo un esempio che dobbiamo modificare per adattarlo alle nostre esigenze. In
Fig. 5 qui sotto si può vedere come appare il codice.
Fig. 5
Nel codice xml, si può vedere che c'è una voce per ogni parte dell'interfaccia personalizzata e ogni elemento ha un ID univoco, un marchio, e forse altre proprietà, come un'icona e una macro che viene eseguita quando si fa clic sul pulsante. Ad esempio, prendiamo il codice per uno dei pulsanti del gruppo
Strumenti Contoso e vediamo come è composto
NB: Tutto il codice xml viene inserito come immagine per conflitto con la formattazione del Forum, inoltre le interruzioni di riga sono stati aggiunte per rendere il codice più leggibile.
• ID : customButton1 - è univoca. Ogni ID può utilizzato una sola volta nel codice.
• Label : E’ un’etichetta e “ConBold” è il testo che verrà visualizzato sul pulsante nella scheda della barra multifunzione
• Size : E’ la dimensione ed è impostata su Large, quindi è più visibile sulla barra multifunzione.
• onAction : E’ l’azione da eseguire e “conBoldSub” è il nome della macro che verrà eseguita quando si fa clic sul pulsante.
• imageMso : E’ l'immagine o icona che apparirà anche sul pulsante
Prima di salvare il codice, l'Editor custom UI può controllare il codice, per assicurarsi che sia valido. Per eseguire questa operazione si deve cliccare sul pulsante “Validate” (Convalida)
Fig. 6
Se il codice contiene degli errori, viene rimandato un messaggio evidenziando la riga di codice o la stringa che lo ha generato, inoltre è possibile vedere la scheda personalizzata che il codice di esempio crea, ritornando ad Excel e compiendo queste operazioni:
1. Salvare le modifiche fatte nell’editor Custom UI
2. Chiudere l'Editor
3. Aprire Excel e aprire il file prova.xlsm
4. La nuova scheda personalizzata appare sulla barra multifunzione, dopo la scheda Home. È possibile vedere il pulsante ConBold, nel gruppo Strumenti Contoso, e la sua immagine Bold.
Fig. 7
A questo punto possiamo iniziare a modificare il codice per creare una scheda nella barra multifunzione a cui assegneremo il nome di Commesse, creeremo un gruppo nominato “Contabilità” e un altro “Utility” con vari pulsanti per eseguire delle macro e compiere della azioni. Iniziamo trascrivendo tutto il codice generato
Per cambiare il nome della scheda nella barra multifunzione dobbiamo modificare la seguente riga di codice
Possiamo modificarlo in questo modo:
1. Cambiare l'id della scheda, ricordando che l'id scheda deve essere univoco e può assumere qualsiasi termine che volete, consiglio di assegnare un nome che ricordi quello che fa la scheda. Io l'ho chiamato “Gcomm” che sta per Gestione Commesse
2. Cambiare la label (Etichetta) della scheda, a cui ho assegnato il nome “Commesse”
3. Lasciare inalterato il valore insertAfterMso (Inserisci dopo) che nel nostro esempio mostra la scheda “Commesse” dopo la scheda Home.
Una volta fatte queste modifiche il codice diventa:
E la barra assume l’aspetto come in
Fig. 8
Fig. 8
Abbiamo detto poco sopra che creeremo nella barra multifunzione una scheda “Commesse”, in cui inseriremo un gruppo “Contabilità” e un altro “Utility” con vari pulsanti per eseguire delle macro. Modifichiamo ora il codice per creare i 2 gruppi in questo modo
E la nostra barra assumerà questo aspetto
Fig. 9
Possiamo ora aggiungere altri gruppi con vari pulsanti, basta solo che gli Id siano univoci. Per esempio aggiungiamo altri gruppi e pulsanti scrivendo il codice in questo modo
E la barra assume questo aspetto
Fig. 10
Come potete vedere ogni gruppo viene aperto usando i tag
e chiuso dal tag
e tra i 2 tag vengono inseriti i vari pulsanti che faranno parte di quel gruppo. I pulsanti presentano un codice come il seguente
Dove:
Id = Indica l’id univoco del pulsante
Label = Mostra l’etichetta del pulsante
Size = Indica la dimensione del pulsante
onAction = indica la macro che viene eseguita al click sul pulsante
imageMso = Indica l’icona da mostrare sul pulsante
Nota: Per visualizzare le icone disponibili che è possibile utilizzare come immagine Mso, si può scaricare la Galleria disponibile sul sito Microsoft a
questo indirizzo che mette a disposizione una cartella di lavoro basata su macro e contiene gli ID di tutte le icone della barra multifunzione incorporate in Office 2007. E’ anche possibile inserire delle icone personalizzate presenti nel Pc, l’unica restrizione è che abbiano come dimensione massima il formato 48x48 Pixel per la dimensione Large.
Se ora andiamo a sostituire le varie icone modificando il codice in questo modo
la barra assume questo aspetto
Fig. 11
A questo punto rimane da associare una macro ad ogni pulsante e possiamo procedere in due modi. Possiamo aggiungere un
Callback (chiamata)alla barra per ogni macro utilizzando un altro comando nell'editor custom UI cliccando sull’apposito pulsante evidenziato nella figura qui sotto
Fig. 12
Verrà visualizzato un nuovo foglio di codice, con tutte le macro che sono state elencate nel codice come elementi
OnAction
Fig. 13
Nelle parentesi dopo ogni nome di macro, è possibile vedere il
Callback (control As IRibbonControl) che viene si potrebbe copiare e incollarlo nell’editor VBA del file di Excel in un nuovo modulo. Oppure, nel caso si siano già create le varie chiamate alle procedure, si deve modificare ciascuna delle vostre macro esistenti, aggiungendo il Callback (control As IRibbonControl). Per tornare alla finestra del codice dell’editor Custom UI, fare clic sul nome della cartella di lavoro nella finestra ad albero di sinistra
Dopo aver apportato le modifiche alla barra è possibile verificarne il funzionamento in questo modo:
1. Salvare le modifiche, e chiudere l'Editor Custom UI
2. Aprire Excel e aprire il file prova.Xlsm
3. Per visualizzare il codice VBA, premere Alt + F11, controllare il codice nel modulo e verificare che ogni macro abbia il Callback aggiunto.
Concludiamo con il codice completo per l’editor Custom UI