Didattica.Net

  by Lagreca.it  



   Mappa del sitoAggiungi a preferiti------------------  



 Altre pagine


Home
Su



 

Didattica
Servizi
Strumenti
Scuola
Cinema
Giornali On Line
Domini
Press Today
News Internazionali
Borse Internazionali
Forum
Bookmark
Chat
Crazy Page
Musica
Add Link
Comuni CAP
E-mail
Televisione
Firma il libro ospiti
Leggi il libro ospiti
Motori di ricerca
Flash Sms
Rassegna Stampa
Server News
Server Netmeeting
Uova di Pasqua

Contatori


Nedstat Counter

Il registratore delle macro

 

Il registratore delle Macro

Questo articolo è il primo di una serie che ha l’ambizione di avvicinare il lettore che proprio esperto non è, all’affascinate mondo delle macro. O meglio, del Vba  (Visual Basic for Application), il linguaggio di programmazione che opera nell’ambito di Excel e delle applicazioni Office in generale. Fin qui nulla di strano. Ma l’ambiziosità del progetto si materializza nel metodo, decisamente anticonvenzionale, che intendiamo seguire per raggiungere lo scopo che ci siamo prefissi. In particolare, dal momento chi intende seguirci parte da zero, eviteremo di ricorrere per quanto possibile a termini tecnici o a conclusioni scontate e cercheremo di premiare la semplicità e la chiarezza, anche se così facendo incorreremo sicuramente in qualche inesattezza. A costo di far rizzare i capelli a tecnici ed esperti. Prima di cominciare, però, è doverosa qualche considerazione. Molti, dopo aver acquisito una certa familiarità con l’utilizzo di Excel hanno provato, prima o poi, a cimentarsi con le macro. Il più delle volte (almeno a noi è successo così) la lodevole intenzione è destinata a restare tale. Infatti, chi non ha il bernoccolo della programmazione ne tanto meno il tempo di documentarsi adeguatamente deve fare subito i conti con un ambiente in cui (doverosamente, sia ben chiaro…) il tecnicismo è di rigore, e se non si riesce a penetrare l’austero linguaggio degli addetti ai lavori ci sono tutte le premesse per scoraggiare anche i più ardimentosi. Così le macro restano per i più un oscuro oggetto di desiderio. Peccato, perché impadronirsi anche superficialmente delle loro tecniche di utilizzo consente di scatenare la potenza e la versatilità di Excel, nonché di sviluppare applicazioni anche piuttosto sofisticate per la risoluzione delle più disparate problematiche. E allora? Allora, se proprio non abbiamo intenzione di diventare degli esperti, ma ci appaga la soddisfazione di veder funzionare qualcosa creato da noi, possiamo ugualmente intraprende un proficuo viaggio nel mondo della programmazione in Vba. Basta utilizzare con creatività e fantasia alcuni strumenti che Excel ci mette a disposizione. La chiave per aprire la porta di questo universo è il registratore delle macro, una benvenuta funzione, facilissima da utilizzare, che consente di trasformare in una macro (o meglio, in un programmino in Vba), una qualsiasi procedura eseguita alla tastiera.

 

Procediamo con ordine

