Macro di Excel: come ottimizzare i vostri processi di lavoro con il popolare metodo di calcolo tabellare

Chi lavora regolarmente con i programmi di elaborazione di testi, sistemi di database oppure applicazioni per il calcolo delle tabelle, sa bene quanto può essere impegnativo dover inserire ogni volta sempre le stesse identiche istruzioni. In particolar modo l’esecuzione dei programmi a più passaggi mette presto a dura prova la pazienza degli utenti. Ma per fortuna ci sono le cosiddette macro a venire in aiuto (dall’inglese macro, “instruction”: procedura), le quali registrano una successione di istruzioni così che possano venire applicate automaticamente da chi utilizza il software in un determinato momento.

Nonostante le macro siano scritte in un linguaggio di programmazione, solitamente non sono indispensabili conoscenze in questo ambito, poiché molti programmi tra cui anche Excel possono registrare semplici macro, dando così assistenza durante lo sviluppo. Per Excel, il software di calcolo tabellare di Microsoft, le macro sono una delle feature più importanti.

Cos’è una macro su Excel?

Microsoft Excel fa parte delle soluzioni più richieste per l’elaborazione, l’analisi e la presentazione di dati. Gli utenti di Windows lavorano da anni con il calcolo tabellare, che è parte della suite di Microsoft Office, ad esempio per scrivere il bilancio oppure per creare un calendario personale. Anche all’interno delle aziende si ricorre ad Excel: grazie al software, infatti, è possibile realizzare piani di progetti, piani orari, oppure piani di bilancio, ma anche rappresentazioni grafiche relative a fatturato, entrate e uscite.

Chi lavora con il programma giorno dopo giorno impara inevitabilmente ad apprezzare le sue numerose funzioni, sviluppando però al contempo anche una difficilmente reprimibile riluttanza nei confronti di quelle routine che si ripetono in continuazione oppure di quelle azioni che non è possibile effettuare con il solo aiuto dell’interfaccia standard.

Non è dunque una sorpresa che la possibilità di realizzare macro su Excel faccia parte delle funzioni principali e più importanti del programma di calcolo. Il tool, integrato proprio allo scopo di annotare le macro, si serve del linguaggio di scripting Visual Basic for Applications (VBA), utilizzato anche nei programmi di Microsoft Office come Word, PowerPoint, Access e Outlook. Grazie a questo linguaggio potete creare le vostre macro con facilità: esse applicano i comandi di routine di cui sopra in maniera del tutto automatica oppure inseriscono nuove funzioni al calcolo tabellare, come ad esempio gli algoritmi per l’analisi di dati.

Come funzionano le macro su Excel

Excel mette a disposizione i diversi elementi dell’interfaccia utente sotto forma di oggetti del programma; questi vengono disposti in ordine gerarchico e possiedono rispettivamente caratteristiche e metodi specifici. Tutti gli oggetti che si trovano all’interno del cosiddetto object model (anche conosciuto come modello a oggetti) gerarchico sono interconnessi l’uno all’altro e si rispecchiano quasi sull’interfaccia utente visiva, la quale offre superfici di attivazione e di inserimento per l’interazione con l’applicazione. Quando state stabilendo le proprietà e richiamando i vostri metodi, parallelamente state anche elaborando i diversi oggetti. Per l’oggetto “Workbook” esistono ad esempio il metodo “Close”, grazie al quale siete in grado di chiudere il piano di lavoro selezionato, e la proprietà “ActiveSheet”, che rappresenta il foglio attivo in quel momento sul piano di lavoro.

Oltre a ciò le macro possono eseguire azioni anche su un gruppo intero con l’aiuto di elenchi (oggetti che vengono caratterizzati dal plurale in “S”). Ad esempio l’oggetto per l’elencazione “Worksheets” fa sì che all’interno di una macro le indicazioni valgano per tutti i fogli di lavoro. Per l’esecuzione di una macro avete a disposizione le tre seguenti opzioni:

  • Selezione nel menu delle macro
  • Clic con il mouse su un pulsante creato personalmente
  • Combinazione di tasti personalizzata

I vantaggi delle macro di Excel

