Visualizza messaggio singolo
Vecchio 09-03-2015, 09.04.49   #4
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.208
Alexsandra è un gioiello raroAlexsandra è un gioiello raroAlexsandra è un gioiello raroAlexsandra è un gioiello raro
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

Quota:
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

Quota:
Per cambiare il nome della scheda nella barra multifunzione dobbiamo modificare la seguente riga di codice

Quota:
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:

Quota:
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

Quota:
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

Quota:
E la barra assume questo aspetto

Fig. 10

Come potete vedere ogni gruppo viene aperto usando i tag

Quota:
e chiuso dal tag

Quota:
e tra i 2 tag vengono inseriti i vari pulsanti che faranno parte di quel gruppo. I pulsanti presentano un codice come il seguente

Quota:
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

Quota:
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

Quota:
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato