Chi lavora re­go­lar­men­te con i programmi di ela­bo­ra­zio­ne di testi, sistemi di database oppure ap­pli­ca­zio­ni per il calcolo delle tabelle, sa bene quanto può essere im­pe­gna­ti­vo dover inserire ogni volta sempre le stesse identiche istru­zio­ni. In par­ti­co­lar modo l’ese­cu­zio­ne dei programmi a più passaggi mette presto a dura prova la pazienza degli utenti. Ma per fortuna ci sono le co­sid­det­te macro a venire in aiuto (dall’inglese macro, “in­struc­tion”: procedura), le quali re­gi­stra­no una suc­ces­sio­ne di istru­zio­ni così che possano venire applicate au­to­ma­ti­ca­men­te da chi utilizza il software in un de­ter­mi­na­to momento.

No­no­stan­te le macro siano scritte in un lin­guag­gio di pro­gram­ma­zio­ne, so­li­ta­men­te non sono in­di­spen­sa­bi­li co­no­scen­ze in questo ambito, poiché molti programmi tra cui anche Excel possono re­gi­stra­re semplici macro, dando così as­si­sten­za durante lo sviluppo. Per Excel, il software di calcolo tabellare di Microsoft, le macro sono una delle feature più im­por­tan­ti.

Acquista e registra il tuo dominio con il provider n°1 in Europa
  • Domain Connect gratuito per una con­fi­gu­ra­zio­ne facile del DNS
  • Cer­ti­fi­ca­to SSL Wildcard gratuito
  • Pro­te­zio­ne privacy inclusa

Cos’è una macro su Excel?

Microsoft Excel fa parte delle soluzioni più richieste per l’ela­bo­ra­zio­ne, l’analisi e la pre­sen­ta­zio­ne 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 ca­len­da­rio personale. Anche all’interno delle aziende si ricorre ad Excel: grazie al software, infatti, è possibile rea­liz­za­re piani di progetti, piani orari, oppure piani di bilancio, ma anche rap­pre­sen­ta­zio­ni grafiche relative a fatturato, entrate e uscite.

Chi lavora con il programma giorno dopo giorno impara ine­vi­ta­bil­men­te ad ap­prez­za­re le sue numerose funzioni, svi­lup­pan­do però al contempo anche una dif­fi­cil­men­te re­pri­mi­bi­le ri­lut­tan­za nei confronti di quelle routine che si ripetono in con­ti­nua­zio­ne oppure di quelle azioni che non è possibile ef­fet­tua­re con il solo aiuto dell’in­ter­fac­cia standard.

Non è dunque una sorpresa che la pos­si­bi­li­tà di rea­liz­za­re macro su Excel faccia parte delle funzioni prin­ci­pa­li e più im­por­tan­ti del programma di calcolo. Il tool, integrato proprio allo scopo di annotare le macro, si serve del lin­guag­gio di scripting Visual Basic for Ap­pli­ca­tions (VBA), uti­liz­za­to anche nei programmi di Microsoft Office come Word, Po­wer­Point, Access e Outlook. Grazie a questo lin­guag­gio potete creare le vostre macro con facilità: esse applicano i comandi di routine di cui sopra in maniera del tutto au­to­ma­ti­ca oppure in­se­ri­sco­no nuove funzioni al calcolo tabellare, come ad esempio gli algoritmi per l’analisi di dati.

Come fun­zio­na­no le macro su Excel

Excel mette a di­spo­si­zio­ne i diversi elementi dell’in­ter­fac­cia utente sotto forma di oggetti del programma; questi vengono disposti in ordine ge­rar­chi­co e pos­sie­do­no ri­spet­ti­va­men­te ca­rat­te­ri­sti­che e metodi specifici. Tutti gli oggetti che si trovano all’interno del co­sid­det­to object model (anche co­no­sciu­to come modello a oggetti) ge­rar­chi­co sono in­ter­con­nes­si l’uno all’altro e si ri­spec­chia­no quasi sull’in­ter­fac­cia utente visiva, la quale offre superfici di at­ti­va­zio­ne e di in­se­ri­men­to per l’in­te­ra­zio­ne con l’ap­pli­ca­zio­ne. Quando state sta­bi­len­do le proprietà e ri­chia­man­do i vostri metodi, pa­ral­le­la­men­te state anche ela­bo­ran­do 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 se­le­zio­na­to, e la proprietà “Ac­ti­ve­Sheet”, che rap­pre­sen­ta 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 ca­rat­te­riz­za­ti dal plurale in “S”). Ad esempio l’oggetto per l’elen­ca­zio­ne “Work­shee­ts” fa sì che all’interno di una macro le in­di­ca­zio­ni valgano per tutti i fogli di lavoro. Per l’ese­cu­zio­ne di una macro avete a di­spo­si­zio­ne le tre seguenti opzioni:

  • Selezione nel menu delle macro
  • Clic con il mouse su un pulsante creato per­so­nal­men­te
  • Com­bi­na­zio­ne di tasti per­so­na­liz­za­ta

I vantaggi delle macro di Excel

Se finora avete ri­nun­cia­to a rea­liz­za­re le macro sul programma di Microsoft, che sia stato con o senza con­sa­pe­vo­lez­za di causa, non significa ne­ces­sa­ria­men­te che abbia in­fluen­za­to 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 tec­no­lo­gia delle macro racchiuda una serie di vantaggi si­gni­fi­ca­ti­vi che la rendono un must per tutti coloro che ambiscono a ricavare il meglio dal software di calcolo:

  • Le macro di­mi­nui­sco­no le pro­ba­bi­li­tà d’errore: con ogni in­di­ca­zio­ne che inserite ma­nual­men­te su Excel aumenta di pari passo anche la pro­ba­bi­li­tà di fare un passo falso. In par­ti­co­lar modo quando si ha a che fare con complesse serie di comandi aventi passaggi di lavoro che si ripetono in con­ti­nua­zio­ne è facile che scappi un errore in grado di com­pro­met­te­re la totale fun­zio­na­li­tà. In una macro è solamente il processo di rea­liz­za­zio­ne a na­scon­de­re un po­ten­zia­le di errore. Se fino a qua non si sono insinuati degli errori, allora la macro di Excel fun­zio­ne­rà in maniera ec­ce­pi­bi­le ad ogni utilizzo.
  • Le macro riducono il lavoro: dovete rea­liz­za­re le macro una sola volta. Suc­ces­si­va­men­te potete azionare le pratiche sintesi dei comandi ogni qual volta vogliate con un semplice clic o even­tual­men­te con la ri­spet­ti­va com­bi­na­zio­ne di tasti. In questo modo ri­spar­mia­te tempo prezioso che potete investire in altri compiti.
  • Le macro ampliano Excel: grazie al VBA non solo siete in grado di pro­gram­ma­re delle macro e di rias­su­me­re i comandi, ma potete svi­lup­pa­re anche nuove funzioni. Così ampliate la raccolta di funzioni integrata con le vostre modalità di lavoro per­so­na­liz­za­te e con­tri­bui­te a sem­pli­fi­ca­re no­te­vol­men­te le vostre formule. In pratica Excel presenta anche funzioni create in­di­vi­dual­men­te come se si trattasse di feature native del programma. In aggiunta avete anche la pos­si­bi­li­tà di con­net­te­re qualsiasi macro creata con il relativo pulsante di at­ti­va­zio­ne, po­si­zio­na­to sulla barra dei simboli.

Come creare la propria macro

Per rea­liz­za­re la propria raccolta di comandi, dovete in­nan­zi­tut­to attivare l’editor VBA, il quale fa parte dei tool degli svi­lup­pa­to­ri. Questi di solito non si trovano sul menu – meglio co­no­sciu­to tra le ap­pli­ca­zio­ni di Microsoft Office come “barra mul­ti­fun­zio­ne” – motivo per cui dovete ag­giun­ge­re la scheda di re­gi­stra­zio­ne cor­ri­spon­den­te, come vi spie­ghia­mo nel primo passaggio della breve guida sulla creazione di una macro.

Passaggio n. 1: ag­giun­ge­re la scheda “Sviluppo”

Se­le­zio­na­te la scheda “File” e cliccate su “Opzioni”. Alla voce “Per­so­na­liz­za­zio­ne barra mul­ti­fun­zio­ne” trovate un elenco delle prin­ci­pa­li schede di re­gi­stra­zio­ne tra cui si ritrova anche la scheda “Sviluppo”.

Spuntate il campo in­te­res­sa­to e con­fer­ma­te la modifica con un click su “OK”. La scheda apparirà così sulla barra mul­ti­fun­zio­ne.

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 re­gi­stra­te. A questo scopo cliccate sulla scheda appena attivata nel passaggio pre­ce­den­te, “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 con­fer­ma­te con un click su “Crea”, dopodiché si apre l’editor VBA con il seguente codice:

Sub in questo caso sta per “sub­rou­ti­ne” e quindi per una macro che di per sé rap­pre­sen­ta una sorta di sot­to­pro­gram­ma 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 uti­liz­za­to “Hello” in modo seguente:

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

Salvate il risultato in formato .xslm, ritornate alla su­per­fi­cie di Excel, attivate nuo­va­men­te il pulsante “Macro” e se­le­zio­na­te la macro “Hello” sulla lista vi­sua­liz­za­ta. Se ora cliccate su “Esegui” apparirà una piccola finestra in­for­ma­ti­va con il contenuto di testo appena definito:

Potete dunque chiudere la finestra di dialogo cliccando sem­pli­ce­men­te sul pulsante “OK”, con­clu­den­do così l’ese­cu­zio­ne 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 “Vi­sua­liz­za­zio­ne” per vi­sua­liz­za­re ed eseguire le macro di­spo­ni­bi­li su Excel. Se però ne­ces­si­ta­te della sintesi di comando più fre­quen­te­men­te, ha senso rea­liz­za­re 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” se­le­zio­na­te la voce “Macro” e cercate la macro già creata, “Hello”.

4. Se­le­zio­na­te la macro e cliccate su “Aggiungi” per tra­sfe­rir­la sulla lista dei tasti per l’accesso rapido.

5. Prima di con­fer­ma­re il nuovo tasto cliccando su “OK”, potete anche scegliere il simbolo da as­se­gnar­le. A questo scopo vi basta se­le­zio­na­re sem­pli­ce­men­te la macro e cliccare su “Modifica”.

A questo punto la barra mul­ti­fun­zio­ne contiene oltre ai tasti standard “Salva”, “Indietro” e “Ripeti” anche il tasto di accesso rapido della macro “Hello”:

Consiglio

In al­ter­na­ti­va potete stabilire anche una com­bi­na­zio­ne di tasti per l’ese­cu­zio­ne della macro seguendo i passaggi “Sviluppo” -> “Macro” -> “Opzioni”.    

Passaggio n. 4: uti­liz­za­re la re­gi­stra­zio­ne macro

L’editor VBA, integrato da Microsoft nelle sue ap­pli­ca­zio­ni della serie Office, offre il vantaggio che non è richiesta la co­no­scen­za del lin­guag­gio di pro­gram­ma­zio­ne per creare semplici macro per Excel. A questo scopo la funzione integrata di re­gi­stra­re le macro è pie­na­men­te suf­fi­cien­te. Per esempio a questo punto creiamo una macro che rinomina un foglio di lavoro del tutto au­to­ma­ti­ca­men­te.

1. Tra i tool di sviluppo questa volta se­le­zio­na­te il tasto “Registra macro”.

2. Nella finestra di dialogo che appare a seguire date alla macro il nome “Re­na­meWork­shee­ts” e avviate poi la re­gi­stra­zio­ne con­fer­man­do con “OK”.

3. Ri­no­mi­na­te ora il primo foglio (“Sheet1”) in “New Name” e terminate la re­gi­stra­zio­ne della macro cliccando su “Termina re­gi­stra­zio­ne”.

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 mi­ni­ma­men­te a intaccare la fun­zio­na­li­tà generale delle macro e servono per prima cosa a una migliore com­pren­si­bi­li­tà del codice. Oltre a ciò le righe di codice possono essere di­sat­ti­va­te con l’aiuto di commenti anche in maniera prov­vi­so­ria. Comunque sia per l’esempio di macro non avrete ancora bisogno delle quattro righe ge­ne­ra­te­si au­to­ma­ti­ca­men­te, motivo per cui potete tran­quil­la­men­te eli­mi­nar­le.