Se finora avete rinunciato a realizzare le macro sul programma di Microsoft, che sia stato con o senza consapevolezza di causa, non significa necessariamente che abbia influenzato in maniera negativa i risultati dei vostri file di Excel ma solamente che avete optato per quella che di fatto è la via più scomoda per i vostri progetti. Infatti è evidente che la tecnologia delle macro racchiuda una serie di vantaggi significativi che la rendono un must per tutti coloro che ambiscono a ricavare il meglio dal software di calcolo:

  • Le macro diminuiscono le probabilità d’errore: con ogni indicazione che inserite manualmente su Excel aumenta di pari passo anche la probabilità di fare un passo falso. In particolar modo quando si ha a che fare con complesse serie di comandi aventi passaggi di lavoro che si ripetono in continuazione è facile che scappi un errore in grado di compromettere la totale funzionalità. In una macro è solamente il processo di realizzazione a nascondere un potenziale di errore. Se fino a qua non si sono insinuati degli errori, allora la macro di Excel funzionerà in maniera eccepibile ad ogni utilizzo.
  • Le macro riducono il lavoro: dovete realizzare le macro una sola volta. Successivamente potete azionare le pratiche sintesi dei comandi ogni qual volta vogliate con un semplice clic o eventualmente con la rispettiva combinazione di tasti. In questo modo risparmiate tempo prezioso che potete investire in altri compiti.
  • Le macro ampliano Excel: grazie al VBA non solo siete in grado di programmare delle macro e di riassumere i comandi, ma potete sviluppare anche nuove funzioni. Così ampliate la raccolta di funzioni integrata con le vostre modalità di lavoro personalizzate e contribuite a semplificare notevolmente le vostre formule. In pratica Excel presenta anche funzioni create individualmente come se si trattasse di feature native del programma. In aggiunta avete anche la possibilità di connettere qualsiasi macro creata con il relativo pulsante di attivazione, posizionato sulla barra dei simboli.

Come creare la propria macro

Per realizzare la propria raccolta di comandi, dovete innanzitutto attivare l’editor VBA, il quale fa parte dei tool degli sviluppatori. Questi di solito non si trovano sul menu – meglio conosciuto tra le applicazioni di Microsoft Office come “barra multifunzione” – motivo per cui dovete aggiungere la scheda di registrazione corrispondente, come vi spieghiamo nel primo passaggio della breve guida sulla creazione di una macro.

Passaggio n. 1: aggiungere la scheda “Sviluppo”

Selezionate la scheda “File” e cliccate su “Opzioni”. Alla voce “Personalizzazione barra multifunzione” trovate un elenco delle principali schede di registrazione tra cui si ritrova anche la scheda “Sviluppo”.

Spuntate il campo interessato e confermate la modifica con un click su “OK”. La scheda apparirà così sulla barra multifunzione.

Passaggio n. 2: creare una nuova cartella di lavoro per le macro

Nel secondo passaggio si tratta di creare una nuova cartella di Excel che deve servire come base per le macro registrate. A questo scopo cliccate sulla scheda appena attivata nel passaggio precedente, “Sviluppo”, e da lì sul pulsante “Macro”. Sotto “Nome di macro” inserite il nome della nuova cartella (qui ad esempio è stato usato l’inglese “Hello”) e confermate con un click su “Crea”, dopodiché si apre l’editor VBA con il seguente codice:

Sub in questo caso sta per “subroutine” e quindi per una macro che di per sé rappresenta una sorta di sottoprogramma di Excel. Per ogni macro viene eseguito l’intero codice che si trova tra Sub ed End Sub. Per un testo breve potete ampliare il codice dell’esempio di macro qui utilizzato “Hello” in modo seguente:

Sub Hello()
  MsgBox ("Hello world!")
End Sub

Salvate il risultato in formato .xslm, ritornate alla superficie di Excel, attivate nuovamente il pulsante “Macro” e selezionate la macro “Hello” sulla lista visualizzata. Se ora cliccate su “Esegui” apparirà una piccola finestra informativa con il contenuto di testo appena definito:

Potete dunque chiudere la finestra di dialogo cliccando semplicemente sul pulsante “OK”, concludendo così l’esecuzione della macro. Salvate infine la cartella della macro sull’editor in VBA.

Passaggio n. 3: creare un tasto di scelta rapida per le macro

Potete servirvi sia della scheda “Sviluppo” sia della scheda “Visualizzazione” per visualizzare ed eseguire le macro disponibili su Excel. Se però necessitate della sintesi di comando più frequentemente, ha senso realizzare un tasto sulla barra dei simboli per godere di un accesso rapido. Per fare ciò procedete come segue:

1. Aprite la scheda “File”.

2. Aprite le “Opzioni” e cliccate sulla voce del menu “Barra di accesso rapido”.

3. A partire dalla lista “Scegliere comando” selezionate la voce “Macro” e cercate la macro già creata, “Hello”.

4. Selezionate la macro e cliccate su “Aggiungi” per trasferirla sulla lista dei tasti per l’accesso rapido.

5. Prima di confermare il nuovo tasto cliccando su “OK”, potete anche scegliere il simbolo da assegnarle. A questo scopo vi basta selezionare semplicemente la macro e cliccare su “Modifica”.

A questo punto la barra multifunzione contiene oltre ai tasti standard “Salva”, “Indietro” e “Ripeti” anche il tasto di accesso rapido della macro “Hello”:

