01 Creare in modo automatico codice VBA Lo scopo di questo testo è di avvicinare il lettore alla programmazione in Vba (Visual Basic for Application), il linguaggio di programmazione che opera nell ambito di Excel e delle applicazioni Office in generale. Cercheremo di trattare quest argomento con l idea che chi sta leggendo inizia da zero. Eviteremo di ricorrere per quanto possibile a termini tecnici o conclusioni scontate ma avvantaggeremo la semplicità e la chiarezza, anche se così facendo incorreremo sicuramente in qualche inesattezza formale. Non c è l intenzione di diventare esperti della programmazione in VBA, ma avere la soddisfazione di creare qualcosa e vederlo funzionare. Quindi, prima di cominciare a scrivere direttamente il codice, entreremo nel mondo del VBA attraverso una strada più agevole e guidata: il registratore delle macro, una funzionalità di Excel, facile da utilizzare, che consente di trasformare in una macro (o meglio, in un programmino in Vba), una qualsiasi procedura eseguita alla tastiera. Cos è una macro Una macro è un insieme d istruzioni che il computer interpreta una dopo l altra e traduce in azioni operative, né più né meno come se fossero state impartite manualmente da noi. Una macro può essere eseguita indefinitamente tutte volte che si desidera, e pertanto si rivela una ottima soluzione per automatizzare una volta per tutte l esecuzione di procedure ricorrenti. Le applicazioni pratiche delle macro sono solo da immaginare: la stampa di una tabella, la formattazione di un documento, la creazione di un grafico, la ricerca di particolari valori, ecc. 1
c a p i t o l o 1 c r e a r e i n m o d o a u t o m a t i c o c o d i c e v b a Su questo strumento baseremo il nostro metodo di apprendimento. Cominceremo a registrare alcune semplici macro e, analizzando pazientemente il codice generato, impareremo le più importanti istruzioni e parole chiave e la dinamica del loro utilizzo. Inoltre un programma in Vba può essere generato assemblando opportunamente fra loro macro elementari. Pertanto, dopo avere fatto un po di esperienza, possiamo arrivare a sviluppare una piccola applicazione accorpando fra loro, con banali operazioni di copia e incolla, spezzoni di macro registrate singolarmente. Come ultima cosa, ma non meno importante, i comandi e le finestre del registratore di macro e del codice VBA non sono praticamente mai cambiate dalla versione Excel 2000 fino all attuale. Quindi, anche se l Excel che possedete non è lo stesso di quello che appare nelle immagini degli articoli, non si dovrebbe incontrare alcune difficoltà nelle spiegazioni. La scheda Sviluppo Come si diceva, il registratore delle macro ha la prerogativa di trasformare in un listato Vba una qualsiasi procedura operativa eseguita con la mediazione della tastiera o del mouse. Il corrispondente programma, che al momento della registrazione deve avere un nome (il più esplicativo possibile), è custodito nella memoria del computer e può essere richiamato tutte le volte che si vuole eseguire quella procedura. Una premessa iniziale. Nelle versioni standard di Excel 2007, di Excel 2010 e Excel 2013, a differenza delle versioni precedenti, non sono presenti i comandi per la creazione delle macro e del codice VBA. Per questi comandi si deve utilizzare un altra scheda nella barra multifunzione: la scheda Sviluppo. Per attivarla, per Excel 2007, basta fare clic sul Pulsante Office e scegliere Opzioni di Excel. Nella versione Excel 2010 e 2013 il comando si chiama Opzioni ed è nel menu File. 2
l a s c h e d a s v i l u p p o Per Excel 2007, nella categoria Impostazioni generali, in Opzioni principali per l'utilizzo di Excel, seleziona la casella di controllo Mostra scheda Sviluppo sulla barra multifunzione e fai clic su OK. Per Excel 2010 e 2013 nella categoria Personalizzazione barra multifunzione, seleziona la casella Sviluppo. 3
c a p i t o l o 1 c r e a r e i n m o d o a u t o m a t i c o c o d i c e v b a Nella barra multifunzione appare la scheda Sviluppo con i comandi per l accesso immediato ad alcune opzioni utili per la programmazione. Registriamo una macro Vediamo finalmente come si crea una macro. Ad esempio registriamo un semplice programma che formatta la cella selezionata in corsivo, grassetto, sottolineato doppio e colore rosso scuro in un unico comando. 4
r e g i s t r i a m o u n a m a c r o Apri Excel. Per le versioni 2007, 2010 e 2013 di Excel, nella scheda Sviluppo, seleziona il comando Registra Macro del gruppo Codice. Per la versione Excel 2003, apri il menu Strumenti e scegli la voce Macro. Nel corrispondente sottomenu seleziona la voce Registra nuova macro. In ogni caso accedi alla finestra per la denominazione e le impostazioni della macro che intendiamo registrare. Nella casella Nome macro scrivi il nome che vuoi dare alla macro (ad esempio, formatta) cercando che descriva cosa fa il programma. Infatti, quando si ha a che fare con numerose macro, può diventare difficile riconoscerle se il nome assegnato non ci aiuta a risalire immediatamente a quello che fanno. Il nome digitato nella casella prende il posto di quello che Excel propone per default, Macro1, dato che questa è la prima macro che stiamo registrando. Se non si scrive il nome, Excel lo attribuisce chiamandolo Macro1, Macro2, ecc. secondo il numero di registrazioni effettuate in precedenza. Il primo carattere del nome della macro deve essere una lettera. Per i caratteri successivi al primo è possibile utilizzare lettere, numeri o caratteri di sottolineatura. 5
c a p i t o l o 1 c r e a r e i n m o d o a u t o m a t i c o c o d i c e v b a Il nome di una macro non può contenere spazi o simboli come punti di domanda, virgole o altro. Uno dei simboli ammessi e utilizzati per sostituire lo spazio è "_" detto underscore. Nella finestra puoi stabilire qual è l eventuale tasto di scelta rapida da usare, cioè la combinazione di due tasti che, quando sono premuti, eseguono la macro. Uno dei due tasti deve essere necessariamente il tasto Control, mentre il secondo (un carattere) deve essere digitato nella casella Tasto di scelta rapida. Ricordiamo che le combinazioni di tastiera sono utilizzate da Excel (e da molti altri programmi) come alternative ai comandi della barra multifunzione: le più note sono CTRL+C per Copia, CTRL+V, per Incolla, CTRL+X per Taglia, ecc. Anche se Excel consente di discriminare fra caratteri maiuscoli e minuscoli, si deve fare attenzione a non creare doppioni, poiché il tasto di scelta rapida specificato avrà la precedenza sui tasti di scelta rapida predefiniti di Excel. Per questa ragione, sconsigliamo l uso di combinazioni di tastiera per le macro. Con il menu a discesa Memorizza macro in puoi scegliere se memorizzare la macro nel file Excel che stiamo utilizzando, in una nuova cartella di lavoro oppure nella Cartella macro personale. Memorizzare una macro nella Cartella Macro personale permette di rendere una macro disponibile ogni volta che si utilizza Excel. Se si seleziona quest opzione, verrà creata una cartella di lavoro macro personale nascosta (Personal.xlsb), se non esiste già, nella quale sarà salvata la macro. Questa cartella di lavoro viene salvata in Windows Vista e 7 nel percorso C:\Utenti\nome utente\appdata\local\microsoft\ Excel\XLStart e in Microsoft Windows XP nel percorso C:\Documents and Settings\ nome utente\dati applicazioni\microsoft\excel\xlstart, in modo da poter essere aperta automaticamente a ogni avvio di Excel. Se si sceglie l opzione Questa cartella di lavoro (impostazione predefinita) la macro funziona solo nel file di Excel in cui si trova. Questo caso è il più tipico, poiché spesso si realizza una macro per risolvere problemi del foglio di lavoro che stiamo utilizzando. L ultima casella della finestra di dialogo, Descrizione, serve per inserire eventuali annotazioni sulla macro: ad esempio, descrivere la sua funzione oppure per ricordare quali sono i passi salienti che la macro compierà. 6
r e g i s t r i a m o u n a m a c r o Puoi utilizzarla per ricordarti delle funzioni svolte dal programma senza doverlo necessariamente eseguire. Purtroppo, vedremo che, una volta creata la macro, queste note non sono facilmente visualizzabili, quindi la loro utilità è relativa. Puoi compilare la finestra di dialogo in questo modo. Terminato l inserimento dei dati, premi il pulsante OK. Così facendo, si determina l attivazione del registratore e la contemporanea visualizzazione nella barra di stato del pulsante Interrompi registrazione, caratterizzato da un quadrato scuro, che consente di arrestare la registrazione in corso. 7
c a p i t o l o 1 c r e a r e i n m o d o a u t o m a t i c o c o d i c e v b a Con Excel 2003 e precedenti, appariva una barra dalla quale era possibile interrompere la registrazione. Con Excel 2007, 2010 e 2013 per interrompere la registrazione puoi anche fare clic sul pulsante Interrompi registrazione nel gruppo Codice della scheda Sviluppo. Nella stessa scheda c è il pulsante Usa riferimenti relativi che consente di interpretare la selezione di una cella come distanza relativa o assoluta rispetto a un altra cella: non è un opzione molto utile poiché Excel di solito fatica a capire che non stai selezionando la cella D4, ma l ultima cella in basso di un certo intervallo. Un ultima cosa prima di cominciare. Non tutte le azioni sono registrate; per esempio, Excel non registra quando: passi da una scheda della barra multifunzione a un altra; apri una finestra di dialogo senza modificare alcuna impostazione (per esempio quando apri Imposta Pagina, ma esci premendo Annulla); passi da un programma all altro (per esempio da un documento Word a un foglio Excel); esegui un azione e la annulli con Ctrl+Z (in passato il registratore registrava il passaggio e poi anche l annullamento di quest ultimo). 8
r e g i s t r i a m o u n a m a c r o Negli altri casi, Excel registrerà sempre quello che stai facendo: ad esempio, se passi da un foglio all altro o se selezioni una cella. Inoltre, quando registriamo una macro il tempo che passa non è rilevante. Non dobbiamo pensare di trovarci di fronte a un registratore musicale che incide degli eventi sonori in un supporto magnetico. Nella registrazione di una macro, se tra un operazione e l altra lasciamo passare delle ore, le operazioni o eventi saranno registrati come se il tempo non fosse passato. Quello che è invece importante, è la sequenza dei comandi. A questo punto eseguiamo la procedura da registrare: la formattazione della cella selezionata in corsivo, grassetto, sottolineato doppio e colore rosso scuro. Per prima cosa non selezionare una particolare cella: rimani su quella che è evidenziata, altrimenti Excel registra l operazione di selezione. Nella scheda Home fai clic sul pulsante Corsivo e Grassetto. Dal menu del pulsante Sottolineato scegli Sottolineato doppio e dal menu del pulsante Colore carattere scegli il colore Rosso scuro. La procedura è conclusa. Puoi spegnere il registratore con un clic sul pulsante Interrompi registrazione. 9
Salvare un file Excel con macro Prima di vedere come funziona la nostra macro, salviamo il file Excel. Dal pulsante Office scegli il comando Salva. Assegna il nome che preferisci e fai clic su Salva. Appare il seguente messaggio. È un messaggio che avvisa che nel file sono presenti delle macro. Se fai clic su Sì, il file viene salvato ma si perdono le macro registrate: serve per evitare di memorizzare codice che potrebbe essere dannoso (come dei virus).
s a l v a r e u n f i l e e x c e l c o n m a c r o Nel nostro caso si deve fare clic su No per non eliminare la macro appena creata. Il file deve essere salvato con il formato Cartella di lavoro con attivazione macro di Excel, come in figura. Il file sarà salvato con estensione "xlsm": come vedremo in seguito, quando si riapre il file l'applicazione presenterà all'utente la possibilità di attivare o meno le macro contenute all'interno. Se si decide di salvare il file di Excel nel formato standard (xlsx), le macro non saranno salvate e non saranno disponibili alla successiva riapertura del file. Con Excel 97-2003, le macro sono salvate all interno del file senza che l'applicazione proponga di differenziarne la tipologia. Anche l icona del file è diversa. I file di Excel con macro (cioè, quelli con estensione terminante in m) hanno un punto esclamativo che le contraddistingue. 11
c a p i t o l o 1 c r e a r e i n m o d o a u t o m a t i c o c o d i c e v b a Ora puoi chiudere il file e uscire da Excel. Nei prossimi capitoli vedremo come eseguire la macro che abbiamo creato. Inoltre visualizzeremo, commenteremo e modificheremo il codice VBA che abbiamo registrato per imparare a scrivere qualche comando di Excel Basic. 12