A questo punto ci siamo accorti di esserci fatti prendere un poco la mano, pertanto, a beneficio di chi non avesse ben chiaro il concetto di macro, vale la pena di tentarne una interpretazione spicciola, anche per restare in sintonia con la tecnica di esposizione che ci siamo ripromessi di utilizzare per sviscerare le tematiche che intendiamo affrontare. Una macro è un insieme di istruzioni che il computer interpreta una dopo l’altra e traduce in azioni operative, ne più ne meno come se fossero state impartite manualmente da noi. Il bello è che una macro può essere eseguita indefinitamente tutte volte che lo si desidera, e pertanto si rivela una ottima soluzione per automatizzare una volta per tutte l’esecuzione di procedure ricorrenti. Le applicazioni pratiche delle macro sono solo da immaginare. Si può procedere alla stampa di una tabella, alla formattazione di un documento, alla creazione di un grafico, alla interrogazione di un data base e così via. Conviene fare un esempio. Immaginiamo di dover stampare settimanalmente una tabella dati accompagnandola con il corrispondente diagramma. Grazie ad una macro i nostri interventi si possono ridurre alla semplice pressione di un bottone. E ancora, si potrebbe sviluppare un programmino per automatizzare l’interrogazione di un archivio fatture al fine di individuare i clienti morosi, e spedire loro, sempre automaticamente, una lettera di sollecito. Ma come è fatta una macro? Sostanzialmente, le istruzioni di cui si compone sono articolate in  certo numero di righe che, nel loro insieme, costituiscono quello che nel gergo degli addetti ai lavori viene definito un listato. Per il numero delle suddette righe non esiste un limite, ed altrettanto dicasi per la loro lunghezza, ma per propiziarne la leggibilità è raccomandabile non eccedere. Quaranta o cinque caratteri per riga bastano e avanzano. In ogni caso, righe troppo lunghe possono essere convenientemente spezzate. È sufficiente che l’elisione non tronchi una istruzione o una parola chiave, ed avere l’accortezza di digitare uno spazio, seguito da un  underscore ( _ ) subito dopo la troncatura. Ma di questo ne parleremo più avanti. E ancora, se il listato di una macro fosse troppo corposo, e quindi difficile da interpretare, lo si può suddividere in più agili sottoprogrammi che possono essere richiamati dall’interno della macro principale. A questo punto, fatta la conoscenza (sia pure superficiale) con le caratteristiche salienti delle macro vediamo come crearle. Ci sono due modi. Il primo, ad uso e consumo dei programmatori smaliziati, consiste nel digitare le varie istruzioni in cui si articolano in uno speciale ambiente di Excel , meglio conosciuto dagli esperti come l’Editor del Vba (figura 1). 

 

Il secondo, che è quello che ci interessa più da vicino, consiste nell’utilizzare il famoso registratore, uno strumento che se sapientemente utilizzato ci trasporterà quasi senza accorgercene nel fantastico mondo della programmazione di Excel. È proprio sull’utilizzo di questo prezioso strumento che si basa soprattutto il nostro metodo di apprendimento. Basta cominciare a registrare alcune semplici macro, e analizzandone pazientemente il listato si può fare la conoscenza con le più importanti istruzioni e parole chiave, nonché scoprire poco a poco la sottile dinamica del loro utilizzo. Il bello è che un programma in Vba può essere generato assemblando opportunamente fra loro macro elementari, pertanto,dopo avere fatto un po’ di esperienza possiamo arrivare a sviluppare una  piccola applicazione accorpando fra loro, con banali operazioni di copia e incolla, spezzoni di macro registrate singolarmente. Insomma, il registratore è la chiave che apre la porta al solo apparentemente misterioso mondo della programmazione di Excel. Vediamo subito come utilizzarlo.

 

Registriamo una macro

Come si diceva, il registratore delle macro ha la prerogativa di trasformare in un listato in Vba una qualsiasi procedura operativa eseguita con la mediazione della tastiera o del mouse. Il corrispondente programma, cui al momento della registrazione deve essere stato assegnato un nome (il più esplicativo possibile), viene custodito nella memoria del computer e può essere richiamato tutte le volte che si vuole eseguire quella procedura. Ma ecco come si crea una macro. Nel nostro esempio registreremo un semplice programmino che traspone i dati contenuti in una tabella, vale a dire che le righe diventano colonne e viceversa.

 

q       Aprire il menu Strumenti e optare per la voce Macro. Nel corrispondente sottomenu selezionare la voce Registra nuova macro (figura 2) per accedere alla maschera che gestisce la denominazione della macro che intendiamo registrare (figura 3).

 

 

Nella casella Nome macro digitare il nome che si vuole assegnare alla macro (Trasposizione, per esempio) avendo cura che risulti chiaramente esplicativo delle funzioni che il corrispondente programma deve svolgere. Non ci stancheremo mai di ripetere questa raccomandazione. Infatti, quando si ha a che fare con numerose macro, può diventare difficile riconoscerle se il nome assegnato non ci aiuta a risalire immediatamente a quello che fanno. Il nome che viene digitato nella casella andrà a sovrascrivere quello che Excel propone per default (Macro1) considerando che questa è la prima macro che stiamo registrando.

 

