18 Le macro Le macro rappresentano una soluzione interessante per automatizzare e velocizzare l esecuzione di operazioni ripetitive. Le macro, di fatto, sono porzioni di codice VBA (Visual Basic for Applications) che, in pratica, aggiungono funzionalità ad un programma come Excel. L aspetto interessante delle macro è che si possono usare anche senza conoscere il VBA e la programmazione. Tutto questo è possibile grazie allo strumento di registrazione delle macro: mentre voi eseguite le operazioni che volte automatizzare, Excel le memorizza e le traduce in linguaggio VBA. In un momento successivo potrete riutilizzarle per rieseguire le operazioni che volete automatizzare. Naturalmente gli esperti possono creare manualmente le loro macro, scrivendo direttamente il codice VBA. Prima però occorre fare alcune premesse: Office 2007/2010/2013 e, dunque anche Excel 2007/2010/2013, distingue i file che contengono codice VBA dagli altri con un estensione e un icona diverse. La Figura 1 mostra a sinistra l icona di un file che non contiene codice VBA e a destra quella di uno che ne contiene. Figura 1 Le Icone dei file di Excel con e senza macro. I normali file di Excel hanno estensione.xlsx, mentre quelli che contengono codice VBA hanno estensione.xlsm. Anche il formato di salvataggio è diverso. Quando salvate un file che contiene codice VBA (le porzioni di codice vengono definite Macro) occorre specificare ad Excel che deve salvarlo usando il formato Cartella di lavoro con attivazione di macro di Excel. Qualora tentaste di salvare il file nel formato tradizionale, Excel vi avviserebbe che non è possibile memorizzare le caratteristiche www.lezione-online.it 1
del vostro file nel formato che avete scelto. Nella finestra di avviso scegliete No. In questo modo Excel vi mostrerà la finestra Salva con nome, nella quale potrete scegliere il formato corretto per conservare il vostro codice VBA. Se invece, scegliete Si e salvate comunque in formato.xlsx, il codice che avete inserito nel file non sarà in alcun modo eseguibile, né utilizzabile. Office 97, XP e 2003 non distinguono i file con codice VBA da quelli che ne sono privi. Tutti i file Excel hanno la stessa estensione (.xls) e la stessa icona. La differenziazione del formato dei file che contengono codice VBA si è resa necessaria anche per il fatto che il codice può essere pericoloso; talvolta, si sono trovati documenti Office che, all'interno del VBA nascondevano dei virus. Per questo oltre alla differenziazione del formato, Excel vi permette di stabilire come gestire i singoli file che contengono del codice. Volendo, è possibile fare in modo che Excel blocchi l'esecuzione di tutto il codice, ma, avendo bisogno di VBA, si tratta di un impostazione troppo drastica. D'altro canto, lasciare che Excel esegua qualsiasi codice, anche quello non scritto da voi, può essere pericoloso. La soluzione giusta consiste nel fare in modo che, all'apertura di tutti i file che contengono codice, Excel vi chieda se eseguirlo o meno. Per determinare queste impostazioni, occorre che, sulla barra multifunzione, sia visibile la scheda Sviluppo. Se non lo fosse, aprite il menu File e premete il pulsante Opzioni 1. Visualizzerete la finestra Opzioni di Excel; nella sezione Personalizzazione barra multifunzione mettete un segno di spunta alla voce Sviluppo 2 (vedi Figura 2). 1 Pulsante Office e Opzioni di Excel per gli utenti di Office 2007. 2 Nella sezione Impostazioni generali mettete un segno di spunta alla voce Mostra scheda Sviluppo sulla barra multifunzione se utilizzate Excel 2007. www.lezione-online.it 2
Figura 2 - Mostra scheda sviluppo (Excel 2010). Fatto questo, chiudete la finestra Opzioni Excel e portatevi sulla scheda Sviluppo 3 Qui nel gruppo Codice, premete il pulsante Sicurezza macro. Si aprirà la finestra del Centro protezione: Le opzioni disponibili sono: Disattiva tutte le macro senza notifica: utilizzare questa impostazione se le macro non sono considerate attendibili. Tutte le macro nei documenti ed i relativi avvisi di protezione verranno disattivati. Disattiva tutte le macro con notifica: si tratta dell'impostazione predefinita. Utilizzarla se si desidera disattivare le macro ma si desidera anche ricevere messaggi di avviso nel caso siano presenti macro. In questo modo è possibile scegliere se attivare o no le singole macro. Disattiva tutte le macro tranne quelle con firma digitale: Questa impostazione è uguale all'opzione alla precedente con la differenza che la macro può essere 3 Nelle versioni di Excel 97/2003/XP il nastro Sviluppo non esiste. Il menù delle Macro è StrumentiMacro. www.lezione-online.it 3
eseguita se è firmata da un autore attendibile che è già stato considerato tale. In caso contrario, si riceverà una notifica e sarà possibile scegliere se attivare le singole macro firmate o considerare attendibile l autore. Tutte le macro senza firma sono disattivate senza notifica. Attiva tutte le macro: tutte le macro vengono eseguite senza che ne siate avvisati. È un impostazione rischiosa e sconsigliamo di adottarla. È consigliata l'opzione predefinita Disattiva tutte le macro con notifica. In questo modo, quando aprite un file contenente codice VBA, Excel vi avvisa che il file contiene contenuto potenzialmente pericoloso e che questo è stato bloccato. Se volete attivare il codice VBA per poterlo utilizzare, premete il pulsante Opzioni. Excel vi mostrerà la finestra Opzioni di protezione e selezioneremo Attiva il contenuto. Come detto in precedenza, non avendo noi conoscenze del codice Visual Basic for Application dobbiamo limitarci a registrare una macro per poterla creare e quindi utilizzare. Apriamo il file allegato Elenco_Nomi.xls; contiene un piccolo elenco di nominativi. Ipotizziamo che questo file debba venire molto spesso aggiornato con l aggiunta di nuovi nomi e ordinato poi alfabeticamente per cognome. L ordinamento è un operazione semplice ma ripetitiva, doverlo fare spesso Figura 3 - Registra Macro può diventare noioso. Possiamo registrare una macro che esegua l ordine alfabetico con un semplice clic su un pulsante. Portiamoci sulla scheda Sviluppo, nel gruppo Codice e clicchiamo Registra Macro (vedi Figura 3): Figura 4 - Finestra registra macro Appare una finestra (vedi Figura 4) che chiede il nome della macro, un eventuale combinazione di tasti da associarle e dove vogliamo memorizzare la macro. www.lezione-online.it 4
Come Nome macro scriveremo Ordina come nell esempio. Teniamo presente che i nomi delle macro non possono contenere spazi. Non associamo nessun tasto di scelta rapida e scegliamo di memorizzare la macro in Questa cartella di lavoro, in modo che sia disponibile solo in questo file di Excel e non in tutto il programma. Nella Descrizione possiamo scrivere un testo libero che ci faccia da promemoria. Una volta premuto Ok parte la registrazione della macro: ogni operazione viene registrata da Excel e quindi è necessario stare molto attenti e non commettere alcun errore. I passaggi da registrare sono i seguenti: Selezionare tutto il foglio Excel cliccando nel quadrato in alto a sinistra fra la colonna A e la riga 1 (vedi Figura 5): in questo modo verranno messi in ordine anche i nominativi inseriti in un secondo momento. Figura 5 - Pulsante Seleziona Tutto. Andare nella scheda Home su Ordina e Filtra, Ordinamento personalizzato: ordiniamo per cognome, in base a Valori, dalla A alla Z. Deselezioniamo la tabella cliccando in una qualsiasi cella e premiamo sulla tastiera Ctrl+Fine affinché il cursore si posizioni nella prima cella libera della tabella. Torniamo sulla scheda Sviluppo e premiamo Interrompi registrazione. La macro è ora registrata. Dobbiamo Figura 6 La finestra Macro controllare che funzioni. Dato che i dati sono appena stati messi in ordine alfabetico dobbiamo aggiungere un nome qualsiasi nella prima riga libera (evitate di mettere un cognome che inizia con la Z, altrimenti rimarrà all ultimo posto!) ed andare ancora nella scheda Sviluppo, gruppo Codice, pulsante Macro. Appare la finestra mostrata in Figura 6. www.lezione-online.it 5
Cliccando sul pulsante Esegui la macro viene eseguita e la tabella viene messa in ordine alfabetico per cognome con un semplice clic. Sempre nella finestra mostrata in Figura 6 possiamo eliminare la macro creata (pulsante Elimina) o modificarla (pulsante Modifica). Clicchiamo su quest ultimo sì da vedere il codice VBA che è stato scritto da Excel durante la nostra registrazione (vedi Figura 7): Figura 7 Il codice VBA della nostra macro "ordina". www.lezione-online.it 6