- Dettagli
- Scritto da Alessandra
- Pubblicato: 27 Ottobre 2011
- Visite: 28156
Office 2010, a differenza di Office 2007, permette di personalizzare la barra multifunzione in modo interattivo.
Le possibilità di personalizzazione, però, sono limitate (ad esempio, non possono essere usate immagini personalizzate, e soprattutto non possono essere limitate ad un singolo file, ma sono applicate a tutti i file Excel disponibili.
Se si desidera apportare modifiche più complesse, o se si desidera apportare delle modifiche alla barra multifunzione lavorando con Office 2007, occorre lavorare un po' di più e scrivere del codice XML.
Per prima cosa dobbiamo chiarire come avviene la personalizzazione della barra degli strumenti di un singolo file.
I lettori sapranno che i file Office 2007/10 sono in realtà delle cartelle compresse. Se modificate la loro estensione in .zip, potrete poi scompattarla.
Per poter modificare l'estensione occorre chiedere a Windows di mostrarvela, nelle Opzioni cartella. Visualizzate le risorse del computer (visualizzate pure il contenuto di una cartella qualsiasi o, se preferite, di quella che contiene il file di cui volete cambiare l'estensione) e scegliete Strumenti > Opzioni Cartella oppure, se usate Windows 7, scegliete Organizza > Opzioni Cartella e ricerca. Windows aprirà la finestra Opzioni Cartella. Portatevi alla scheda Visualizzazione. Nella sezione Impostazioni avanzate, trovate l'opzione Nascondi le estensioni per i tipi di file conosciuti e deselezionatela.
Una volta scompattata la cartella, potrete entrare al suo interno. Per creare una barra multifunzione personalizzata, dovete innanzi tutto, creare qui dentro una cartella col nome customUI. Dentro custumUI, occorrerà creare il file XML custmUI.xml che conterrà il codice che crea la barra personalizzata.
Occorrerà un codice come quello che segue
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="dbCustomTab" label="Scheda personalizzata" visible="true">
<group id="dbCustomGroup" label="Gruppo personalizzato" >
<control idMso="Paste" label="Incolla" enabled="true"/>
<control idMso="Copy" label="Copia" enabled="true"/>
</group>
<group id="dbCustomGroup2" label="Gruppo personalizzato2" >
<control idMso="FilePrintQuick" label="StampaVeloce" enabled="true"/>
<control idMso="FilePrintPreview" label="Anteprima di stampa" enabled="true"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Se si lavora con Office 2007 la prima riga del codice sarà <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
Il nodo radice di questo codice è <customUI> che a sua volta racchiude il tag <ribbon> che descrive l'intera barra multifunzione.
Nel caso dell'esempio la barra multifunzione personalizzata si basa su quella standard grazie alla riga
<ribbon startFromScratch="false">
Poi con il nodo <tabs> iniziamo la costruzione delle diverse schede della barra multifunzione. Ovviamente non essendo partiti da zero, la nostra barra contiene già tutte le schede standard (più sotto vedremo come eliminarne e/o modificarne qualcuna). Ogni tag <tab> all'interno di <tags> crea una nuova scheda.
All'interno di ogni tag <tab> con il tag <group> creiamo un nuovo gruppo di comandi. All'interno di ogni gruppo, con il tag <control>, inseriamo i diversi controlli.
Nel codice di esempio proposto sopra, nel primo gruppo abbiamo inserito i controlli predefiniti Copia e Incolla, mentre nel secondo i comandi Stampa Veloce e Anteprima di stampa.
Come avrete notato analizzando il codice, il nome dei diversi comandi va specificato usando il loro id (idMso).
Se si desidera richiamare una propria macro, innanzi tutto la macro va preparata in modo opportuno. La routine visual basic deve essere pubblica e deve risiedere in un modulo di codice non associato a nessun oggetto.
Perché tutto funzioni assicurativi di avere a disposizione la libreria Microsoft Office 12.0/14.0 Object Library . Per verificarlo, nell'editor di Visual Basic, scegliete Strumenti > Riferimenti. Se la libreria non è disponibile nella finestra Riferimenti, aggiungetela.
La routine deve essere simile a questa
Public Sub ciao(control As IRibbonControl)
MsgBox ("Ciao")
End Sub
Per richiamarla da una barra multifunzione, aggiungete all'interno di un tab <group> un tab button simile al seguente
<button id="ciao" label="ciao" size="large" onAction="ciao" />
La porzione importante è la callback onAction="ciao" dove ciao è la routine che dobbiamo richiamare.
Immagine personalizzata
Per aggiungere al nostro <button> una immagine personalizzata, occorre creare all'interno della cartella customUI una cartella immagini. Immaginiamo di chiamarla images. Al suo interno dobbiamo copiare l'immagine da usare per il pulsante.
Per poterla usare, però, occorre definire un id e un riferimento a questo file.
Nella cartella customUI create una cartella _rels. Al suo interno create il file xml customUI12.xml.rels (se lavorate con Office 2007) customUI14.xml.rels (se lavorate con Office 2010).
Il suo contenuto deve essere simile al seguente
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="hello" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="images/hello.png"/></Relationships>
In questo caso specifico il nostro file immagine ha id hello.
Per usare quell'immagine ora basta richiamarla così
<button idMso="Copy" label="Copia" enabled="true" image="hello" />
Mi rendo conto che tutta questa procedura non è molto semplice. In un prossimo post, spiegheremo come semplificarla, usando lo strumento gratuito Office CustomUI Editor