Sui nomi che possono essere utilizzati bisogna fare qualche considerazione. Innanzitutto, si possono utilizzare caratteri maiuscoli, minuscoli e punti, ma non sono ammessi spazi. La spazio può essere sostituito dall’underscore. Sono nomi validi: Trasposizione, trasposizione, trASPOsizione, Trasposizione1, Trasposizione_tabella. Non lo sono, invece: Trasposizione tabella o Trasposizione 1 perché è presente uno spazio. Alla macro si può assegnare una combinazione di due tasti che, quando premuti ne determinano il lancio. Uno dei due tasti deve essere necessariamente il tasto Control, mentre il secondo (un carattere) deve essere digitato nella casella Scelta rapida da tastiera. È appena il caso di ricordare che analoghe sequenze vengono utilizzate da Excel come alternative a molte opzioni dei menu. Per questa ragione bisogna fare attenzione a non creare doppioni. Considerando che l’alfabeto è quello che è le possibilità sono piuttosto limitate ma fortunatamente Excel consente di discriminare fra caratteri maiuscoli e minuscoli, così ne consegue un aumento del numero di sequenze a disposizione. Nella parte inferiore della maschera è presente una finestrella in cui possono essere inserite eventuali annotazioni per documentare la macro. Si consiglia di utilizzarla perché rappresenta una possibilità in più per rendersi conto delle funzioni svolte dal programma senza doverlo necessariamente eseguire.

 

q       Concluso l’inserimento dei dati premere il pulsante Ok. Così facendo, si determina l’attivazione del registratore e la contemporanea visualizzazione nell’area di lavoro di due pulsanti affiancati (figura 4). Il primo, con sopra impresso un quadratino, consente di arrestare la registrazione in corso, mentre delle importanti funzioni associate al secondo ne parleremo quando sarà il momento.

q       A questo punto eseguire la procedura che si intende registrare: nella fattispecie la trasposizione della tabella che occupa la zona B6..E10. Evidenziarla con il mouse, aprire il menu Modifica e selezionare Copia. Fare clic sulla cella in cui dovrà essere posizionato l’angolo superiore sinistro della tabella trasposta (B18), aprire ancora il menu Modifica e selezionare la voce Incolla speciale. Così facendo viene aperta una maschera in cui si spunta il bottone Trasponi. Premendo il pulsante Ok si determina la trasposizione della tabella (figura 5). Posizionare il cursore in A1 per togliere l’evidenziazione della tabella. Si conclude così la nostra procedura, pertanto possiamo spegnere il registratore facendo clic sul pulsante dedicato (quello con sopra impresso il quadratino).

 

 

 

Durante la trasposizione della tabella, Excel ha lavorato  intensamente dietro le quinte per trasformare la procedura nel corrispondente programmino in Vba. Accertiamocene praticamente dando corso alla sua esecuzione, faremo così la conoscenza con la maschera per la gestione delle macro registrate.

 

 

Esecuzione della macro

Per eseguire la macro che abbiamo appena registrata (alzi la mano chi non ha voglia di vederla all’opera…) bisogna cancellare la tabella che abbiamo trasposto manualmente e posizionare il cursore in un qualunque punto del foglio di lavoro, quindi aprire il menu Strumenti, selezionare la voce Macro e optare ancora per Macro nel corrispondente sottomenu. Così facendo viene visualizzata la maschera di figura 6. A questo punto, ecco come procedere.

 

 

q       Selezionare il nome della macro da lanciare che, almeno nel nostro caso, è l’unico che compare nell’elenco.

 

q       Premere il pulsante Esegui. Se la macro è stata correttamente registrata, sotto la tabella originale, nella stessa posizione in cui l’avevamo creata in precedenza, dovrebbe comparire la nuova tabella trasposta. Il nostro programmino, e questo è il bello delle macro, può essere eseguito indefinitamente, e puntualmente otterremo ogni volta lo stesso risultato. Provare per credere…

 

Adesso che la macro funziona è legittima la curiosità di dare una sbirciata a quello che c’è dietro le quinte. In altre parole, al listato che la gestisce, ospitato nell’editor del Vba. Ecco come procedere.

 

q       Ripetere la procedura per aprire la maschera che gestisce le macro

 

q       Evidenziare il nome di quella di cui vogliamo esaminare il listato e premere il pulsante Modifica.

 

Con quest’ultima operazione si accede all’ambiente Editor (figura 7) con cui vale la pena di fare la conoscenza dal momento che è proprio qui che daremo vita alle nostre applicazioni non appena avremo familiarizzato appena un poco con la manipolazione delle macro registrate.

 

 

 

 


 

L’Editor del Vba