La seguente riga contiene il metodo “Select”, ovvero la selezione del “Sheet1”, che era in­di­spen­sa­bi­le nell’ese­cu­zio­ne manuale della rinomina prima di riuscire a darle un nuovo nome. Tuttavia gli script VBA non devono se­le­zio­na­re oggetti per poterli elaborare, motivo per cui non ne­ces­si­ta­te di questa riga di codice per la macro. Il codice com­ple­ta­men­te rie­la­bo­ra­to 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 spe­ri­men­ta­le la macro Re­na­meWork­shee­ts, dovrebbe au­to­ma­ti­ca­men­te cambiare il nome. Fate at­ten­zio­ne perché per eseguire nuo­va­men­te la macro ora dovete adattarla al nuovo nome.

Macro di Excel nella pratica: diagrammi e maschere di in­se­ri­men­to

Gli script VBA per­met­to­no l’au­to­ma­tiz­za­zio­ne dei più svariati compiti di Excel. Con l’aiuto dell’opzione di re­gi­stra­zio­ne non solo potete cercare in modo facile di sem­pli­fi­ca­re il vostro processo di lavoro, ma al contempo potete anche ricavare co­no­scen­ze ag­giun­ti­ve sull’efficace lin­guag­gio di pro­gram­ma­zio­ne. Non esitate dunque a servirvi del tool VBA se pensate che una macro di Excel possa al­leg­ge­rir­vi un de­ter­mi­na­to passaggio.

Dopo avervi il­lu­stra­to nei pre­ce­den­ti paragrafi le modalità di pro­ce­di­men­to generale per la ge­ne­ra­zio­ne di macro, i seguenti due esempi devono servirvi per capire con­cre­ta­men­te la ver­sa­ti­li­tà del processo di au­to­ma­tiz­za­zio­ne dei comandi.

L’evergreen di Excel: rea­liz­za­re un diagramma sulla base di una cella

Una funzione popolare delle tabelle di Excel è la vi­sua­liz­za­zio­ne di dati sotto forma di un diagramma. In questa si­tua­zio­ne, spesso im­pe­gna­ti­va, la macro può rivelarsi di grande aiuto. A questo scopo generate quindi una macro con il nome di “As­sor­ted­Ta­sks” e di­chia­ra­te la variabile del vostro grafico:

Dim miografico As Chartobject

Nella riga suc­ces­si­va create poi un diagramma al quale applicate questa variabile mio­gra­fi­co:

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

I valori che si trovano all’interno delle parentesi sta­bi­li­sco­no la posizione e la di­men­sio­ne del grafico. I primi due dati co­sti­tui­sco­no le coor­di­na­te dell’angolo in alto a sinistra, seguono poi i valori ri­spet­ti­va­men­te relativi alla larghezza e all’altezza. Se ora eseguite la macro, Excel genera l’oggetto au­to­ma­ti­ca­men­te nella posizione prevista e delle di­men­sio­ni definite, anche se na­tu­ral­men­te è ancora vuoto perché mancano ancora i dati relativi all’input.

Nell’ultimo passaggio dovete quindi inserire i dati nel grafico che possono poi essere vi­sua­liz­za­ti. Perché questo sia possibile è ne­ces­sa­rio da un lato inserire i valori, dall’altro un ulteriore adat­ta­men­to della macro, poiché ancora mancano le in­di­ca­zio­ni sul luogo da cui estra­po­la­re le in­for­ma­zio­ni relative alla rap­pre­sen­ta­zio­ne. Per quanto riguarda la co­stru­zio­ne With … End With, servitevi ora a questo scopo del metodo Se­tSour­ce­Da­ta e spe­ci­fi­ca­te­lo tramite il valore Selection: questo fa sì che, durante l’ese­cu­zio­ne della macro, vengano tenuti in con­si­de­ra­zio­ne i valori di tutte le celle se­le­zio­na­te. 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 pre­sen­ta­ti sotto forma di grafico a colonne. Questo tipo di grafico viene au­to­ma­ti­ca­men­te generato dal software di Microsoft come standard, a meno che non diate in­di­ca­zio­ni ag­giun­ti­ve di tipo ChartType.

Come generare una finestra di dialogo per gli in­se­ri­men­ti dell’utente