Suggerimento

In alternativa potete stabilire anche una combinazione di tasti per l’esecuzione della macro seguendo i passaggi “Sviluppo” -> “Macro” -> “Opzioni”.    

Passaggio n. 4: utilizzare la registrazione macro

L’editor VBA, integrato da Microsoft nelle sue applicazioni della serie Office, offre il vantaggio che non è richiesta la conoscenza del linguaggio di programmazione per creare semplici macro per Excel. A questo scopo la funzione integrata di registrare le macro è pienamente sufficiente. Per esempio a questo punto creiamo una macro che rinomina un foglio di lavoro del tutto automaticamente.

1. Tra i tool di sviluppo questa volta selezionate il tasto “Registra macro”.

2. Nella finestra di dialogo che appare a seguire date alla macro il nome “RenameWorksheets” e avviate poi la registrazione confermando con “OK”.

3. Rinominate ora il primo foglio (“Sheet1”) in “New Name” e terminate la registrazione della macro cliccando su “Termina registrazione”.

Se ora tornate all’editor VBA (“Sviluppo” -> “Macro” -> “Modifica”) dovrebbe apparirvi la seguente schermata di codice:

Per quanto riguarda le prime quattro righe di codice che si trovano al di sotto di “Sub”, che iniziano tutte con un apostrofo, si tratta di righe di commento. Queste non vanno minimamente a intaccare la funzionalità generale delle macro e servono per prima cosa a una migliore comprensibilità del codice. Oltre a ciò le righe di codice possono essere disattivate con l’aiuto di commenti anche in maniera provvisoria. Comunque sia per l’esempio di macro non avrete ancora bisogno delle quattro righe generatesi automaticamente, motivo per cui potete tranquillamente eliminarle.

La seguente riga contiene il metodo “Select”, ovvero la selezione del “Sheet1”, che era indispensabile nell’esecuzione manuale della rinomina prima di riuscire a darle un nuovo nome. Tuttavia gli script VBA non devono selezionare oggetti per poterli elaborare, motivo per cui non necessitate di questa riga di codice per la macro. Il codice completamente rielaborato apparirà come segue:

Sub RenameWorksheets ()
  Sheets("Sheet1").Name = "New Name"
End Sub

Tornate infine su Excel e nominate il foglio di lavoro in “Sheet1”. Se eseguite in via sperimentale la macro RenameWorksheets, dovrebbe automaticamente cambiare il nome. Fate attenzione perché per eseguire nuovamente la macro ora dovete adattarla al nuovo nome.

Macro di Excel nella pratica: diagrammi e maschere di inserimento

Gli script VBA permettono l’automatizzazione dei più svariati compiti di Excel. Con l’aiuto dell’opzione di registrazione non solo potete cercare in modo facile di semplificare il vostro processo di lavoro, ma al contempo potete anche ricavare conoscenze aggiuntive sull’efficace linguaggio di programmazione. Non esitate dunque a servirvi del tool VBA se pensate che una macro di Excel possa alleggerirvi un determinato passaggio.

Dopo avervi illustrato nei precedenti paragrafi le modalità di procedimento generale per la generazione di macro, i seguenti due esempi devono servirvi per capire concretamente la versatilità del processo di automatizzazione dei comandi.

L’evergreen di Excel: realizzare un diagramma sulla base di una cella

Una funzione popolare delle tabelle di Excel è la visualizzazione di dati sotto forma di un diagramma. In questa situazione, spesso impegnativa, la macro può rivelarsi di grande aiuto. A questo scopo generate quindi una macro con il nome di “AssortedTasks” e dichiarate la variabile del vostro grafico:

Dim miografico As Chartobject

Nella riga successiva create poi un diagramma al quale applicate questa variabile miografico:

Set miografico = ActiveSheet.ChartObjects.Add(100, 50, 200, 200)

I valori che si trovano all’interno delle parentesi stabiliscono la posizione e la dimensione del grafico. I primi due dati costituiscono le coordinate dell’angolo in alto a sinistra, seguono poi i valori rispettivamente relativi alla larghezza e all’altezza. Se ora eseguite la macro, Excel genera l’oggetto automaticamente nella posizione prevista e delle dimensioni definite, anche se naturalmente è ancora vuoto perché mancano ancora i dati relativi all’input.

Nell’ultimo passaggio dovete quindi inserire i dati nel grafico che possono poi essere visualizzati. Perché questo sia possibile è necessario da un lato inserire i valori, dall’altro un ulteriore adattamento della macro, poiché ancora mancano le indicazioni sul luogo da cui estrapolare le informazioni relative alla rappresentazione. Per quanto riguarda la costruzione With … End With, servitevi ora a questo scopo del metodo SetSourceData e specificatelo tramite il valore Selection: questo fa sì che, durante l’esecuzione della macro, vengano tenuti in considerazione i valori di tutte le celle selezionate. Il codice della macro completa avrà dunque il seguente aspetto:

Sub AssortedTasks()
Dim miografico As ChartObject
Set miografico = ActiveSheet.ChartObjects.Add(100, 50, 200, 200)
With miografico
.Chart.SetSourceData Source := Selection
End With
End Sub

Fate ora un test e inserite i valori da 1 a 5 nelle celle di Excel ed eseguite la macro: in questo modo i dati verranno presentati sotto forma di grafico a colonne. Questo tipo di grafico viene automaticamente generato dal software di Microsoft come standard, a meno che non diate indicazioni aggiuntive di tipo ChartType.

Come generare una finestra di dialogo per gli inserimenti dell’utente

Con l’aiuto del tool per le macro potete però anche creare maschere di inserimento tramite le quali l’utente è in grado di interagire con Excel. Ad esempio per realizzare una finestra di interazione il cui valore di inserimento viene automaticamente scritto all’interno di una cella definita, cominciate come solito con la creazione e la nomina di una nuova macro. Nel nostro esempio diamo alla raccolta di comandi il nome di “dialogbox”. Successivamente indicate alla subroutine il luogo di destinazione del valore che l’utente inserirà in un secondo momento:

Sub dialogbox()
  ActiveSheet.Range("A1").Value = 
End Sub

Dunque la macro fa sì che l’inserimento da parte dell’utente venga trasmesso alla cella A1 del foglio 1, il “Sheet1”. Il valore del campo (Value) deve essergli assegnato solamente tramite la seconda parte dell’indicazione. Nell’esempio abbiamo scelto il comando InputBox, che è molto simile al comando MsgBox che era entrato in azione nella macro “Hello”. In combinazione con i tre seguenti argomenti, che nel codice VBA sono presenti tra virgolette, si costituisce una finestra di inserimento del tutto funzionale:

  • Prompt: con l’aiuto del primo argomento definite il testo della finestra di dialogo, il quale servirà da supporto all’utente durante l’inserimento.
  • Title: l’argomento “Title” rappresenta l’intestazione della maschera di inserimento.
  • Default: infine con “Default” potete definire anche un inserimento standard.

Un possibile esempio di codice dell’intera macro relativa alla maschera di inserimento, box e testo inclusi, appare come segue:

Sub dialogbox()
  Sheet1.Range("A1").Value = InputBox("Inserire un valore per la cella A1.", "Intestazione della maschera di inserimento", "Valore della cella A1")
End Sub

Se eseguite questa macro vi apparirà la finestra di dialogo corrispondente:

Inoltro delle macro

Se avete generato delle macro sulla vostra cartella di lavoro su Excel potete comodamente utilizzarle anche in altri documenti oppure inoltrarle ad altri utenti. A questo scopo l’editor VBA possiede una funzione apposita di importazione/esportazione, grazie alla quale potete salvare le vostre raccolte in formato .bas oppure integrare le macro salvate in formato .bas nel documento di Excel a cui state lavorando al momento. L’unico prerequisito è che le macro siano state attivate sul documento di destinazione.

Siccome gli script pratici potenzialmente possono contenere codici dannosi per la sicurezza, di solito Excel qui pone delle restrizioni per la protezione degli utenti cosicché ad esempio tutte le macro vengono bloccate con o senza notifica, oppure tutte le macro sprovviste di firma digitale. La soluzione più semplice è di permettere tutte le macro automaticamente, anche se prima dell’importazione è indispensabile assicurarsi che i codici siano effettivamente affidabili.

Le opzioni per l’attivazione e la disattivazione delle macro si trovano in “Trust Center” e nelle versioni meno recenti nel “Centro di sicurezza”: aprite quindi la scheda “File”, selezionate “Opzioni”, “Trust Center” e cliccate sul pulsante “Impostazioni del Trust Center”. Qui trovate la voce di menu “Impostazioni delle macro” con incluse le possibilità di configurazione appena citate.

Per esportare una sola macro basta che apriate l’editor di Visual Basic, clicchiate sulla voce “File” del menu e successivamente su “Esporta file”. Date un nome alla vostra raccolta di macro, selezionate l’indice desiderato e terminate l’esportazione cliccando su “Salva”. La dimensione del file esportato è solamente di qualche Byte e può quindi essere comodamente trasportato sul computer di destinazione desiderato o via posta elettronica o per mezzo di un dispositivo di archiviazione portatile. Per importare un file macro seguite la medesima procedura selezionando però la voce “Importa file” e indicando infine il luogo di archiviazione del file.