L’area di lavoro dell’Editor è suddivisa in tre sezioni. Quella a destra del video, che ospita il listato della macro, viene definita Modulo, e man mano che ne vengono creati altri viene assegnata loro una numerazione progressiva. Quello attuale è il Modulo1. In questo area verranno memorizzate le altre macro che si dovessero registrare nel corso della sezione di lavoro. Se si esce da Excel e si registra una nuova macro verrà creato un altro modulo numerato progressivamente, e così via. A fianco del modulo ci sono due finestre sovrapposte. In quella superiore è riportata la mappa del modello che stiamo sviluppando. In particolare, si noti il riferimento ai tre fogli di lavoro in cui si articola la nostra cartella, e il riferimento alla cartella dei moduli. Farvi sopra doppio clic per visualizzare quello che è stato appena creato per ospitare la nostra prima macro. Un doppio clic sul suo nome (Modulo1) determina la visualizzazione del corrispondente listato. La finestra inferiore, invece, è la cosiddetta finestra delle proprietà, in cui sono elencare le caratteristiche dell’oggetto evidenziato nella finestra soprastante. Su questo argomento ritorneremo in futuro, per il momento accontentiamoci di aver registrato la nostra prima macro e analizziamone listato.

 

Analisi della macro

Il nostro programmino è decisamente semplice, ma analizzandolo avremo l’occasione di imparare moltissime cose. Innanzitutto si nota che è…bilingue. Infatti, la sua struttura è in inglese, mentre quanto viene inserito dall’utente (il nome della macro, per esempio) viene riportato così come digitato. La macro si può considerare articolata in quattro sezioni: apertura, documentazione, corpo della macro, chiusura. Nel listato originale la numerazione non è prevista ma è stata introdotta da noi per facilitarne il commento.

 

  1. Sub Trasposizione()
  2. '
  3. ' Trasposizione Macro
  4. ' Macro registrata il [data registrazione macro] da [nome licenziatario]
  5. '
  6.  
  7. '
  8. Range("B6:E10").Select
  9. Selection.Copy
  10. Range("B18").Select
  11. Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _

     , Transpose:=True

  1. Range("A1").Select
  2. End Sub

 

