Vuoi sapere cos’è una macro? Come registrare ed eseguire una macro? Come associare una macro ad un pulsante? In questo tutorial sulle macro di Excel troverai tutte le risposte!
Della serie ‘come non creare troppe aspettative nel lettore’ 🙂
1. Che cos’è una macro
La macro è uno strumento avanzato di Excel che consente di automatizzare e velocizzare attività che svolgiamo periodicamente.
Una macro ci consente di registrare una serie di azioni che compiamo ripetutamente in Excel, dalla formattazione ai calcoli, per poi far eseguire da Excel stesso quelle stesse operazioni tutte le volte in cui dovremo ripetere quelle stesse identiche azioni.
Facciamo un esempio. Ogni lunedì mattina ci arriva un file con un elenco prodotti. Il file ha sempre la stessa struttura. E noi dobbiamo svolgere su quel file 30 operazioni: selezioniamo ed eliminiamo righe, cambiamo l’ordine delle colonne, cambiamo il formato di alcune celle, applichiamo dei filtri, inseriamo delle funzioni…
Vogliamo ad esempio partire da questo file:
Ed ottenere un risultato finale come questo:
Le nostre 30 operazioni, pur semplici, ci portano via 15/20 minuti ogni volta che ci arriva il file del fornitore.
Come possiamo risparmiare tempo con le macro? Noi possiamo svolgere le nostre 30 operazioni una sola volta e, mentre le svolgiamo, possiamo “registrarle” in una macro. Dalla volta successiva a noi basterà eseguire la macro precedentemente registrata e far così svolgere in pochi secondi ad Excel tutte le 30 operazioni ripetitive.
Nei prossimi paragrafi di questo tutorial sulle macro partiremo da zero. Vedremo come si registra una macro, come si esegue, come la si associa ad un pulsante. Negli aggiornamenti che seguiranno ti mostrerò anche degli esempi pratici, ispirati a quello che i miei corsisti mi chiedono più frequentemente.
2. Registrare una macro
Registrare una macro Excel significa andare a “salvare” una serie di azioni per poterle poi rieseguire in un secondo momento.
Questi i punti che dobbiamo seguire per svolgere una macro:
A Scheda “Visualizza”, clic su Macro e comando Registra macro
Inseriamo le informazioni nella finestra “Registra macro”:
B Nome macro: specifichiamo un nome che richiami il motivo per cui stiamo creando la macro
C Tasto di scelta rapida: possiamo associare l’esecuzione della macro all’utilizzo di una combinazione di tasti, opportunità a mio avviso poco ragionevole
D Memorizza macro in: “Questa cartella di lavoro” significa che associamo la macro al file in cui stiamo lavorando, “Cartella macro personale” vuol dire che stiamo per registrare la macro in un contenitore di macro accessibile in futuro da tutti i file Excel aperti dall’utente che sta creando la macro
E Descrizione: un commento che descriva lo scopo della macro, non farà parte del codice che verrà eseguito dalla macro
F Eseguiamo tutte le attività che vogliamo registrare nella macro (come, ad esempio, allargare colonne, selezionare ed eliminare righe, impostare un filtro)
G Interrompiamo la registrazione: su Visualizza / Macro ora il pulsante “Registra macro…” è stato sostituito da “Interrompi registrazione” (oppure utilizziamo il quadratino di STOP posto in basso a sinistra nella barra di stato)
3. Salvare il file con la macro
Quando proviamo a salvare il nostro file ci viene mostrata questa finestra.
Excel ci avvisa che il formato standard (.xlsx) non ci permette di salvare la macro. Dobbiamo rispondere No. Se rispondessimo Sì manterremmo il formato attuale (.xlsx) e perderemmo la macro registrata. Dopo aver cliccato sul pulsante No ci viene proposta la finestra del “Salva con nome”. Qui dobbiamo cambiare il formato scegliendo “Cartella di lavoro con attivazione macro”.
Il formato sarà quindi “.xlsm” invece che lo standard “.xlsx”.
La necessità di utilizzare un formato specifico per le macro è stato introdotto per aumentare il livello di sicurezza dei file di Excel. Come approfondiremo nel corso di questo tutorial sulle macro, è possibile inserire del codice visual basic all’interno delle macro. Con il codice è possibile teoricamente scrivere anche istruzioni volte a danneggiare chi le utilizza: eliminazione di contenuti, modifiche alla struttura dei file, ecc..
Con l’estensione “.xls” era ed è possibile salvare i file con le macro create. Se riceviamo un file “.xls” quindi non possiamo sapere a priori se nel file c’è o meno una macro. Se riceviamo un file “.xlsx” sappiamo invece che nel file non ci sono macro.
4. Eseguire una macro
Eseguire una macro significa far compiere ad Excel i comandi che abbiamo registrato nella macro.
ATTENZIONE: l’esecuzione della macro andrà ad apportare modifiche che non potremo annullare con il classico comando Annulla (o CTRL+Z). Non potremo quindi “tornare indietro” come facciamo quando effettuiamo le classiche attività in Excel. L’unico modo per tornare alla situazione pre-macro sarà quello di chiudere il file senza salvare.
Buona norma è, quindi, cominciare a fare “esperimenti” con le macro su copie dei nostri file.
Per eseguire una macro i passaggi sono i seguenti:
A Scheda “Visualizza”, clic su Macro e comando Visualizza macro
B In questa scheda vengono mostrate le macro create in tutti i file al momento Tutte le cartelle di lavoro aperte”
C Clic sul nome della macro da eseguire
D Clic sul pulsante “Esegui”
E La macro eseguirà tutte le istruzioni che avevamo registrato.
Nelle versioni 2007 e successive l’esecuzione della macro, così come la sua registrazione, può essere avviata anche dalla scheda Sviluppo della barra multifunzione.
Non vedi la scheda Sviluppo nel tuo Excel? Nel prossimo paragrafo vediamo come visualizzarla.
La scheda Sviluppo ci tornerà utile anche nel paragrafo “Associare una macro ad un pulsante”.
5. Come visualizzare la scheda Sviluppo
Se tra le schede della barra multifunzione non vedi la scheda Sviluppo i passaggi per visualizzarla sono i seguenti:
A Tasto destro su un qualsiasi punto della barra multifunzione
B Clic su “Personalizza barra multifunzione…”
C Nell’elenco di destra, che mostra le schede di Excel, metti la spunta sulla voce Sviluppo
Nella scheda Sviluppo trovi una serie di comandi che servono per lavorare con le macro e con altri strumenti avanzati utili.
Nella parte sinistra trovi il gruppo Codice, contenente i comandi per visualizzare l’elenco delle macro disponibili (pulsante Macro), quello per registrare le macro (Registra macro) e quello per visualizzare l’ambiente VBA (il primo, il pulsante Visual Basic).
Cos’è l’ambiente VBA? Te ne parlo in uno dei prossimi paragrafi, per ora ti anticipo, o ti ricordo, che VBA sta per Visual Basic for Applications. Visual Basic è un noto linguaggio di programmazione, ed è il linguaggio con cui Excel “traduce” le azioni che noi compiamo in fase di registrazione della macro. La A di VBA sta per “for Applications”, dicitura che fa capire che il linguaggio usato da Excel (e da gli altri applicativi Office) è una particolare declinazione del linguaggio Visual Basic, adattato e personalizzato per Excel.
Ti mostrerò esempi di codice per poter capire meglio cosa vuol dire che Excel “traduce” in linguaggio VBA le azioni che registriamo.
Per il momento restiamo nella barra Sviluppo appena resa visibile perché in essa si trova lo strumento che ci permette di inserire un pulsante che cliccato andrà ad eseguire una macro.
6. Associare una macro ad un pulsante
Ora vogliamo inserire un bottone che, premuto, ci vada ad avviare una delle macro da noi precedentemente create. È quindi un’alternativa all’esecuzione dalla macro dal comando Visualizza macro, visto nel paragrafo Eseguire una macro.
Per poter lanciare una macro con un pulsante i passaggi da svolgere sono i seguenti:
A Nella scheda Sviluppo si clicca sulla voce Inserisci
B Si clicca sul primo controllo, il Pulsante
C Ora che il puntatore è diventato una croce sottile possiamo tener premuto il tasto sinistro e definire così la forma del pulsante
D Una volta rilasciato il tasto sinistro si apre una finestra che chiede di scegliere quale macro vogliamo che venga eseguita al clic sul bottone
E Scegliamo la macro da associare e diamo Ok
F Clicchiamo ora alla scritta provvisoria che è stata data al pulsante, poi clicchiamo su una qualsiasi cella.
Ad ogni clic sul pulsante la nostra macro verrà eseguita!
Ciao grazie mille per aver creato questo tutorial. Le operazioni di registrazioni macro di solito vanno bene per un’unico foglio. Ma se devo fare l’operazione su più fogli e questi possono avere nomi diversi o spostati di ordine allora bisogna usare il codice VBA che permette di spostarsi tra i fogli in base al nome o in base alla posizione assoluta.
In poco tempo ho fatto cose impensabili….
Grazie a te Fabio. Hai ragione, l’utilizzo di più fogli può creare qualche intoppo nell’utilizzo della macro. Come dici tu bisogna personalizzare il codice VBA. La mi intenzione è quella di approfondire sempre più questo tutorial sulle macro ed inserire anche esempi di codice per ovviare a problematiche come quella che tu segnali.
Ciao Samuele, innanzitutto ti volevo fare i complimenti perché grazie al tuo sito ho risolto un sacco di problemi, spieghi davvero benissimo… io avrei una domanda.. Una volta al giorno mi arrivano 25 report, tutti con lo stesso numero di colonne ma con diverso numero di righe.. io vorrei creare una macro che mi consenta di copiare i dati presenti in tutti questi report in un unico foglio excel, cosi da non doverlo fare manualmente.. mi potresti aiutare per favore?
Grazie mille in anticipo
grazie ero spaventato dalle macro invece è veramente semplice e mi risparmia molto tempo, grazie
Mi fa piacere Francesco. A breve inserirò altri contenuti sulle macro…
Federico ti chiedo se i 25 report sono su file diversi o su fogli diversi…
Grazie per la spiegazione Federico. Ho intenzione di fare un articolo sulla problematica che mi segnali. Diverse persone hanno infatti esigenze simili alla tua. Nel frattempo, posso inviarti un file via mail? L’indirizzo è quello che hai scritto? Se no scrivimelo cortesemente su samuele@amicoexcel.it
Una domanda: ho creato una macro in cartella personal, ma quando apro un secondo file mi dice che personal è già in uso e posso aprire in sola lettira. Cosa devo fare?
precisazione: Ciao Samuele, parlavo naturalmente di Excel 2003 su Window seven.
Grazie
Bruno,
tra le risorse web relative al tuo problema ti segnalo questa:
https://excelribbon.tips.net/T010547_Error_Opening_Second_Workbook.html
Non riesco al momento a provare sulla vecchia versione 2003 ma mi pare che il problema possa dipendere dalla modalità con cui viene aperto un secondo file di Excel. Se lo si apre da gestione risorse Excel apre un’altra istanza e restituisce l’errore.
Viene anche suggerito un modo per risolvere la cosa agendo sulle impostazioni avanzate di Excel.
Se riesci a provare sulla tua versione fammi cortesemente sapere se funziona.
No caro Samuel, ti ringrazio del prezioso suggerimento, ma nella versione 2003 l’opzione “avanzata” della scheda Generale non riporta la stessa finestra citata sul web.
Grazie comunque, perché funziona aprendo il file da excel/apri.
Buonasera Samuel e complimenti, seguendo i tuoi tutorial sono riuscito a fare molte cose e ad aumentare la mia produttività lavorativa in ufficio, volevo chiederti una cosa che non ho trovato, io ho due file excell che generano un pseudo DDT ( è una cosa interna ) chiaramente entrambe hanno un num progressivo che incrementa con una macro applicata ad un tasto, è possibile applicare la stessa macro ad entrambe i tasti in modo da incrementare il num su entrambe i file, per evitare di dovermi ricordare l’ultimo num e applicarlo all’altro file.
Grazie anticipatamente
Angelo
Ciao Angelo. Direi di sì. Devi però lavorare sul codice della macro, aggiungendo le istruzioni necessarie. Per qualche indicazione in più dovrei avere i 2 file e leggere il codice della tua macro. Dovrebbe essere una cosa veloce, se non lo fosse ti faccio eventualmente sapere tempi e costi prima di metterci mano. Se vuoi inviami i 2 file anche solo con la colonna da incrementare. Abbi poi un attimo di pazienza perché in questo periodo di tempo ne ho davvero pochissimo…
Salve a tutti, chiedo gentilmente l’aiuto di qualche moderatore che sappia risolvere il mio problema.In realtà in un file ho una tabella dove nella colonna B4 ci sono i comuni della provincia di caseta mentre nella colonna C4 c’è un codice identificativo ID . Accanto a questa tabella c’è la mappa della provincia di caserta dove ogni comune viene identificato con un numeretto posto su di esso. La domanda è: cliccando su un comune nella tabella vorrei che si colorasse di un colore a scelta sulla mappa. Grazie mille a chi mi può risolvere questo problema. Se, serve allego anche il file. Faccio presente che non è un grafico ma una foto presa dal web e da me numerata per singolo comune. Grazie