Con l’aiuto del tool per le macro potete però anche creare maschere di in­se­ri­men­to tramite le quali l’utente è in grado di in­te­ra­gi­re con Excel. Ad esempio per rea­liz­za­re una finestra di in­te­ra­zio­ne il cui valore di in­se­ri­men­to viene au­to­ma­ti­ca­men­te scritto all’interno di una cella definita, co­min­cia­te come solito con la creazione e la nomina di una nuova macro. Nel nostro esempio diamo alla raccolta di comandi il nome di “dialogbox”. Suc­ces­si­va­men­te indicate alla sub­rou­ti­ne il luogo di de­sti­na­zio­ne 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’in­se­ri­men­to 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’in­di­ca­zio­ne. Nell’esempio abbiamo scelto il comando InputBox, che è molto simile al comando MsgBox che era entrato in azione nella macro “Hello”. In com­bi­na­zio­ne con i tre seguenti argomenti, che nel codice VBA sono presenti tra vir­go­let­te, si co­sti­tui­sce una finestra di in­se­ri­men­to del tutto fun­zio­na­le:

  • Prompt: con l’aiuto del primo argomento definite il testo della finestra di dialogo, il quale servirà da supporto all’utente durante l’in­se­ri­men­to.
  • Title: l’argomento “Title” rap­pre­sen­ta l’in­te­sta­zio­ne della maschera di in­se­ri­men­to.
  • Default: infine con “Default” potete definire anche un in­se­ri­men­to standard.

Un possibile esempio di codice dell’intera macro relativa alla maschera di in­se­ri­men­to, 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 cor­ri­spon­den­te:

Inoltro delle macro

Se avete generato delle macro sulla vostra cartella di lavoro su Excel potete co­mo­da­men­te uti­liz­zar­le anche in altri documenti oppure inol­trar­le ad altri utenti. A questo scopo l’editor VBA possiede una funzione apposita di im­por­ta­zio­ne/espor­ta­zio­ne, 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 pre­re­qui­si­to è che le macro siano state attivate sul documento di de­sti­na­zio­ne.

Siccome gli script pratici po­ten­zial­men­te possono contenere codici dannosi per la sicurezza, di solito Excel qui pone delle re­stri­zio­ni per la pro­te­zio­ne degli utenti cosicché ad esempio tutte le macro vengono bloccate con o senza notifica, oppure tutte le macro sprov­vi­ste di firma digitale. La soluzione più semplice è di per­met­te­re tutte le macro au­to­ma­ti­ca­men­te, anche se prima dell’im­por­ta­zio­ne è in­di­spen­sa­bi­le as­si­cu­rar­si che i codici siano ef­fet­ti­va­men­te af­fi­da­bi­li.

Le opzioni per l’at­ti­va­zio­ne e la di­sat­ti­va­zio­ne delle macro si trovano in “Trust Center” e nelle versioni meno recenti nel “Centro di sicurezza”: aprite quindi la scheda “File”, se­le­zio­na­te “Opzioni”, “Trust Center” e cliccate sul pulsante “Im­po­sta­zio­ni del Trust Center”. Qui trovate la voce di menu “Im­po­sta­zio­ni delle macro” con incluse le pos­si­bi­li­tà di con­fi­gu­ra­zio­ne appena citate.

Per esportare una sola macro basta che apriate l’editor di Visual Basic, clic­chia­te sulla voce “File” del menu e suc­ces­si­va­men­te su “Esporta file”. Date un nome alla vostra raccolta di macro, se­le­zio­na­te l’indice de­si­de­ra­to e terminate l’espor­ta­zio­ne cliccando su “Salva”. La di­men­sio­ne del file esportato è solamente di qualche Byte e può quindi essere co­mo­da­men­te tra­spor­ta­to sul computer di de­sti­na­zio­ne de­si­de­ra­to o via posta elet­tro­ni­ca o per mezzo di un di­spo­si­ti­vo di ar­chi­via­zio­ne portatile. Per importare un file macro seguite la medesima procedura se­le­zio­nan­do però la voce “Importa file” e indicando infine il luogo di ar­chi­via­zio­ne del file.

Cloud Backup powered by Acronis
Riduci i tempi di inat­ti­vi­tà e proteggi i carichi di lavoro
  • Backup au­to­ma­ti­ci e recupero dei dati
  • Pia­ni­fi­ca­zio­ne e gestione intuitive delle attività
  • Pro­te­zio­ne dalle minacce basata sul­l'in­tel­li­gen­za ar­ti­fi­cia­le
Vai al menu prin­ci­pa­le