Hai bisogno di rendere più efficienti i tuoi fogli Excel perché ci spendi ore di lavoro? Puoi automatizzarli. Puoi usare gli strumenti più avanzati di Excel, sempre più dinamici ed evoluti, oppure puoi usare le macro. Se non conosci il vba, puoi creare le routine col registratore di macro, o puoi usare macro create da altri. In questo post vediamo come si automatizza Excel con macro realizzate da altri.
Automatizza Excel con le macro di altri
Quando iniziamo a interessarci di automazione del foglio di calcolo, ci scontriamo in breve con un linguaggio, il vba (visual basic for application), e se non abbiamo familiarità con i linguaggi di programmazione e neppure con l’inglese, questo ci può apparire complesso, se non incomprensibile.
Quindi di solito ripieghiamo sul registratore di macro, un vecchio strumento di office che traduce le nostre attività su Excel in codice che possiamo usare per l’automazione. Quindi possiamo creare automatismi senza studiare il vba. Vero, ma se iniziamo a usarlo, scopriamo in fretta che il registratore e le macro registrate sono limitate. Per trarne il meglio dovresti conoscere bene il foglio di calcolo e le basi del vba.
Le macro registrate sono comunque un inizio e migliorano i fogli, ma l’automazione che producono è spesso insufficiente. Se ci capita di provare strumenti automatizzati con macro sviluppate ce ne rendiamo conto all’istante. Così ti ritrovi a leggere guide sul web (come questa, questa, questa o questa) oppure libri sull’argomento e ti fai una prima idea del vba e dell’automazione dei fogli Excel.
E scopri che in realtà il vba è il vecchio linguaggio a oggetti anni 90 di casa microsoft e che non è complesso, ma per studiarlo e impratichirti ti servono decine di ore di lavoro. Se lavori con Excel per molto tempo, diciamo almeno un’ora al giorno, allora vale la pena studiarlo, se invece non è così allora le alternative sono due:
- usare al meglio il registratore di macro, ma il meglio richiede di conoscere bene Excel e i suoi strumenti,
- imparare il minimo indispensabile del vba e usare macro altrui.
Le macro altrui
Sono le macro prodotte e condivise da chi studia o conosce il vba. L’ideale sarebbe che un tuo conoscente, parente, amico o collega sviluppasse per te le macro che ti servono, ma se sei fortunato tra questi puoi trovare chi ha già cercato e raccolto routine per l’automazione di Excel. Quindi non esitare a chiedere, a far circolare la voce, perché ti farà risparmiare il tempo della ricerca sul web e dell’analisi di quello che trovi. E probabilmente potrà aiutarti in altri modi.
Se non trovi o non conosci nessuno a portata di mano, devi rivolgerti al web dove puoi trovare le macro nei siti sull’argomento, come testo nei post, in file scaricabili, o installate in fogli Excel, oppure nei forum dedicati, nelle guide, o nei libri che compri.
Nella maggior parte dei casi sono macro didattiche poco utili o flessibili, o macro per usi specifici in ambiti limitati, che richiedono una buona conoscenza del vba per adattarle ai propri bisogni.
Talvolta però si trovano macro che puoi usare per l’automazione dei tuoi fogli, perché richiedono interventi minimi sul codice o sono concepite per essere flessibili. Come per esempio le macro che ho condiviso con la comunità di Excel professionale, didattiche e dimostrative, ma allo stesso tempo piuttosto flessibili.
Quindi se vuoi automatizzare i tuoi fogli con le macro devi cercare queste tipologie di macro:
- quelle che richiedono interventi minimi sul codice,
- le macro che sono flessibili, cioè possono essere usate in ambiti diversi o estesi.
Dove cercare le macro
Cerca siti, forum e guide dedicate all’argomento. Puoi farlo naturalmente attraverso i motori di ricerca, usando parole chiave come: “macro”, “vba”, “Excel”, “guide”, “forum” e combinazioni di esse.
Dopo aver identificato i siti più interessanti, ti consiglio di fare ricerche specifiche per i tuoi bisogni, usando parole chiave relative alle funzioni delle macro che stai cercando e mettendo sempre prima “vba” o “vba Excel”. Come ti renderai conto in fretta, in italiano trovi poco, quindi concentrati soprattutto sui siti in lingua inglese.
Ti invito a partire dalle fonti elencate nella pagina “Risorse utili per imparare Excel”.
Quando trovi le macro sotto forma di testo su siti e forum, predisponi un foglio Excel, apri il vbe e copia il codice nei moduli aggiungendo spiegazioni e link dell’origine. Quando invece le trovi scaricabili, importale all’interno del foglio excel. Naturalmente devono essere file .bas, la macro sono codice scritto, quindi non lanciare file eseguibili che possono installare virus o troiani.
Quando le macro sono installate in fogli excel automatizzati che hai scaricato, puoi copiarle direttamente in un modulo del tuo foglio “libreria”, aggiungendo l’origine e le spiegazioni sul funzionamento. Infine quando le trovi scritte nelle guide o nei libri, se sono digitali copia il testo, invece se sono cartacee, devi trascriverle tu. Naturalmente se ne vale la pena.
E questa dovrebbe essere la parola chiave della tua ricerca: “se ne vale la pena”. Non perdere tempo a raccogliere qualcosa che non ti può essere utile, quindi prima di copiare o scaricare cerca di comprendere uso e funzione della macro. Questo anche perché le macro che scarichi dovrai esaminarle, capirle e verificarle prima dell’uso.
Imparare le basi del vba
Prima di lanciarti a scaricare macro dovresti però apprendere le basi minime del vba e dell’automazione per poter:
- predisporre Excel per l’automazione,
- usare il visual basic editor (editor vba), l’ambiente di sviluppo,
- sapere come importare ed esportare le macro nei moduli dei fogli excel,
- conoscere i concetti di base di programmazione a oggetti,
- riconoscere dichiarazioni, comandi, funzionalità e strutture del codice,
- lanciare una macro,
- installare i controlli per lanciare le macro.
Quindi per iniziare ti invito a:
- guardare questo minitutorial sulle impostazioni da fare su Excel per poter registrare, sviluppare, installare, gestire e usare macro nei nostri fogli Excel,
- leggere questa guida sulle macro e l’automazione,
- guardare questo tutorial sull’editor vba, dove trovi una presentazione dell’ambiente di sviluppo e degli strumenti,
- leggere questa guida sul visual basic editor,
- leggere con attenzione questa guida al vba e poi rileggerla,
- guardare questo tutorial sul registratore di macro, per prendere familiarità con questo strumento e con il codice,
- leggere questa guida sul registratore di macro, a completamento del tutorial precedente,
- guardare questo tutorial che mostra come si crea una scheda personalizzata della barra multifunzione,
- e guardare anche questo tutorial che mostra anche come si installano controlli sulla pagina.
Questo dovrebbe darti le competenze minime per poter iniziare a usare l’editor vba, maneggiare macro, installare controlli, registrare macro e gestire moduli e routine.
Cosa sono le macro
Come abbiamo ripetuto in più occasioni, il termine “macro” indica una procedura, cioè un insieme di comandi e istruzioni svolti durante l’esecuzione di un programma. Le macro permettono di realizzare una serie di attività con un singolo comando, quello dell’esecuzione della macro.
In particolare una macro può svolgere attività ripetitive e far risparmiare tempo all’operatore o diventare un nuovo strumento, funzione e comando da aggiungere a quelli preesistenti del foglio di calcolo.
Le macro sono testo scritto, codice, istruzioni che vengono eseguite da Excel secondo regole precise. Le macro possono essere scritte dallo sviluppatore, o create attraverso il registratore di macro.
Per approfondire l’argomento “macro” ti invito a leggere la guida relativa, mentre per scoprire di più sul registratore ti propongo la questa guida.
Come gestire le macro
Di solito le macro vengono sviluppate e registrate nei moduli del foglio Excel, accessibili tramite il Vbe, il visual basic editor, l’ambiente di sviluppo integrato in Excel che offre di un set di strumenti pensati appositamente per lo sviluppo e la gestione delle macro.
Per accedere al Vbe si preme Alt+F11, è il modo più semplice, o si clicca sul comando “Visual Basic” del menù “Sviluppo” della barra multifunzione. L’editor è composto da finestre, menu e barre dei comandi, tra cui la finestra dei progetti, che contiene l’elenco di tutti i file Excel aperti e gli oggetti che li compongono, e la finestra del codice che mostra il contenuto dei moduli.
I moduli sono appostiti contenitori che puoi vedere come pagine vuote in cui scrivi il codice degli automatismi. I moduli sono di diverso tipo e si distinguono in:
- Moduli standard
- Moduli di classe
- ThisWorkbook (associato all’intero foglio di lavoro)
- Moduli Sheet (associati alle pagine del foglio di lavoro)
- Moduli Form (associati alle maschere)
I moduli associati servono per gestire codice legato specificatamente all’oggetto in questione, mentre di solito le macro vengono inserite in moduli stardard, visibili nella finestra progetti come cartelle di nome Modulo1, Modulo2, eccetera.
I moduli possono essere inseriti:
- dal menu Inserisci cliccando su “Modulo”;
- dalla finestra Progetti, cliccando con il pulsante destro per aprire il menu contestuale, poi dal menu a tendina “Inserisci” cliccando sul comando “Modulo”.
Se il modulo è vuoto vedrai una pagina bianca, altrimenti vedrai il codice scritto in linguaggio vba, raccolto in macro, strutture che iniziano con il comando “Sub NOMEMACRO()” e finisco con “End Sub” (o Function NOMEFUNZIONE() e End Funcion).
Comprendi le macro e automatizza Excel
Excel è un ambiente di lavoro composto da oggetti e il linguaggio Vba essenzialmente lavora su questi oggetti. Per esempio, oggetti sono il foglio di lavoro, le pagine, le tabelle, le celle, i grafici, eccetera.
Gli oggetti in Excel possono contenere o essere composti da altri oggetti, possiedono numerose caratteristiche o proprietà e possono realizzare attività grazie a un set di comandi chiamate metodi.
Le proprietà rappresentano gli attributi e le caratteristiche che definiscono l’oggetto e lo distinguono dagli altri oggetti simili (es: nome, grandezza del font, colore della cella, altezza della riga, ecc). Ogni oggetto ha una lista di proprietà che lo descrivono.
I metodi sono le azioni che l’oggetto può compiere, come per esempio l’apertura di un foglio, l’attivazione di una pagina, eccetera. Ogni oggetto ha una lista di metodi che lo riguardano.
Nella maggior parte dei casi gli oggetti appartengono a gruppi di oggetti con le stesse caratteristiche, per esempio la pagina “Report” fa parte dell’insieme delle pagine del foglio di lavoro. I singoli elementi di un insieme possono essere distinguibili e richiamabili usando il nome specifico, per esempio: “Workbooks(“Budget”) è il foglio excel con nome “Budget”.
La gerarchia definisce il rapporto tra gli oggetti, cioè a quale oggetto più “grande” appartengono o di cui fanno parte, quali oggetti contengono, o li compongono. Puoi vedere la gerarchia come il rapporto dei diversi elementi di una matrioska. “Application” è l’oggetto più grande e di più alto livello che contiene tutti gli altri.
Volendo riassumere con un esempio: una pagina di excel (worksheet) è un oggetto parte di un insieme di pagine (worksheets), contenute nel foglio di lavoro (workbook), e contiene oggetti come intervalli di celle (range), tabelle (listobject, pivottables, ecc) e grafici (chartobjects). Tutti questi oggetti hanno una lista di proprietà, per esempio il valore delle celle (value), o il nome delle pagine (name), e una lista di metodi con cui è possibile agire sugli oggetti, per esempio aggiungere una pagina (add) o copiarla (copy).
Cenni di Vba
Il codice che “agisce” sugli oggetti viene scritto come dichiarazioni che descrivono l’oggetto, o l’insieme di oggetti, e la gerarchia relativa, di cui si modifica o richiama una proprietà, o su cui si esercita un metodo. In questo modo:
- Insieme(OGGETTO).Insieme(OGGETTO).PROPRIETA’
- Insieme(OGGETTO).Insieme(OGGETTO).METODO
Per esempio: “Application.Workbooks(“Prod”).Worksheets(“Dati”).Copy”.
In realtà il vba permette di “accorciare” le dichiarazioni, omettendo gli oggetti se il codice si riferisce a quelli attivi. Per esempio in questo modo:
- Workbooks(“Prod”).Worksheets(“Dati”).Range(“C1:C10”).Copy
- Worksheets(“Dati”).Range(“C1:C10”).Copy
- Range(“C1:C10”).Copy
Oltre a oggetti, proprietà e metodi, il linguaggio vba è composto da funzioni con cui si può controllare l’esecuzione del codice (es: cicli per ripetere il codice), con cui si possono richiamare strumenti appositi (es: le finestre di dialogo con cui interagire con l’operatore) e altre funzioni specifiche.
Le funzioni hanno un nome e regole precise che devono essere rispettate, per esempio: una funzione che ripete il codice, come il ciclo For/Next, richiede una variabile come contatore e l’indicazione di un inizio e una fine. Queste funzioni sono strumenti fondamentali per scrivere il codice.
Se vuoi imparare a intervenire sul codice devi imparare il linguaggio vba. Come? Studio, memorizzazione, esercizio ed esperienza.
Come installare gli automatismi nel foglio
Le macro sono testo in codice scritto in linguaggio vba e si inseriscono nei moduli:
- scrivendo il codice,
- copiando il codice da un modulo all’altro,
- copiando il codice da un documento esterno,
- importando i moduli con le macro dalle cartelle in cui li abbiamo in precedenza salvati,
- in automatico usando il registratore di macro.
Per copiare il codice, che in fondo è un testo, selezionalo, premi CTRL+C per copiarlo e CTRL+V per incollarlo. Invece se vuoi importare un modulo usa il comando “importa file” dal menu contestuale richiamabile cliccando con il pulsante destro del mouse su un progetto o un oggetto, o usa il comando omonimo del menù “File”. Per esportare moduli puoi usare il comando “Esporta file” sempre dal menu contestuale del pulsante destro, o con il comando omonimo del menù “File”.
Quindi per installare una macro in un foglio excel devi copiarla o importarla in un modulo del foglio e garantire che questa abbia un nome univoco e, consiglio, parlante. Una volta che la macro è nel foglio puoi installare un controllo e collegarlo alla macro, con il controllo potrai lanciare l’esecuzione della macro.
Come si testano le macro
Dopo aver capito cosa fa una macro, per esempio leggendo con attenzione il post in cui è contenta e da cui l’hai copiata, è necessario verificare se funziona e come funziona, se fa quello indicato e se puoi usarla nel tuo foglio di lavoro.
Quindi una volta installata la macro in un modulo del foglio devi testarla.
Per eseguire la macro da Excel ci sono modi e strumenti diversi, in fase di test quello più usato è la finestra “Macro”, strumento di Excel per la gestione delle macro, richiamabile premendo ALT+F8. Quindi premi Alt+F8, scegli la macro dalla lista e clicca sul pulsante “Esegui”, poi verifica i risultati.
In realtà la macro può essere lanciata anche da dentro l’editor Vba, l’ambiente di sviluppo, con il comando “Esegui” o più semplicemente premendo F5, naturalmente dopo aver selezionato la macro spostando il cursore nel codice. La macro verrà eseguita dall’inizio alla fine, a meno della presenza di finestre di dialogo che attenderanno il tuo input prima di proseguire, o di comandi di pausa inseriti nel codice o imposti da te tramite tastiera (premi Ctrl+Pausa per interrompere l’esecuzione).
Esiste anche un modo alternativo, l’esecuzione passo passo della macro, concepito per il debugging, cioè la ricerca e la rimozione degli errori, che ti permette di eseguire un’istruzione alla volta, premendo ripetutamente F8. Ricorda che la macro agirà sempre sul foglio Excel attivo, anche se non lo vedi perché sei nel Vbe. Quindi presta attenzione ai fogli aperti e a qual è l’ultimo che hai selezionato prima di passare all’editor vba.
Chiarito questo, salva il foglio e testa la macro. Osserva con attenzione quello che fa e i risultati che ottieni.
Se usi macro altrui e non conosci il vba è probabile che spesso il risultato sia il blocco dell’esecuzione e l’apparizione di una finestra che ti avverte della comparsa di un errore, causato dall’impossibilità da parte di Excel di eseguire una precisa istruzione, per cause che possono essere molteplici.
Per risolvere questi errori devi conoscere il vba e il debugging, quindi a meno che tu non sia intenzionato a spendere tempo per imparare, sarai costretto a scartare la macro. Ma prima di farlo ti invito a leggere con attenzione istruzioni e spiegazioni dal sito di origine per capire se hai predisposto tutte le condizioni iniziali necessarie per il funzionamento della macro.
Per esempio, se una macro deve lavorare su una pagina che contiene una tabella con dei dati, devi preparare una pagina con una tabella ed eventualmente posizionarla e chiamarla nel modo giusto. Quindi non abbandonare una macro al primo errore, ma cerca di capire se hai usato l’automatismo nel modo corretto.
Come lavorare sulle macro
Se invece vuoi intervenire sulla macro per cercare di farla funzionare, per adattarla al tuo foglio, per migliorarla e così via, allora diciamo subito che non puoi farlo senza conoscere il vba. Per modificare il codice scritto devi capire il linguaggio e conoscerlo quel che basta per scriverlo. Così come se vuoi interagire con una persona all’estero devi parlare la sua lingua quanto basta per capire quello che dice e per farti capire da lui.
Detto questo ecco alcune informazioni base da cui iniziare:
- come già detto le macro sono delimitate da “Sub NOMEMACRO()” ed “End sub”.
- le righe con testo verde sono commenti e non viene eseguito (per trasformare una riga in un commento metti una apostrofo (‘) all’inizio della riga),
- le stringhe di termini in inglese separati da punti (.) sono dichiarazioni di metodi e proprietà di oggetto o insiemi di oggetti,
- ciò che segue le dichiarazioni a destra tra parentesi () sono i parametri relativi ai metodi, di solito separati da virgole (,),
- oppure se non ci sono parentesi, ma vedi qualcosa tipo “Parametro:=Valore” a partire da uno spazio a destra di una dichiarazione o un comando/funzione vba, allora è sempre un parametro, ma indicato in modo diverso,
- dove c’è un uguale c’è l’assegnazione di un valore a una proprietà o a una variabile (oggetto.name = “NOME”, VARIABILE = 3),
- se in fondo a una riga vedi un sottolineato (_) dopo almeno uno spazio allora l’istruzione prosegue nella riga successiva,
- Exit Sub e End sono comandi di arresto del codice,
- il testo in blu evidenzia comandi importanti del vba (es: for/next, exit sub, dim, sub, end, eccetera),
- i comandi del vba più usati sono: For/Next, MsgBox e If/Then/End if
- For/Next crea una struttura che ripete il codice tra le righe che cominciano con For e Next,
- Msgbox fa comparire una finestra configurabile per comunicare con l’operatore, se viene preceduto da una variabile e un uguale e i parametri sono fra parantesi, allora la finestra dei messaggi intercetta conferme da parte dell’operatore,
- If/Then/End if sono gruppi di comandi condizionali che creano strutture che eseguono il codice in esse contenuto solo se un controllo da erisultato positivo.
Tutto questo però è solo un inizio e non basta per revisionare le macro, non senza una conoscenza adeguata del linguaggio.
Come installare i controlli nei fogli
Per usare e quindi lanciare le macro usiamo controlli dedicati, cioè strumenti appositi che ordinano l’esecuzione di una specifica routine a Excel. Per farlo abbiamo diverse alternative, ma di solito il controllo è un pulsante posizionato in una pagina del foglio di lavoro.
Possiamo usare oggetti speciali, controlli specifici che possono essere aggiunti al foglio tramite il comando “Inserisci” della scheda “Sviluppo” della barra multifunzione, oppure possiamo usare forme grafiche, veloci e facili da realizzare, che possiamo trasformare in pulsanti collegando ad esse una macro. Di solito questi pulsanti vengono installati nelle pagine eventualmente raccolti in pannelli di comando. Per vedere come si installa un pulsante ti invito a guardare questo tutorial.
Naturalmente ci sono numerose alternative e ti invito ad approfondire in questa guida.
Conclusioni
Questo lungo post non ha la pretesa di insegnarti al volo come si automatizza excel con macro altrui, ma piuttosto vuole orientarti e consigliarti nel caso tu voglia imparare di più sull’automazione, o voglia provare a usare macro non tue piuttosto che macro registrate.
Come ho ripetuto più volte, la realtà è che l’automazione richiede una certa competenza con gli strumenti e con il linguaggio vba. Questo significa investire tempo nello studio e nella pratica, cosa che ti consiglio se spendi molto tempo su Excel o per un tuo interesse personale.
Ricorda che automazione di Excel significa usare procedure automatiche che eseguono attività al tuo posto, ma perché raggiungano i risultati attesi devono essere scritte in modo corretto nel linguaggio che Excel comprende.
Grazie dell’attenzione e a presto ;D
Ti piacerebbe realizzare tu stesso gli automatismi per i tuoi fogli Excel?
Questo corso ti guida da zero all’automazione dei tuoi fogli:
Grazie dell’attenzione e a presto ;D
PS: Se questo post ti è piaciuto o ti è stato utile, condividilo con gli amici sui social.
Puoi farlo attraverso i pulsanti qui di seguito.