La prima sezione va da dalla riga 1 alla riga 7 ed è strutturata sempre nello stesso modo, qualunque sia la macro che si è registrato. In particolare, la prima riga inizia con la parola chiave Sub (scritta in blu, come tutte le parole chiave) seguita dal nome che abbiamo a suo tempo assegnato alla macro (Trasposizione), e da due parentesi. La prima è aperta, mentre la seconda è chiusa. La riga 3 cita ancora il nome del programma facendolo seguire dalla parola Macro, mentre nella quarta riga sono riportate la data in cui la macro è stata registrata e il nome del titolare della licenza Excel. Si noti che entrambe le righe sono precedute da un apostrofo e sono di colore verde. La ragione è semplice. Trattandosi di note che non sono coinvolte nell’operatività della macro, vengono automaticamente isolate dal resto del programma. In particolare, l’apostrofo ha proprio la funzione di escluderle quando il listato viene eseguito e, proprio per questo, si rivela uno strumento preziosissimo per il profano che affronta il Vba con il timore reverenziale degli inesperti. Infatti, quando cominceremo ad assemblare fra loro singole macro registrate per creare programmi di un certo impegno, questa particolare peculiarità dell’apostrofo sarà utilissima per valutare la possibilità di escludere passi che riteniamo superflui dalle macro che intendiamo aggiungere. Inoltre, non ci stancheremo mai di raccomandarne l’utilizzo per documentare convenientemente i programmi che andremo a sviluppare. Così, quando per una ragione o per l’altra ci si rimette mano, sarà possibile, con una semplice occhiata, comprendere le funzioni svolte dai passi particolarmente complessi.  Ma ritorniamo all’analisi del listato. Le righe 2, 5, 6 e 7 sono vuote. Servono per distaccare convenientemente fra di loro le sezioni della macro. Per la verità, la riga 6 non sempre è vuota. Infatti, Excel la può utilizzare per dichiarare la sequenza di lancio che è stata eventualmente assegnata al momento della creazione della macro. E veniamo finalmente al corpo della macro che si presenta indentato rispetto al margine sinistro per distaccarlo dalle altre sezioni, e occupa le righe da 8 a 13. La riga 8 presiede all’evidenziazione della tabella e ci fa fare la conoscenza con una importante istruzione che utilizzeremo tutte le volte che dobbiamo portare il cursore su una cella o selezionare una zona del foglio di lavoro (Select). Conviene mandarne a memoria la sintassi perché ci capiterà di usarla moltissimo. La riga 9, invece, ha il compito di copiare la tabella che abbiamo appena evidenziato. Anche in questo caso veniamo a conoscenza di una nuova istruzione che ci conviene memorizzare o, quantomeno, prenderne buona nota. Infatti, la cosa importante non è ricordare la sintassi di una istruzione, il nome di una parola chiave, o come è strutturato un passo che esegue una certa operazione, bensì avere ben chiare in mente le loro funzioni. Quando ce ne vogliamo servire non dobbiamo fare altro che eseguirne la copia da una macro registrata in precedenza e incollarla in quella che stiamo sviluppando, operando, se necessario le eventuali modifiche. Queste ultime, sia ben chiaro, sono alla portata di tutti perché quasi sempre si riferiscono semplicemente all’eventuale nuova dichiarazione delle zone coinvolte nelle operazioni, oppure nella sostituzione di una istruzione o di una parola chiave. Insomma, si tratta di interventi facilissimi da eseguire. Tanto per fare subito un esempio liberatorio, se vogliamo che la nostra macro crei la tabella trasposta in J18 anziché in B18, basterà semplicemente inserire nel passo 8 le nuove coordinate. L’operazione è banale, tanto più che all’interno dell’Editor (ci eravamo dimenticati di dirlo) si opera ne più ne meno come nell’ambito di un tradizionale elaboratore di testi. Il passo successivo (riga numero 10) posiziona il cursore dove essere visualizzata la tabella trasposta, mentre il passo 11 è responsabile della trasposizione vera e propria. La sua complessità è solo apparente dal momento che sono riportati tutti i settaggi previsti nella maschera Incolla speciale per l’opzione Trasponi. Con un po’ di esperienza potremo individuare le istruzioni ridondanti, ma per il momento lasciarle non guasta. Vale però la pena di notare che la riga è stata spezzata in due. L’elisione ha avuto luogo dopo il temine False e prima della virgola che lo separava dal resto della macro. Pertanto, al termine dello spezzone è stato digitato uno spazio seguito dall’underscore. Ed eccoci all’ultima riga della sezione operativa, la 12, che riporta il cursore in A1 per togliere l’evidenziazione alla tabella trasposta. Come si vede è esattamente uguale al passo 8, cambiano solo le coordinate di cella. La macro (come tutte le macro) si conclude con la parola chiave End Sub che rappresenta la fine del nostro programma. A questo punto, ne dovremmo sapere abbastanza per cimentarci con qualche registrazione di prova. Per esempio, possiamo assegnare il grassetto e un colore ai dati ospitati nella tabella, creare un grafico utilizzando il contenuto di quest’ultima, e così via… La procedura è esattamente uguale a quella che abbiamo descritta. Una volta registrata una macro raccomandiamo caldamente di accedere all’Editor e di analizzarne pazientemente i vari passi. Avremo certamente l’occasione di aumentare le nostre conoscenze.

Conclusioni

Dopo aver letto il presente articolo si dovrebbe essere in grado di registrare semplici macro e di eseguirle, nonché di procedere a qualche modifica elementare. I lettori più attenti, però, si saranno accorti che le macro che abbiamo registrato presentano alcune limitazioni: due in particolare. La prima è rappresentata dal fatto che operano sempre sulle stesse posizioni del foglio di lavoro, pertanto, volendo fare un esempio, se la nostra tabella dovesse subire modifiche (ingrandirsi, per esempio) il nostro programmino non è in grado di accorgersi delle aumentate dimensioni e opererebbe sempre sulla stessa zona. La seconda limitazione, invece, è quella che non sono in grado di ricevere dati dall’esterno e quindi non se ne può pilotare il decorso. In altre parole, le nostre macro, almeno per il momento non sono interattive. Nel prossimo articolo vedremo come ovviare alla prima limitazione, inoltre descriveremo passo passo la procedura per automatizzare l’interrogazione dell’archivio ospitato nel modello esemplificativo (Monitoraggio vendite) che accompagna il presente articolo. In particolare, verrà spiegato come registrare la corrispondente macro ed associarne il lancio alla pressione di un pulsante. Dell’interattività, invece, ce ne occuperemo più avanti.