guida a visualbasic for applications

Post on 22-Nov-2015

46 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

Guida a visual basic

TRANSCRIPT

  • sommario

    Pc Open Gennaio 2001164

    Allinterno di Microsoft Office opera unpotente linguaggio di programmazio-ne, il Vba (acronimo di Visual Basic forapplication), che ha sostituito le vecchie ma-cro di cui si avvantaggiavano le singole ap-plicazioni ora raccolte nel pi integrato ecooperativo ambiente della suite.

    Ma che cosa sono le macro, e cosa offredi pi rispetto a queste il Vba? Analizzandole caratteristiche delle une e dellaltro, ladifferenza apparir chiara. Le prime si pre-sentano come un insieme di comandi che,quando richiamati, vengono eseguiti unodopo laltro per eseguire automaticamenteuna determinata procedura: stampare unatabella, fondere un documento Word conun archivio indirizzi per preparare delle let-tere circolari, eseguire una ricerca in un da-ta base Access o in un archivio Excel, e co-s via. Il Vba, invece, rispetto alle macro siavvantaggia del fatto di essere un vero eproprio linguaggio di programmazione gra-

    zie al quale si comunica in maniera pi effi-cace a Excel, Word, Access, o Powerpoint,quello che devono fare. Sostanzialmente irisultati sono gli stessi, ma il fatto di poterdialogare tramite un linguaggio significa di-sporre di uno strumento decisamente pipotente e versatile che da la possibilit disviluppare applicazioni anche molto com-plesse che vanno ben al di la dellautoma-zione di una semplice procedura ricorsiva.

    In ogni caso, il fatto che la funzione dellemacro e del Vba, seppure diversamenteesplicata, sia la stessa, ossia automatizzareoperazioni pi o meno complesse, contri-buisce a creare una certa confusione a li-vello di terminologia. Infatti, un sempliceinsieme di istruzioni in Vba viene ancoradefinito ufficialmente con il termine macro,forse perch si esita a sfoderare per locca-sione il pi pomposo sostantivo program-ma. Fra laltro, tale terminologia viene man-tenuta anche nei menu operativi delle ap-di Alberto Nosotti

    IL REGISTRATOREDELLE MACROIl registratore delle macro che operanellambito di Microsoft Office, sia purecon qualche limitazione, consentedi trasformare una qualsiasi proceduraeseguita al computer nel corrispondenteprogramma in Vba. Le macro cos createpossono essere utilizzate singolarmentee richiamate per automatizzare semplicioperazioni ricorsive, mentre seopportunamente assemblate danno vitaad applicazioni anche impegnative.

    EXCEL: REGISTRARE UNPROGRAMMA IN VBAIl registratore di Excel piuttosto facile da utilizzare e opera in modoassolutamente analogo a quello di Microsoft Powerpoint. Le macro generate si gestiscono attraversouna speciale maschera che consente di lanciarle, modificarle, o cancellarle. I corrispondenti listati sono abbastanzafacili da interpretare, e la loro analisirappresenta il punto di partenza percimentarsi con i primi rudimenti del Vba.

    ANATOMIA DI UN LISTATOLanalisi attenta del risultato dellaregistrazione di una macro (il listato, nel gergo degli addetti ai lavori) consentedi apprendere in modo addiritturadivertente lutilizzo del Vba. Se poi consideriamo che una macro puessere creata utilizzando parti di altriprogrammi, con semplici operazioni di copia e incolla si possono realizzaresenza troppe difficolt applicazioni anchepiuttosto importanti.

    Forse non tutti sanno che nelle versioni pi recenti di Office c un potente e versatilelinguaggio di programmazione. il Vba, con il quale sipu personalizzare il programma secondo le proprie necessit. Ecco come utilizzarlo in pratica

    [ddoossssiieerr]Il Visual Basic di Office

    VISVISPadroni diConsigli per farsi un Office su misura

    1/14

  • plicazioni in cui si articola Office: e lo stes-so faremo anche noi nel presente Dossier,con buona pace dei puristi del Vba, anchese siamo i primi a riconoscere limpro-priet. Nelle mani di un programmatore ilVba si rivela un potente strumento di svi-luppo, ma anche chi con la programmazio-ne non ha (e non vuole) avere nulla a chefare pu ugualmente usarlo con soddisfa-zione per mettere insieme semplici appli-cazioni, caratterizzate per da un decisotocco di professionalit.

    Insomma, anche affrontando lausteramateria in modo anticonvenzionale, macon creativit e fantasia (condite con unbel po di pazienza) si pu arrivare a dareuna sbirciatina nel sancta sanctorum dellaprogrammazione, in barba di chi ritienepresuntuosamente che questa sia materiasolo per iniziati. Ma c di pi. Noi lo fare-mo addirittura divertendoci, alla faccia deipresuntuosi di cui sopra

    Pc Open Gennaio 2001165

    IL VBA DI MICROSOFT WORDAnche se la struttura del Vba sempre la stessa indipendentementedallapplicazione nellambito della qualeopera, si possono presentare differenzeformali. Per esempio, la registrazione di una macro di Word prevede procedurediverse da quelle che caratterizzano la stessa operazione allinterno di Excel o Powerpoint, mentre i listati si rivelanosolitamente un po pi complessi e difficilida interpretare.

    POWERPOINT:PRESENTARE CON IL VBALutilizzo del Vba nellambito del modulodi presentazione di Office si rivela preziosoper automatizzare molte delle operazioniricorsive che si incontrano in fase di realizzazione di una presentazionepiuttosto che nel corso della suaesecuzione. Lesempio pratico che vienepresentato si riferisce allautomatizzazionedella procedura di importazione di una tabella Excel allinterno di una slidedi Powerpoint.

    ACCESS: PER MOLTI MA NON PER TUTTIIl data base che opera allinterno della versione Premium di Microsoft Officepu essere considerato, grazie al Vba, un potente e versatile generatore di applicazioni gestionali dalla strutturaanche molto sofisticata. La programmazione delle sue funzionalit piuttosto complessa, ma grazie ad unospeciale modulo per la generazione di macro, non difficilissimo crearesemplici applicazioni.

    >>

    UAL BASICUAL BASIC

    2/14

  • che vengono usati. In questi casi, infatti, lu-tente ancora costretto a intervenire ma-nualmente, e le operazioni richieste, al di ladella stampa di un documento o della rea-lizzazione di un grafico, potrebbero anchenon essere alla sua portata, limitando cosinesorabilmente il numero delle personeche possono servirsi dellapplicazione.

    Se si sviluppa unopportuna interfaccia,invece, e si rendono automatiche tutte leoperazioni ricorsive previste, gli orizzontidi fruibilit del modello si allargano note-volmente, i possibili errori si riducono pro-porzionalmente al grado di automazione, esi risparmia tempo prezioso. Ecco quelloche si pu ottenere con il Vba. Il bello cheproprio grazie alle caratteristiche delloffi-celinguaggio gli obiettivi da raggiungerepossono essere commisurati con il livellodella nostra preparazione. In altre parole,anche chi proprio esperto non pu otte-nere risultati gratificanti. A patto, ovvia-mente che non voglia subito strafare.

    La tecnica che deve utilizzare per lap-proccio allardua materia tanto semplicequanto proficua. Baster cominciare con ilregistrare semplici macro, quindi accedereallEditor del Vba in cui viene automatica-mente memorizzato il corrispondente lista-to (linsieme delle istruzioni in cui si artico-la il programma stesso). A questo punto,analizzando pazientemente questultimo cisi pu rendere direttamente conto, e in mo-do pi intuitivo, del significato dei vari co-

    [ddoossssiieerr]Il Visual Basic di Office

    MMIICCRROOSSOOFFTT EEXXCCEELL::

    ATTIVARE IL REGISTRATOREAprire il menu Strumenti, selezionare la voce Macro, e nel sottomenu optare per Registra nuova macro. Assegnare un nome alla macro. Nella casella di testoMemorizza macro in optare per Questacartella di lavoro. Premere Ok per attivareil registratore. Nellarea di lavoro vengonovisualizzate due piccole icone. Eseguire la procedura da memorizzare e fare clic sulla prima icona per concludere la registrazione.

    Pc Open Gennaio 2001166

    IILL RREEGGIISSTTRRAATTOORREEDDII WWOORRDD

    La registrazione di una macro Wordprevede una procedura un po diversa daquella descritta per Excel. In particolare, lastruttura della maschera di denominazionedella macro differente, e in fase diregistrazione non si pu utilizzare il mouseallinterno del documento. Le macropossono essere associate a una voce dimenu, oppure lanciate premendocontemporaneamente al tasto Control untasto carattere.

    LA REGISTRAZIONE DELLE MACROSe il linguaggio Vba, o le nuove macro di

    Office, se preferiamo chiamarle cos, pos-sono essere utilizzate anche dai menoesperti, lo dobbiamo a una provvidenzialefunzionalit di cui dispongono le applica-zioni che fanno parte della suite: il registra-tore. Grazie ad esso, possibile memoriz-zare una qualsiasi procedura eseguita alcomputer, convertendola automaticamentenella corrispondente macro che possiamopoi eseguire a piacere tutte le volte chesar necessario, o di cui utilizzare i passiche ci interessano per creare da zero altriprogrammini.

    La disponibilit di questa benvenuta fun-zione, congiunturalmente al fatto che il Vba caratterizzato da una spinta modularit(vale a dire che una applicazione dallastruttura anche molto complessa pu esse-re suddivisa in macro elementari che sipossono impostare e gestire con relativa fa-cilit), rendono possibile allargare notevol-mente la base degli aspiranti programma-tori. Infatti, dal momento che lambiente incui si sviluppa un programma (il cosiddet-to Editor del Vba) pu essere assimilato adun tradizionale elaboratore di testi, con laprovvidenziale complicit della funzione diCopia e Incolla si possono sviluppare interemacro semplicemente prelevando i passisignificativi da altri programmi opportuna-mente registrati in precedenza.

    Infine, se pensiamo che dallinterno di unprogramma se ne pu richiamare un altrocitandone semplicemente il nome che gli stato assegnato (o replicandone i passi checi interessano), le cose si fanno decisamen-te interessanti. Per evitare di suscitare faci-li entusiasmi, per, diciamo subito che il re-gistratore delle macro non pu essere con-siderato lelisir della programmazione. Mache sia uno strumento che consente di av-vicinarsi senza traumi e con una certa gra-tificazione a questo mondo solo apparente-mente esclusivo, decisamente s.

    Prima di usare questa preziosa chiaveper illuminare almeno in parte i misteri dellinguaggio di Office, vale per la pena dispendere qualche parola per descrivere,sia pure in sintesi, cosa si pu fare anchesolo con i primi rudimenti del Vba: per mol-ti sar una gradita sorpresa

    OFFICE E IL VBAUtilizzando il Visual Basic for application,

    indipendentemente dal fatto che si lavoricon Word, Excel , Access o Powerpoint, sipossono impostare interfacce utente anchemolte sofisticate, tali e quali a quelle chesiamo abituati ad utilizzare nelle applica-zioni tradizionali, grazie alle quali diventasemplice gestire automaticamente anchesituazioni molto complesse. Conviene fareun esempio. Lo sviluppo di un modello difatturazione, di un sistema di archiviazione,o di una applicazione per formulare previ-sioni di vendita, se presuppone il solo uti-lizzo di formule o espressioni pu solo por-tare a risultati limitati che non fanno giusti-zia delle grandi potenzialit dei programmi

    mandi e delle istruzioni che in esso com-paiono. Ci si pu cos impadronire poco apoco, e quasi senza accorgercene, degli es-senziali rudimenti della sintassi del Vba.

    A chi non fosse daccordo ricordiamoche pur avendo a che fare con il rigore diun linguaggio di programmazione, anchepoche conoscenze, ma essenziali, si dimo-strano sufficienti per interpretarne la dina-mica, almeno per quel tanto che ci basta.Lo dice persino la famosa legge che prendeil nome da Wilfredo Pareto, leconomistache circa un secolo fa dimostr che per po-ter tenere sotto controllo buona parte diuna qualsiasi situazione sufficiente aver-ne una conoscenza parziale, purch signifi-cativa. La legge di Pareto arriva persino aquantificare tali rapporti, indicandoli ap-prossimativamente in 80 e 20. Vale a direche se conosciamo un quinto circa deglielementi veramente significativi di un pro-blema, possiamo considerarlo risolto inbuona parte. Ne vogliamo una prova?

    Siamo italiani e parliamo correttamentela nostra lingua, ma delle decine di migliaiadi parole di cui ricco lo Zingarelli o ilDevoto ne utilizziamo, nel migliore dei casi,poco pi di quattromila! Chi non fosse an-cora convinto che la legge del buon Pareto(viene definita legge proprio perch co-munque applicabile) possa valere ancheper il Vba, destinato a ricredersi dopoaver letto il presente dossier. Ne siamo cer-ti: non allottanta, ma al cento per cento!

    3/14

  • Pc Open Gennaio 2001167

    DDEENNOOMMIINNAARREE UUNNAA MMAACCRROO,, RREEGGIISSTTRRAARRLLAA,, EESSEEGGUUIIRRLLAA EE AANNAALLIIZZZZAARRLLAA

    ESEGUIRE UNA MACROREGISTRATAPer eseguire una macro registrata bastaaprire il menu Strumenti, scegliere la voceMacro, e nel sottomenu ancora Macro.Nel box che viene visualizzato selezionareil nome della macro da lanciare e fare clicsul pulsante Esegui. Se si dovesseroverificare degli errori si accedeautomaticamente allEditor del Vba, dove possibile procedere alle modifiche delcaso. Se non siamo esperti, per, meglioeliminare la macro e registrarla di nuovo.

    ANALIZZARE IL LISTATODELLA MACROAprire il menu Strumenti, selezionare la voce Macro, e nel sottomenu optareancora per Macro. Nel box visualizzato,selezionare il nome della macro di cui si vuole esaminare il listato e premere il pulsante Modifica. Si accede cos allEditor del Vba in cui visualizzato il suddetto listato, che pu essere modificato con le familiarioperazioni di editing previste daitradizionali elaboratori di testo.

    PER AVERE UN AIUTODALLA GUIDA IN LINEAChi vuole documentarsi in generale sulla registrazione delle macro (e su queste ultime in particolare),dallinterno dellapplicazione che si stautilizzando deve aprire la guida in linea e ricercare Registrazione macro, Macro,Editor Vba, digitandoli uno alla volta nella casella Come procedere. Premendo il pulsante Cerca, nella finestra sottostante vengono elencatitutti gli argomenti individuati.

    Se un programmatore esperto, buon perlui, pu scrivere un programma in Vbadigitando una dopo laltra le istruzioniin cui si articola, chi vuole familiarizzare conil linguaggio di Office deve farne la cono-scenza attraverso il registratore delle ma-cro. Ad esso, sia ben chiaro, fanno ricorsoanche gli esperti quando vogliono rispar-miare tempo. Infatti, anzich digitare diret-tamente le istruzioni corrispondenti ad unacerta procedura, risulta pi comodo regi-strarla direttamente, copiarne il corrispon-dente listato, ed incollarlo poi nella nuovamacro che si sta sviluppando. Fra le appli-cazioni di cui si compone Office, solo Excel,Word, e Powerpoint, consentono di creare

    automaticamente un programma in Vba re-gistrando il corrispondete listato. ConAccess, invece, le cose sono un po pi com-plicate anche se si pu contare su una pro-cedura guidata. Inoltre, necessario opera-re un distinguo a livello delle tre applicazio-ni che dispongono del registratore. Se perExcel e Powerpoint le procedure di utilizzosono quasi le stesse, il registratore di Word,di cui parleremo separatamente, presentaqualche differenza rispetto ai due suddettiprogrammi, inoltre, non in grado di memo-rizzare le operazioni eseguite con il mouseallinterno del testo: il topolino viene addi-rittura disattivato e pu solo operare a livel-lo di menu. Comunque, il risultato finale in

    tutti e tre i casi la generazione automaticadel listato di un programma che esegue pun-tualmente, quando richiamato, la procedurache stata registrata. Cos, se in ambienteExcel registriamo la creazione di un grafico,la macro risultante ripeter passo passo lenostre mosse: dallevidenziazione della zonadati al posizionamento del diagramma, edalla specifica del tipo di grafico da realizza-re alla sua creazione. E ancora, se abbiamouna tabella che viene aggiornata quotidiana-mente aggiungendovi nuovi dati, e che allafine della settimana deve essere stampata,sviluppando una opportuna macro bastersemplicemente pigiare un pulsante o impar-tire un comando per automatizzare intera-mente le operazioni di stampa. Per il primodei nostri esempi ci rifaremo al registratoreche opera nellambito di Microsoft Excel, lecui procedure di utilizzo valgono, come ab-biamo detto, anche per Powerpoint.

    Facciamo un esempio pratico. Vediamocome usare il registratore di Excel perimpostare una semplicissimo pro-gramma in Vba, che assegni il grassetto aidati presenti in una tabella. Aprire il menu

    Strumenti, selezionare la voce Macro, quin-di optare per Registra nuova macro nel cor-rispondente sottomenu. Si accede cos adun box in cui si assegna un nome al pro-gramma che stiamo registrando. Per il mo-

    mento possiamo lasciare le cose cos co-me stanno, accettando per la macro il no-me proposto da Excel: Macro1, se questa la prima che registriamo. Se, invece, vo-gliamo assegnarle un nome personalizzatosi tenga presente che non sono ammessigli spazi. Se proprio fosse necessario pren-derli in considerazione si ricorra allunder-score. Pigiando il pulsante Ok si determinalaccensione del registratore, e al tempo

    | Le macro registrate |

    | Registrare in Vba |

    >>

    4/14

  • Pc Open Gennaio 2001168

    stesso viene visualizzata una minibarracomposta da due icone: quella che ci inte-ressa di pi ha sovraimpresso un quadrati-no. il segnale che possiamo incominciare.

    Selezioniamo la nostra tabella (che oc-cupa la zona A1..D4), assegniamo il gras-setto facendo clic sulla icona dedicata del-la barra strumenti, quindi portiamoci sullacella A1 per eliminare levidenziazione del-la zona. Attenzione, molto importante as-segnare il grassetto con la procedura cheabbiamo appena suggerita, perch se si uti-lizzasse la maschera per lassegnazione de-gli stili il listato della macro risulterebbe

    [ddoossssiieerr]Il Visual Basic di Office

    molto pi complicato da interpretare. Chivuole provare, si accomodi Pertanto,facciamo tesoro di questo consiglio, equando registriamo un programma in Vbautilizziamo per quanto possibile le iconedella barra strumenti, almeno sino a quan-do non saremo pi esperti.

    Ma ritorniamo alla macro. A cose fattepossiamo spegnere il registratore agendosulla prima icona della minibarra (quellacon il famoso quadratino). tutto. Da que-sto momento la nostra macro (o se prefe-riamo, linsieme delle istruzioni in cui si ar-ticola) custodita nella memoria di Excel

    e potr essere richiamata in qualsiasi mo-mento. Vediamo come. Prima, per, toglia-mo il grassetto ai dati della tabella, altri-menti non potremo renderci conto delbuon funzionamento del programmino.

    Riapriamo il menu Strumenti, selezionia-mo la voce Macro, e optiamo ancora perMacro nel corrispondente sottomenu. Cosfacendo si accede a una maschera in cui so-no elencate tutte le macro memorizzate. Nelnostro caso, ovviamente, solo quella cheabbiamo appena registrato. Selezioniamolae facciamo clic sul pulsante Esegui. Dettofatto, il grassetto viene assegnato ai dati del-la tabella. ovvio che un programmino diquesto genere non serve un gran che, maper comprendere la dinamica operativa delVba si rivela utilissimo. Infatti, se ne esplo-riamo il listato (lo faremo fra poco) po-tremo apprendere molte cose: e sulle ma-cro, e su come migliorarle.

    A chi considerasse banali gli esempi pro-posti, ricordiamo che tali sono perch han-no il compito di chiarire i principi di con-cetti poco noti, ma le stesse tecniche si ap-plicano ne pi ne meno anche a situazionipi complesse. In ogni caso, per saperne su-bito di pi sulla registrazione delle macro,aprire la guida in linea dellapplicazione chesi sta usando, accedere alla scheda di ricer-ca libera e digitare Registrazione macro nel-la casella Come procedere. Premendo il pul-sante Cerca, nella finestra sottostante sonoelencati gli argomenti da consultare.

    Per esaminare il listato di una macroregistrata (o sviluppata direttamen-te) con una applicazione Office dob-biamo accedere al cosiddetto Editor delVba, lo speciale modulo in cui vengonomemorizzate le macro.

    La procedura sempre la stessa indi-pendentemente dal programma che si uti-lizza: basta un clic sul pulsante Modificadella maschera cui si accede dal menuStrumenti selezionando Macro, e poi anco-ra Macro nel corrispondente sottomenu.

    Si passa cos ad una schermata dallastruttura piuttosto complessa, nella cuiparte destra dovrebbe comparire in bellamostra il listato del nostro programma. Secos non fosse, nella finestra di sinistra fa-re clic due volte su Vba Project, quindi sul-la cartella Moduli (se non aperta) e apri-re il Modulo1.

    Se ci riferiamo alla macro che abbiamoregistrato poco fa in ambiente Excel ci vie-ne proposto il seguente listato (la numera-zione stata inserita per facilitarne il com-mento):

    1. Sub Macro1()2. 3. Macro1 Macro

    4. Macro registrata il 5. 6.7. 8. Range(A1:D4).Select9. Selection.Font.Bold = True10. Range(A1).Select11. End Sub

    A questo punto, vale la pena di ricorda-re che al momento di registrare la macroabbiamo insistito sul fatto che lassegna-zione del grassetto doveva essere fattautilizzando licona dedicata della barrastrumenti e non gi tramite la mascheradi attribuzione degli stili.

    Se avessimo optato per tale procedurail listato risultante sarebbe stato moltopi complesso. Infatti, sarebbero stateprese in considerazione tutte le possibi-lit offerte dalla maschera in tema di stili,specificando poi accanto ad ognuna di es-se la parola chiave True o False per signi-ficare se quellattributo doveva essere omeno assegnato.

    Nel nostro caso, visto che lassegnazio-ne una sola, tutti gli altri passi della ma-cro non solo si rivelano inutili, ma addi-rittura compromettono la leggibilit del li-stato. Ma ritorniamo al programma origi-

    nale, decisamente pi snello e leggibile(grazie allintuizione di aver utilizzato li-cona grassetto), ed esaminiamolo pi davicino. La prima cosa da notare che scritto inangloitaliano!

    Questo perch anche nelle versioni na-zionalizzate di Excel il codice restatoquello originale. La riga 1 inizia con la pa-rola chiave Sub seguita dal nome della ma-cro e dalle parentesi aperte e chiuse (tuttele macro cominciano cos).

    Le righe da 2 a 7, invece, sono vuote o dicommento, e come tali sono precedute dauna virgoletta che le esclude dalla esecuti-vit del programma (e sono di colore ver-de). In particolare, la riga 3 ribadisce il no-me della macro, mentre la 4 denuncia ladata della registrazione e il nome del tito-lare della licenza di Excel. La riga 6 an-chessa vuota (se la riga vuota, la virgo-letta opzionale) e viene usata dal pro-gramma per dichiarare, se fosse stata spe-cificata al momento della registrazione, lasequenza di controllo con cui possibilelanciare la macro da tastiera.

    Noi non labbiamo specificata, e perquesto la riga vuota. Ma veniamo ai pas-si di programma veri e propri. La riga 8 de-termina la selezione della tabella, mentre

    | Anatomia di un listato |

    Analizziamo i listati - Dallesame attento del listato di una macro si possono trarre utili informazioni sul significatodi parole chiave e funzioni, nonch penetrare poco per volta la dinamica operativa della sintassi del Vba

    01. Sub Intestazione_Rapporto()02. 03. Intestazione_Rapporto Macro04. Macro registrata il 10/11/00 da ....05.

    06. Selection.TypeText _Text:=Rapporto giornaliero del

    07. Selection.InsertDateTime _ DateTimeFormat:=d MMMM yyyy, _InsertAsField:=False,DateLanguage:=wdItalian,_

    CalendarType:=wdCalendarWestern, _ InsertAsFullWidth:=False

    08. Selection.MoveLeft Unit:=wdCharacter, _ Count:=41, Extend:=wdExtend

    09. Selection.Font.Bold = wdToggle 10. Selection.Font.Size = 2011. Selection.ParagraphFormat.Alignment = _

    WdAlignParagraphCenter 12. Selection.MoveDown Unit:=wdLine, _

    Count:=113. Selection.TypeParagraph14. Selection.TypeParagraph15. Selection.ParagraphFormat. _

    Alignment = wdAlignParagraphLeft16. Selection.Font.Size = 1417. End Sub

    5/14

  • AASSSSOOCCIIAARREE UUNNAA MMAACCRROO AADD UUNN PPUULLSSAANNTTEE>>

    DISEGNAREIL PULSANTEUna macro, creata con qualsiasiapplicazione, pu essere associata a un pulsante. Aprire il menu Visualizza,selezionare Barre strumenti, quindi optareper Visual Basic. Viene visualizzata una barretta con quattro icone. Premere la seconda per visualizzare il pannello degli strumenti del Vba. Fare clic sullicona Pulsante, e disegnareun rettangolo. Rilasciare il tasto del mouseper visualizzare il pulsante.

    COLLEGARE LA MACROAL PULSANTEFare clic destro sul pulsante. Selezionare nel menu Visualizza codice. Nel codice Vba del pulsante, inseriresubito dopo il primo passo il nome della macro da eseguire, o ricopiarne il listato privo del primo e ultimo passo.Ritornare allapplicazione, fare clicsullicona Squadra e matita per disattivarla(creando il pulsante si era attivataautomaticamente), e premere questultimoper lanciare la macro.

    PERSONALIZZARE IL PULSANTEFare clic sullicona Squadra e matita(a cose fatte disattivarla). Quindi, fare clicdestro sul pulsante. Nel menu visualizzatoselezionare Propriet per accedere alla omonima casella che consente di definire numerosi parametri del pulsante. In particolare, la voce Caption ne gestisce letichetta(digitare il testo nella cella), la voce BackColor il colore, e le voci Font e Fore Colorgli stili e i colori.

    la 9 le assegna il grassetto. La riga 10 ci ri-corda che a cose fatte avevamo riposizio-nato il cursore in A1, e la 11 conclude de-gnamente la macro.

    Anche questultimo passo standardper tutti i programmi. Da questa pur sem-plice analisi si intuisce che una macro re-gistrata presenta due limitazioni. Per pri-ma cosa, tutte le volte che verr eseguita,indipendentemente da dove si trova il cur-sore nellambito del foglio di lavoro, evi-denzier sempre la zona A1..D4. Inoltre,non in grado (almeno per il momento) diutilizzare informazioni che le provenganodallesterno, nel senso che non possibileforzarla ad assegnare un altro attributo al-linfuori del grassetto. Nulla, per, ci vietadi modificare opportunamente il program-mino al fine di utilizzarlo per operare di-versamente.

    Cos, dal momento che lEditor del Vbasi comporta come un qualsiasi elaborato-re di testi, possiamo sostituire le coordi-nate della tabella con un altro indirizzo dizona, mentre sostituendo la parola chiaveBold (responsabile dellassegnazione delgrassetto) con Italic, per esempio, si de-termina lassegnazione del corsivo. A que-sto punto, dovreste saperne abbastanzaper cominciare a creare qualche program-mino personalizzato.

    Il segreto sta tutto nel registrare pi ma-cro, esaminarne il listato per impararenuovi comandi e parole chiave, quindi

    operare le opportune sostituzioni nel li-stato di base. Addirittura, con semplicioperazioni di taglia e incolla, si possonotrasferire da una macro allaltra interi pas-si di programma. In ogni caso si procedaper gradi, traendo insegnamento dagli ine-vitabili errori. Acquisita la necessaria fa-miliarit con le tecniche di base ci potre-mo cimentare con qualcosa di pi com-plesso. Concludiamo con qualche consi-glio. Se, esercitandosi a sviluppare propriemacro, lelenco di quelle visualizzate nellamaschera che le gestisce si dovesse allun-gare troppo ingenerando confusione, raccomandabile fare un po di pulizia.

    Ecco come si fa. Selezionare il nome del-la macro da cancellare e fare clic sul pul-sante Elimina. Le macro devono esserecancellate una per volta. Infine, se durantelesecuzione di uno dei nostri programmisi dovessero verificare errori, non insiste-re. Premere Fine nelleventuale box di av-vertimento, eliminare la macro e crearneuna nuova.

    Purtroppo, non siamo abbastanzaesperti per intervenire in modo pi mira-to. Chi se la sente pu provare a consulta-re laiuto dellEditor. Ma non si faccia illu-sioni: roba da professionisti. Infine, perevitare la generazione di listati pesanti epoco leggibili, utilizzare appena possibilele icone della barra strumenti e non le vo-ci da menu per compiere determinate ope-razioni.

    | Il Vba di Microsoft

    Word |Anche le macro di Word si possonocreare direttamente digitando uno do-po laltro i passi della procedura inVba, o registrando le corrispondenti opera-zioni. Questultimo, come sempre, il me-todo decisamente pi rapido e facile.Purtroppo, per, come si detto, va benesolo per cominciare. Infatti, se vogliamoqualcosa di pi dai nostri programminidobbiamo metterci qualcosa di nostro. Mavediamo come si utilizza il registratore diWord, del quale abbiamo a suo tempo anti-cipato una limitazione: quella di non me-morizzare le azioni del mouse allinternodel testo ma solo quelle che comportanolutilizzo dei menu della barra strumenti.Addirittura, mentre si registra una macro, ilmouse non pu essere utilizzato allinternodel documento. Come al solito ci serviremodel registratore per memorizzare una pro-cedura semplicissima, cos sar pi facilecomprenderne la dinamica operativa, ma

    Pc Open Gennaio 20011696/14

  • ne solo momentanea, e viene ripristinatase la macro viene cancellata o le si assegnauna nuova sequenza di controllo. E venia-mo alla casella Memorizza macro in.Aprendo lelenco a discesa ad essa associa-to si pu collegare la macro unicamente aldocumento attivo, oppure al foglio stile nor-mal.dot che viene automaticamente carica-to contestualmente allapertura di un nuo-vo documento.

    Se si opta per questa seconda possibilitil nostro programma in Vba pu essere ese-guito dallinterno di un qualsiasi documen-to. Pertanto, tale opzione si rivela partico-larmente indicata quando si sviluppanomacro che eseguono compiti di caratteregenerale, come lassegnazione di uno stile,

    nulla ci vieta, pi avanti, di cimentarci conoperazioni pi impegnative. In questo caso,per, la semplicit maggiormente dobbli-go dal momento che il Vba di Word un popi difficile da interpretare. Immaginiamo,allora, di voler automatizzare la proceduraper lintestazione di un rapporto giornalie-ro, prevedendo la digitazione del titolo, ladichiarazione della data corrente, e lasse-gnazione di un formato ad entrambi.

    Ecco come procedere. Dopo aver porta-to il cursore nella posizione in cui deve es-sere inserita lintestazione del rapporto,aprire il menu Strumenti di Word e selezio-nare Macro. Viene visualizzato un sottome-nu nel quale si opta per la voce Registranuova macro. Cos facendo si determinalattivazione del registratore delle macro e,al tempo stesso, viene aperta la mascheraper la loro gestione, che si presenta artico-lata in varie sezioni. Nella prima presentela casella Nome macro, destinata ad ospita-re il nome di quella che stiamo per regi-strare. Nellassegnazione di un nome nonusare, come nel caso di Excel, gli spazi che,se necessari, devono essere rimpiazzaticon lunderscore. Nella seconda sezione, in-vece, si trovano due pulsanti.

    Il primo consente di assegnare la macroad una voce del menu operativo di Word,mentre il secondo da laccesso ad una ma-schera in cui possibile specificare una se-quenza di controllo (Control+carattere) perlanciare la macro dalla tastiera una voltache stata registrata. Ovviamente, per lan-ciare un programma, si pu sempre aprirela maschera per la gestione delle macro, se-lezionare quello che ci interessa e premereil pulsante Esegui. Chi opta per il lancio datastiera, per procedere alla definizione del-la sequenza di controllo deve operare nelseguente modo. Premere il pulsante con so-pra impressa la tastiera. Nella casella di te-sto Nuova combinazione della mascherache viene mostrato digitare, tenendo pre-muto contemporaneamente il tasto Control,il carattere da usare nella combinazione.

    Si tenga presente che se la sequenza fos-se gi stata assegnata, o comunque utiliz-zata da Word, lassegnazione originale vie-ne disattivata. Ovviamente, la disattivazio-

    [ddoossssiieerr]Il Visual Basic di Office

    Pc Open Gennaio 2001170

    LLAANNCCIIAARREE LLEE MMAACCRROO CCOONN LLEE SSEEQQUUEENNZZEE DDII CCOONNTTRROOLLLLOO

    Una macro di Excel, o Word, pu esserelanciata digitando alla tastiera una sequenza dicontrollo, cosiddetta perch si tratta di unacombinazione di tasti: il tasto Control, perlappunto, e un carattere, che vanno premutientrambi contemporaneamente. Per quantoriguarda Excel, lassegnazione ha luogo nellastessa maschera in cui si procede alladenominazione della macro (figura a), ed sufficiente indicare il carattere da utilizzareinsieme a Control nella celletta denominataScelta rapida da tastiera. Se si utilizza Word,invece, nella maschera di denominazionebisogna premere il pulsante con sopraimpressa una tastiera per accedere al box incui si pu specificare la suddetta sequenza(figura b). In questo caso, il carattere che faparte della sequenza pu essere combinatonon solo con il tasto Control ma anche conMaiuscole e Alt. Se la sequenza gi stataassegnata, o fa parte di quelle utilizzate daWord, il fatto viene segnalato. Se si optaugualmente per lassegnazione la sequenzapreesistente viene disattivata, sino a che quellanuova non sar eliminata.

    A

    B

    di un formato pagina, e cos via, che pre-scindono da situazioni specifiche. Operatetutte le scelte fra quelle proposte nella ma-schera si preme il pulsante Chiudi. Cos fa-cendo, si riprende il controllo dellambien-te Word e si pu finalmente iniziare a regi-strare la macro. Frattanto, il cursore delmouse si trasformato nel simbolo di unregistratore magnetico, e nellarea di lavorosono comparse due icone.

    Con la pressione della prima si concludela registrazione, mentre con la seconda la simette in pausa. Le funzioni di questa se-conda icona sono decisamente preziose.Infatti, dal momento che il mouse non at-tivo nellarea del testo, entrare in pausaconsente di procedere velocemente a ripo-

    sizionamenti del cursore o di eseguire altreoperazioni che si rendessero comunque ne-cessarie. A questo punto, digitiamo il titolodel nostro rapporto giornaliero (Rapportogiornaliero del), quindi apriamo il menuInserisci e selezioniamo la voce Data e Oradeterminando lapertura di una mascherain cui si opta per il formato dellinserimen-to selezionandolo fra quelli proposti nelle-lenco ospitato nella finestra Formati dispo-nibili. Premere Ok per consolidare la scelta.

    Non ci resta che centrare la scritta sullapagina, nonch assegnare dimensione 20 eil grassetto ai caratteri del testo. Per farlodobbiamo prima evidenziare (da tastiera)la scritta. Inoltre, se abbiamo buona memo-ria dovremmo ricordarci che conviene darecorso alle formattazioni avvalendosi delle

    Pulsanti e interfacceAssociando il lancio di unprogramma Vba allapressione di un pulsante possibile sviluppare semplicima efficaci inter facceutente. Chi utilizzaunapplicazione pu cosgestirne tutte lefunzionalit previstepremendo semplicemente i pulsanti adatti.Combinando questi ultimicon oggetti, grafici, testi, e forme geometriche si possono creare veri epropri pannelli di controllodallaspetto accattivante

    >>7/14

  • >>

    WWOORRDD:: IINNTTEESSTTAAZZIIOONNEE AAUUTTOOMMAATTIICCAA DDII UUNN RRAAPPPPOORRTTOO GGIIOORRNNAALLIIEERROO

    DENOMINAZIONEDELLA MACROAprire il menu Strumenti, selezionareMacro, e nel sottomenu optare perRegistra nuova macro. Viene visualizzata lamaschera di denominazione. Inserire ilnome della macro nella omonima casella (se sono previsti spazi, sostituirli conlunderscore). Memorizzare la macro inTutti i documenti. Alla macro pu ancheessere assegnata una sequenza dicontrollo. Premere il pulsante Ok perattivare il registratore.

    INTESTARE IL RAPPORTODigitare Rapporto giornaliero del, aprire il menu Inserisci, e selezionare Data e Ora.Scegliere il formato della data nellamaschera visualizzata e consolidare la scelta. Centrare la scritta sulla pagina, e dopo aver evidenziato la scritta (da tastiera) assegnare dimensioni 20 e grassetto ai caratteri del testo utilizzandole icone della barra strumenti (non tramite il menu!). A cose fattespegnere il registratore.

    ESEGUIRE LA MACRO Per eseguire la macro appena registrataposizionare il cursore dove deve comparirelintestazione del report, aprire il menuStrumenti, selezionare Macro, e ancora Macro. Nella maschera che vienevisualizzata evidenziare il nome che statoassegnato al programma, quindi premere il pulsante Esegui. Se la macro stataregistrata correttamente verrannovisualizzate lintestazione del rapporto e la data corrente.

    IL LISTATO DEL PROGRAMMA IN VBA Il listato della macro che abbiamo registrato. Per visualizzarlo, accedere alla maschera per lagestione dei programmi, evidenziare il nome della macro nella omonima finestra, e premere ilpulsante Modifica per aprire lEditor del Vba. Nella finestra di destra dellEditor verr visualizzato ilnostro listato: analizzandolo attentamente si possono interpretare i significati di molte istruzioni eparole chiave. Lanalisi deve essere condotta riferendosi alle operazioni che sono state registrate.In particolare, appare chiaro il significato della parola chiave Selection e dellistruzioneTypeParagraph per il ritorno a capo. Anche il comando che determina lapertura della mascheraper linserimento della data si rivela facilmente interpretabile. Si noti che in sua corrispondenzaviene specificato anche lo stato di tutte le opzioni gestite dalla maschera stessa.

    NAVIGARE NEIDOCUMENTICON LA TASTIERAIl registratore delle macro di Word ha unagrossa limitazione. Non consente di operarecon il mouse nellambito del testo. Cos, se si vuole lavorare nel documento o semplicemente spostarsi al suo internobisogna impartire da tastiera i corrispondenti comandi. Chi non li ricordasse pu avere i necessari lumi dallaguida on line. Aprirla, accedere alla schedadi ricerca libera e individuare il termineNavigare allinterno di un documento.

    Pc Open Gennaio 20011718/14

  • Pc Open Gennaio 2001172

    nguage:=wdItalian,CalendarType:=wdCalendarWester

    n, InsertAsFullWidth:=False

    08. Selection.MoveLeftUnit:=wdCharacter, Count:=41, Extend:=wdExtend

    09. Selection.Font.Bold = wdToggle10. Selection.Font.Size = 2011. Selection.ParagraphFormat.

    Alignment=wdAlignParagraphCenter

    12. Selection.MoveDownUnit:=wdLine, Count:=1

    13. Selection.TypeParagraph14. Selection.TypeParagraph15. Selection.ParagraphFormat.

    Alignment =wdAlignParagraphLeft16. Selection.Font.Size = 1417. End Sub

    Poco fa si diceva che le macro di Wordsono un po pi complesse di quelle diExcel. Eccone qui sopra la dimostrazione.Per digitare una scritta, inserire una data eformattare il tutto siamo riusciti a metterein piedi un listato di quasi venti passi, al-cuni dei quali anche piuttosto articolati. Fralaltro, a proposito del passo 07 si noti chesi articola su pi righe, e in tal caso lEditordel Visual Basic segnala il ritorno a capo in-serendo a fine riga uno spazio seguito da ununderscore. Tale convenzione non apparenel listato riportato pi sopra per ragioni diimpaginazione, ma la si pu apprezzare be-ne se si accede allEditor.

    Ed ora procediamo al commento dei pas-si del programma. I passi da 1 a 5 sono clas-sici di qualunque macro ed hanno in tutte lestesse funzioni e significato che abbiamodescritto analizzando il listato della macroregistrata con Excel. Al passo 06 comincia-mo a fare la conoscenza con una importan-te istruzione del Vba di Word: Selection, ilcui compito quello di specificare che la-zione che segue deve essere condotta allaposizione del cursore. Nella fattispecie de-ve essere inserito un testo, da dichiararsifacendolo precedere dalla parola chiaveText seguita, fra virgolette, da quanto deveessere trascritto automaticamente.

    Il passo 07 quello pi complesso dellamacro e fotografa la situazione interpretatadalla maschera per linserimento della data.Accanto alle parole chiave che si riferisco-no alle varie opzioni viene indicato se de-vono essere considerate attive o meno. Sinoti che il passo inizia con listruzioneSelection seguita dal comando Insert DateTime che specifica lazione da eseguire allaposizione del cursore: linserimento delladata. E veniamo ai passi da 08 a 16. La pa-rola chiave Selection ci fa capire che si rife-riscono a tutte le azioni di formattazionepreviste, che avvengono ovviamente allaposizione del cursore o sulle selezioni deltesto che sono state operate.

    Insomma, analizzando attentamente il li-stato, e confrontandolo con le azioni ese-guite in fase di registrazione, non difficileinterpretarne il significato e chiarire le fun-

    zioni delle parole chiave e dei comandi chevi figurano, nonch della sintassi che ne re-gola lutilizzo.

    Per esempio, listruzione TypeParagraphripetuta due volte sta per i due ritorni a ca-po previsti, mentre la parola chiaveFont.Size consente di definire le dimensionidei caratteri. Con un po di pazienza e buo-na volont, registrando qualche macro si-gnificativa e analizzandone il listato si pe-netra quasi senza accorgercene nei misteridel Vba. Inoltre, i passi di cui si sono inter-pretate le funzioni potranno essere replica-ti nel corpo di altre macro per estenderneopportunamente le funzionalit. E tuttosenza scrivere una riga di codice, come delresto avevamo anticipato in apertura delpresente Dossier.

    Il programma si conclude come al solitocon lonnipresente istruzione End Sub. Il let-tore attento avr gi compreso che questoprogrammino pur nella sua assoluta sem-plicit pu essere opportunamente modifi-cato per fare qualcosa di pi. Per esempio,potremmo realizzare un glossario che ospi-ta intere frasi standard da inserire nelle no-stre lettere. In queste casi, basta sostituirenella macro il testo dellintestazione delrapporto con la frase da inserire, e cancel-lare i passi responsabili delle formattazioniindesiderate o modificarli opportunamenteper interpretare quelle che fanno al casonostro. Se, invece, anzich modificare unamacro la vogliamo creare da zero e poi in-serivi i passi replicati da un altro program-ma bisogna procedere cos. Attivare la regi-strazione di un nuovo programma, denomi-narlo, e disattivare subito il registratoresenza compiere nessuna operazione.

    A questo punto, accedere al corrispon-dente listato che si presenter articolatonelle sole righe introduttive e in quella fina-le. Inserirvi dopo la prima istruzione i pas-si copiati dalle altre macro, omettendo na-turalmente quelli di apertura e chiusuraperch gi sono presenti. un piccolo eser-cizio che vi consigliamo di fare subito. Ci sipotr cos rendere conto che stiamo vera-mente imparando qualcosa di utile.

    corrispondenti icone della barra strumenti:eviteremo cos di appesantire inutilmente ilnostro listato con passi assolutamente inu-tili, e che fra laltro ne rendono pi difficilelinterpretazione soprattutto a chi sta co-minciando a lavorare con le macro.

    Adesso, premere due volte Invio per por-tare il cursore dove deve iniziare il testo delrapporto, riassegnare lallineamento a sini-stra e le dimensioni e il tipo standard deicaratteri. tutto, per concludere la regi-strazione fare clic sul pulsantino contrasse-gnato dal piccolo quadrato. La nostra ma-cro stata finalmente memorizzata e pereseguirla baster digitare la sequenza dicontrollo attribuita, oppure possiamo apri-re la maschera che gestisce le macro, evi-denziarne il nome e premere il pulsanteEsegui. Detto fatto, alla posizione del cur-sore comparir lintestazione del nostrorapporto giornaliero corredata della datacorrente, e opportunamente formattata,mentre il cursore si posiziona nel punto incui deve avere inizio la digitazione del te-sto. Provare per credere

    ANALISI DEL LISTATOA questo punto, come soddisfare la legit-

    tima curiosit di dare una sbirciatina al cor-rispondente listato? La procedura la stes-sa che abbiamo descritto parlando diExcel. Accedere alla maschera per la ge-stione delle macro, evidenziarne il nomenella finestra Nome macro, e premere il pul-sante Modifica per accedere allEditor delVba. Se la registrazione andata a buon fi-ne il codice del nostro programma si do-vrebbe presentare cos:

    01. Sub Intestazione_Rapporto()02. 03. Intestazione_Rapporto Macro04. Macro registrata il 10/11/00 da

    ....05.

    06. Selection.TypeText Text:=Rapporto giornaliero del

    07. Selection.InsertDateTimeDateTimeFormat:=d MMMMyyyy,InsertAsField:=False,DateLa

    [ddoossssiieerr]Il Visual Basic di Office

    Le macro di Word e i menuSe nella maschera di denominazione della macro da registrare si fa clic sul pulsante che ha sopraimpresso un martello si accede al pacchetto di schede che gestiscono lassegnazione della macro ad una voce del menu operativo di Word

    Powerpoint: macro e menuLa procedura per la registrazione di una macro,contrariamente a quanto avviene con Microsoft Word, non prevede una opzione dedicata allassegnazione della macro stessa ad una voce di menu. In questi casi si pu operare indirettamente. Infatti la procedura pu essere attivata aprendo il menu Strumentie selezionando la voce Personalizza: si accede cos al pacchetto di schede che la gestisce

    9/14

  • Pc Open Gennaio 2001173

    CONSIGLI E RACCOMANDAZIONIVale la pena di sottolineare che la virgo-

    letta apposta allinizio di alcuni passi di unlistato li esclude dallesecuzione e, per que-sto, i suddetti passi possono ospitare notee commenti per documentare adeguata-mente la macro. A proposito di documenta-re la macro, sarebbe bene prendere la buo-na abitudine di farlo regolarmente: provatea rileggere un programma dopo un certotempo, e vi accorgerete di quanto sia diffi-cile interpretarlo senza poter contare suuna adeguata documentazione. Ma c dipi. Il fatto che la virgoletta iniziale impedi-sca che un passo venga eseguito, si rivelaprezioso quando a colpi di taglia e incollasviluppiamo nuove macro utilizzando passiprelevati da altri programmi. In caso di er-rori, possiamo escluderli momentaneamen-te dalla macro stessa.

    La virgoletta ci consente anche di testa-re se uno o pi passi possono essere elimi-nati senza problemi quando si decide di fa-re un po di pulizia nei listati. Se escluden-doli dallesecuzione non si verificano erroripossiamo procedere senza problemi alla lo-ro rimozione. Per quanto riguarda le macrodi Word, dal momento che il mouse non attivo allinterno dei documenti, diventaimportante sapersi destreggiare alla tastie-ra per ovviare alla latitanza del topolino.Vale pertanto la pena rinfrescarsi la memo-ria sulle sequenze di controllo che consen-tono di navigare in lungo e in largo nellam-bito di un documento, nonch di dare cor-so ad alcune operazioni essenziali, primefra tutte levidenziazione di parole, para-grafi, righe e cos via.

    Chi si vuole documentare ampiamentesulle preziose sequenze deve accedere allaguida in linea di Word, aprire la scheda diricerca libera, e digitare Navigare allinternodi un documento nella casella Come proce-dere. Fra gli argomenti che vengono indivi-duati consultare le videate di aiuto corri-

    UUNN LLIISSTTAATTOO DDAA PPOOTTAARREE Il listato corrispondente alla registrazione della macro per importare un file Excel allinterno di una diapositiva di Powerpoint pu essere convenientemente potato di alcuni passi inutili. Per esempio, quelli che vanno dallo 02 allo 04 e dallo 06 all11 compresi. In ogni caso, prima di procedere alla rimozione di una o pi righe di codice conviene sempre simularne la cancellazione anteponendo ad ognuna di esse la famosa virgoletta, che le esclude cos dalla esecuzione del programma. Se, lanciata la macro, non succede nulla, possiamo dare corso senza indugi alla loro eliminazione, a tutto vantaggio della snellezza del listato.

    | Powerpoint: presentazioniautomatizzate |

    >>

    01. Sub Tabella_Excel()02. 03. Macro registrata il 10/11/00 da ...04. 05. ActiveWindow.Selection. _SlideRange.Shapes. _ AddOLEObject(Left:=120#, _ Top:=110#, Width:=480#, _ Height:=320#, _ FileName:=C:\Documenti\Tabella.xls, _ Link:=msoFalse).Select

    06. With ActiveWindow.Selection.ShapeRange

    07. .Left = 191.12508. .Top = 110#09. .Width = 337.7510. .Height = 320#11. End Whith

    12. End Sub

    La disponibilit delle macro anche allin-terno di Powerpoint, il modulo di pre-sentazione di Microsoft Office, ne esten-de notevolmente gli orizzonti applicativi.Come gi abbiamo accennato, le funziona-lit del registratore sono quasi le medesimedi quello di Excel (non possibile assegna-re una sequenza di controllo), ma per il re-sto la creazione di una macro prevede unaprocedura assolutamente identica.

    Visto che gi dovremmo essere dei pic-coli esperti in materia di registrazione, ap-profittiamone per sviluppare un program-ma che ci consenta di automatizzare lim-portazione di una tabella Excel nellambitodi una diapositiva. Pronti? Via! LanciarePowerpoint, e impostare una slide la cuistruttura sia vuota o preveda semplicemen-te un titolo. A questo punto, aprire il menuStrumenti, selezionare Macro, e nel sottome-nu che viene visualizzato optare ancora perla voce Macro. Per chi non se non fosse ac-corto, abbiamo attivato il registratore.Assegniamo un nome al programma da re-gistrare: per esempio, Tabella_Excel (atten-ti allunderscore!). Adesso, aprire il menuInserisci, selezionare la voce Oggetto, e nella

    maschera che viene mostrata optare per lavoce Foglio di lavoro Microsoft Excel. Cos fa-cendo si accede a una maschera in cui sispunta la voce Crea da File, operazione que-sta che determina laccesso ad un box didialogo per la dichiarazione del percorsodel file da importare. Impostarne il cammi-no, quindi premere il pulsante Ok, ritornan-do cos alla maschera originale in cui si pre-me ancora il pulsante Ok per rendere defi-nitiva limportazione. La procedura si con-clude qui, pertanto possiamo spegnere ilregistratore e dare unocchiata al listato del-la macro appena registrata che, impagina-zione a parte, si dovrebbe presentare cos:

    01. Sub Tabella_Excel()02. 03. Macro registrata il 10/11/00 da ...04. 05. ActiveWindow.Selection.

    SlideRange.Shapes. AddOLEObject(Left:=120#, Top:=110#, Width:=480#, Height:=320#, FileName:=C:\Documenti\Tabella.xls, Link:=msoFalse).Select

    06. With ActiveWindow.Selection.ShapeRange

    07. .Left = 191.12508. .Top = 110#09. .Width = 337.7510. .Height = 320#11. End Whith12. End Sub

    Analizziamone i vari passi, tralasciandoovviamente quelli iniziali il cui significato cidovrebbe essere ormai familiare. Il cuoredella macro il passo 05, in cui viene atti-vata la procedura di importazione e dichia-rato, utilizzando un comando speciale, ilpercorso del file da importare. Questultimaistruzione, che rappresenta lultima partedel passo facilmente individuabile, ed gestita dalla parola chiave Filename. I passidallo 06 all11, invece, si riferiscono alle di-mensioni del riquadro che ospita la tabellaimportata e sono pleonastici, pertanto pos-siamo cancellarli senza complimenti, a tut-to vantaggio della snellezza del programma.

    spondenti a Spostamenti in un documento.Per saperne di pi sulla evidenziazione deitesti, invece, la parola chiave da utilizzare Selezione di testi. Largomento da consulta-re Selezione di testi e grafica.

    Infine, per avere ulteriori chiarimenti sul-le macro e sullEditor del Vba, lambiente

    che dobbiamo conoscere meglio se voglia-mo ottenere qualcosa di pi dai nostri pro-grammi, bisogna utilizzare la chiave EditorVba, e fra gli argomenti che vengono pro-posti consultare la videata di aiuto corri-spondente alla voce Utilizzo di macro perautomatizzare operazioni.

    10/14

  • [ddoossssiieerr]Il Visual Basic di Office

    Pc Open Dicembre 2000174

    PPOOWWEERRPPOOIINNTT:: IINNSSEERRIIMMEENNTTOO AAUUTTOOMMAATTIICCOO DDII UUNNAA TTAABBEELLLLAA EEXXCCEELL

    CREARE LA DIAPOSITIVALanciare Powerpoint e creare una nuovapresentazione. Aprire una nuovadiapositiva, e nella galleria dei layoutscegliere una struttura non troppoarticolata che consenta di dare un certospazio alla tabella da importare. Per esempio, una struttura vuota o con il solo titolo. Ovviamente, il nostro solo un consiglio che non obbligatorio rispettare. Alla slide pu anche essere associato uno sfondo.

    DENOMINARE LA MACROAprire il menu Strumenti, selezionareMacro, e nel sottomenu optare perRegistra nuova macro. Si accede cos alla maschera che consente di denominare il programma che vogliamoregistrare. Nel caso di Powerpoint non possibile procedere, come con Excel oWord, alla assegnazione di una sequenzaper lanciare la macro dalla tastiera. Perquanto riguarda lopzione Memorizza inaccettare la proposta default.

    LA PROCEDURA DI INSERIMENTOAttivato il registratore aprire il menuInserisci di Powerpoint e selezionare la voce Oggetto. Cos facendo vienevisualizzata una maschera. Nella finestra Tipo di oggetto evidenziare la voce Foglio di lavoro di Microsoft Excel. In pratica, stiamo attivando la potentefunzionalit Ole (Object linking andembedding) che consente per lappunto di collegarsi dinamicamente con altre applicazioni esterne.

    LA MODALIT DI INSERIMENTO FILENella maschera precedente spuntare la casella Crea da file, dal momento che il nostro oggetto, per lappunto, registrato in un file. Con questaoperazione si accede ad una nuovamaschera, dove nella casella di testo Filesi pu digitare direttamente il percorso di quello corrispondente alla tabella da importare nella slide. Se non ce loricordiamo, fare clic sul pulsante Sfogliaper impostarne il percorso.

    IL RISULTATODELLIMPORTAZIONEEcco come si presenta la tabella importatanella diapositiva. A questo punto, spegnere il registratore facendo clicsullicona dedicata. Se creiamo una nuovaslide e lanciamo la macro, avr puntualmente luogo limportazionedella tabella. Volendo rendere interattiva la procedura, in modo da poter dichiararedi volta in volta un nuovo percorso,apportare alla macro le modifiche che abbiamo descritto nel testo.

    LA MACRO INTERATTIVASe si modifica la macro in modo da renderlainterattiva, quando la si lancia viene esibitoun box di dialogo in cui si invitati a digitaredirettamente il percorso del file che deveessere importato. Premendo il pulsante Ok presente nel boxlimportazione ha subito luogo. Questo un esempio di come bastiapportare una piccola modifica a un listatoper incrementare notevolmente leprestazioni del programma.

    Pc Open Gennaio 200117411/14

  • Pc Open Gennaio 2001175

    mente il nome nel passo 05 al posto del vec-chio percorso. Il miracolo reso possibiledalla capacit da parte del Vba di gestire levariabili. In pratica, basta inserire prima delpasso 05 i seguenti due passi:

    Dim Percorso as StringPercorso = InputBox (Prompt: = Inserire il percorso)

    Il primo dimensiona la variabile Percorso,mentre il secondo visualizza un box in cui si invitati a digitare il percorso del file, cheverr poi automaticamente acquisito dallamacro. Ma perch questo avvenga bisognafare ancora un piccolo ritocco al passo 05.La dove compare il vecchio percorso se neopera la sostituzione, virgolette comprese,con il nome della variabile Percorso (quellache abbiamo appena dichiarato). A cose fat-te ecco come dovrebbe presentarsi la no-stra macro, ora decisamente potenziata ri-spetto alloriginale.

    01. Sub Tabella_Excel()

    02. Dim Percorso as String03. Percorso = InputBox (Prompt: =

    Inserire il percorso)

    04. ActiveWindow.Selection.SlideRange.Shapes. AddOLEObject(Left:=120#, Top:=110#, Width:=480#,

    Height:=320#, FileName:=PercorsoLink:=msoFalse).Select

    05. End Sub

    Se la lanciamo, viene visualizzato ilfamoso box, e dopo aver dichiarato ilpercorso del file basta premere il pul-sante Ok per rendere esecutiva la nuo-va importazione. Se ci fossero problemidi scalatura delle dimensioni della ta-bella importata vi diamo subito il rime-dio: inserire nella macro, subito primadellultima istruzione (End Sub), i se-guenti passi (ignorando, ovviamente lanumerazione).

    01. WithActivewindows.Selection.ShapeRange

    02. .ScaleHeight 1, msoCTrue03. .ScaleWidth 1, msoCTrue04. EndWith

    Non chiedeteci come funzionano, perchli abbiamo prelevati da un altro programmadi cui avevamo pazientemente analizzato illistato. In particolare, escludendoli con lan-teposizione della virgoletta, ci eravamo ac-corti che la scalatura delloggetto importa-to non aveva luogo, e allora abbiamo pen-sato che facessero al caso nostro. Vedendogiusto.

    Cos, se ci prendiamo la briga di eliminarliinsieme ad alcuni di quelli iniziali otteniamoun listato veramente lineare e molto leggibi-le. Eccolo qua:

    01. Sub Tabella_Excel()

    02. ActiveWindow.Selection.SlideRange.Shapes. AddOLEObject(Left:=120#, Top:=110#, Width:=480#, Height:=320#, FileName:=C:\Documenti\Tabella.xls, Link:=msoFalse).Select

    03. End Sub

    Il bello che funziona benissimo. Perconvincersene basta creare una nuova dia-positiva e lanciare la macro. Il risultato ot-tenuto sicuramente ci gratifica, ma se cipensiamo bene il nostro programma piut-tosto limitato. Infatti, per quanto funzioni al-la perfezione continua ad inserire nelle dia-positive sempre la stessa tabella. Un po po-co in verit, per non dire niente Perch,allora, non renderlo interattivo in modo chesi possa ogni volta dichiarare un diversopercorso di importazione? Se volete vi spie-ghiamo come fare. Il trucco, se tale si puchiamare, sta nel fare comparire un mes-saggio che chiede il percorso del nuovo file,dopodich la macro ne inserir automatica-

    CCOOMMEE AACCCCEEDDEERREE AALL MMOODDEELLLLOO EESSEEMMPPLLIIFFIICCAATTIIVVOO NNOORRTTHHWWIINNDD

    APERTURA DEL MODELLOLanciare Access. Se il programma fossegi aperto, uscire e rilanciarlo. Nella maschera che viene visualizzataspuntare la voce Apri file esistente, nella finestra sottostante evidenziareDatabase di esempio Northwind, e premere Ok. Se tale voce non dovessefigurare nellelenco, aprire la guida in linea di Access, accedere alla ricerca libera, e individuare gli argomenti associati alla voce Northwind.

    IL DATABASENORTHWINDAllapertura del modello viene visualizzatoil logo dellapplicazione, e sotto di esso unriquadro che consente di accedere a tutti i componenti del modello (tabelledati, report, moduli, macro, e cos via). In particolare, per esercitarsi a svilupparesemplici macro, possiamo utilizzare una delle tabelle dati preesistenti, senza doverla necessariamente creare ex novo: per esempio la tabella (o archivio) Clienti.

    LARCHIVIO CLIENTINORTHWINDEcco come si presenta larchivio Clienti,una delle tante tabelle in cui si articolalapplicazione Northwind. La presentazione dei dati non deveingannare. I dati vengono visti in formatabellare perch un qualunque archiviopu essere idealmente associato a talestruttura. Infatti, la prima riga della tabellacontiene i nomi dei campi dellarchivio, e le singole righe ne costituiscono i vari record.

    >>

    Pc Open Gennaio 200117512/14

  • Pc Open Gennaio 2001176

    delle informazioni a disposizione impostan-do le opportune macro. Chi volesse sempli-cemente cimentarsi con il Vba di Access,senza necessariamente dover mettere insie-me un proprio archivio dati, pu utilizzarecome punto di partenza il modello esempli-ficativo incorporato nel programma.

    Si tratta del data base Northwind, una ap-plicazione gestionale piuttosto sofisticatache, fra laltro, si presta molto bene ad es-sere analizzata nellottica di estendere le no-stre conoscenze del linguaggio di program-mazione di Office. Ma torniamo alle macro.Impostato il data base e almeno una tabelladati, accedere al riquadro riepilogativo deicomponenti dellarchivio, dove si attiva lasezione Macro facendo clic sullomonimopulsante fra quelli ospitati nella parte sini-stra del riquadro stesso.

    Si entra nellambiente di sviluppo guidatodei programmi, che si presenta come una ta-bella a due colonne e pi righe (altre due co-lonne possono essere viste aprendo il menuVisualizza e scegliendo le voci Nomi macroe Condizioni). A questo punto, fare clic nellacasella Azione. Al clic, nella parte destradella cella viene mostrato un minipulsante.Premerlo per aprire un elenco a discesa incui si pu selezionare la prima azione chedeve eseguire la macro che stiamo impo-stando. Come si vede, la procedura moltosemplice dal momento che a scrivere le cor-rispondenti righe di codice ci penser lin-terprete di Access. Alloperatore, invecespetta il semplice compito di scegliere la-zione. Questo facilit procedurale, per,rappresenta paradossalmente anche il tallo-ne di Achille del sistema perch le possibileazioni da assegnare alla macro sono quelleche sono e, anche se piuttosto numerose,bisogna pur sempre accontentarsi di quelloche passa il convento. Ma onestamente, perchi non un esperto, le opzioni disponibilibastano e avanzano.

    La sola difficolt, come si diceva prima, quella di interpretarle correttamente e difarne buon uso. Ma proseguiamo. Lazionescelta viene inserita nella cella, e se il suoutilizzo presuppone la eventuale definizionedi alcuni parametri operativi, nella zona sot-tostante la tabella vengono visualizzate del-le caselle di testo nelle quali, il pi delle vol-te con la tecnica dellelenco a discesa, de-vono essere specificati i suddetti parametri.

    Conviene fare un esempio. Se come azio-ne stata specificata lesecuzione di unal-tra macro (richiamare un programma da unaltro programma una tecnica abitualequando si sviluppa una macro), sotto la ta-bella vengono aperte tre caselle di testo.Fare clic nella prima per aprire lelenco a di-scesa che ospita il nome delle macro dispo-nibili, e selezionare quella che deve essereeseguita. Nella casella sottostante, invece,inserire il valore che corrisponde al numerodi volte che la macro deve eventualmente

    Idata base, fra tutti gli strumenti per lela-borazione dei dati, sono sicuramente i pipotenti, ma anche i pi complessi da usa-re. Prova ne sia, semmai ci fosse bisogno didimostrarlo, che sono anche i meno diffusifra gli strumenti di produttivit individuale.Il programma Access non fa eccezione aquesta legge non scritta, pur lasciando qual-che piccolo spazio al compromesso.

    Infatti, anche se programmarlo come Diocomanda richiede lopera di un professioni-sta, chi non proprio digiuno in materia dibasi dati pu utilizzare qualcuno dei suoistrumenti di programmazione guidata. Lacomplessit del programma non si conciliacon la semplice schematicit della registra-zione delle macro, pertanto queste ultimevengono sviluppate in uno speciale ambien-te che si avvantaggia di una inedita proce-dura guidata. Infatti, limpostazione di unprogramma in Vba avviene costruendo lacorrispondente macro senza scrivere diret-tamente i passi di codice, ma semplicemen-te specificando le azioni che devono essereeseguite prelevandone i riferimenti in spe-ciali elenchi a discesa.

    La vera difficolt, se vogliamo essere pre-cisi, non tanto data dalle procedure per lacreazione della macro, ma dal fatto che peravvalersene bisogna avere una certa cono-scenza di Access e della gestione delle basidati in generale. Le tecniche sono queste.Innanzitutto si crea un data base e le tabelledati su cui si impernia questultimo, dopo-dich si pu automatizzare lelaborazione

    [ddoossssiieerr]Il Visual Basic di Office

    | Access: largo agli esperti |

    UUTTIILLIIZZZZAARREE LLEECCRREEAAZZIIOONNII GGUUIIDDAATTEE

    Chi non vuole perdere tempo a impostareun data base, o vuole comunque disporredi una base di partenza, pu ricorrere alle creazioni guidate. Grazie ad esse,rispondendo a semplici domande pupersonalizzare uno dei modelli generici a libreria. Ecco come procedere. Aprire il menu File e selezionare Nuovo. Viene cos aperta una maschera a schede.Fare doppio clic su un modello base nella scheda Database.

    essere eseguita. Nella terza casella, infine, sipu immettere una espressione che, se veri-ficata, interrompe la macro anche se non stata eseguita il numero di volte specificatonella cella soprastante.

    Consigliamo di costruire lespressione dainserire nella cella con laiuto di una specia-le maschera di dialogo. Facendo clic nellacella che la deve ospitare viene mostrato unminipulsante con sopra impressi tre punti-ni. Farvi sopra clic per accedere alla ma-schera che gestisce limpostazione guidatadellespressione. Quindi premere Ok pertrasferirla nella cella di partenza.Limpostazione della macro prosegue speci-ficando, se necessario, nuove azioni e i cor-rispondenti parametri operativi. Alla fine,chiudere la tabella e assegnare un nome alprogramma, che sar quello con cui figurernel riquadro riepilogativo dei componentidel data base. Per lanciare la macro, eviden-ziarla e fare doppio clic, o premere pulsanteEsegui nella barra strumenti del riquadro.

    CCRREEAARREE UUNNAA IINNTTEERRFFAACCCCIIAA

    Disegnare i pulsanti e associare le macroFare clic sullicona pulsante che ospitata nella casella degli strumenti che vienevisualizzata nellambito della pagina, quindi tracciare un rettangolo delledimensioni che si vogliono dare alloggetto. Per associare una macro ad un pulsante,invece, bisogna farvi sopra clic col tastodestro per visualizzare la casella delle sue propriet. Nella cella Onactivateinserire il nome della macro da lanciarequando vi si fa sopra clic.

    Creare una paginaLa tecnica da utilizzare quella di richiedere la creazione di una paginavuota nel riquadro di riepilogo del database , quindi di inserivi il numerodesiderato di pulsanti.

    13/14

  • Pc Open Dicembre 2000177

    CCRREEAARREE UUNNAA MMAACCRROO CCOONN LLAA PPRROOCCEEDDUURRAA GGUUIIDDAATTAA

    CREARE IL DATA BASEImpostare larchivio su cui dovrannolavorare le macro che vogliamo realizzare(oppure crearlo con la procedura guidata).Le caratteristiche dellarchivio sonocompendiate in un riquadro di riepilogo. In particolare, i riferimenti ai moduli in cui si articola sono riportati nella parte sinistra del riquadro. Selezionare qui la voce Macro, quindi premere il pulsante Nuovonella barra strumenti.

    AMBIENTE DI SVILUPPOGUIDATO DELLE MACROLambiente di sviluppo si presenta comeuna tabella a due colonne e pi righe(altre due colonne possono esserevisualizzate aprendo il menu Visualizzae selezionando le voci Nomi macroe Condizioni). Fare clic nella casella Azione.Al clic, nella parte destra della cella viene visualizzato un minipulsante.Nellelenco a discesa associato selezionarelazione che deve eseguire la macro che stiamo impostando.

    COMMENTARE I PASSIDELLA MACRONon si insister mai abbastanza sulla convenienza di dotare le macro che si sviluppano della opportunadocumentazione (e questa una regolagenerale). In questo caso, quasi doverosofarlo dal momento che ci viene messo a disposizione uno spazio dedicato. Se si abbonda con le note, se ne puavere una visione di assieme facendo clicsul testo del commento e selezionandoZoom nel menu contestuale.

    DEFINIRE I PARAMETRIOPERATIVIA seconda delle azioni che vengonoimpostate pu rendersi necessaria ladefinizione degli eventuali corrispondentiparametri operativi. In questo caso, nella zona sottostante la tabella vengonovisualizzate automaticamente le caselledestinate ad ospitarli. Nella maggior parte dei casi linserimento dei dati haluogo per digitazione diretta o prelevando il parametro da un opportuno elenco a discesa.

    IMPOSTAZIONE DIESPRESSIONI DI CONTROLLODovendo definire una condizione di controllo per verificare lo stato dideterminate situazioni, la corrispondenteespressione, anzich digitata direttamente,pu essere costruita in apposite maschere.La costruzione dellespressione completamente automatizzata eprevede linserimento dei termini diriferimento o degli operatori relazionalimediante prelievo da speciali elenchi opremendo una serie di pulsanti.

    CHIEDERE AIUTOALLHELP ON LINEPer saperne di pi sulla creazione guidatadelle macro e sullo speciale ambiente di sviluppo proposto da Access convieneconsultare la guida in linea del programma. Aprire la guida, accederealla ricerca libera, e nella casella Come procedere digitare Macro. Premere Cerca. Fra gli argomentiindividuati, consultare le videate di aiutocorrispondenti a Creare una macro eDefinizione e funzionamento di una macro.

    Pc Open Gennaio 200117714/14

    RicercaConsigli per farsi un Office su misuraIL REGISTRATOREDI WORDMICROSOFT EXCEL:ATTIVAREIL REGISTRATORELe macro registrateRegistrare in VbaDENOMINARE UNA MACRO, REGISTRARLA, ESEGUIRLA E ANALIZZARLAAnatomia di un listatoIl Vbadi MicrosoftWordASSOCIARE UNA MACRO AD UN PULSANTELANCIARE LE MACROCON LE SEQUENZE DI CONTROLLOWORD: INTESTAZIONE AUTOMATICA DI UN RAPPORTO GIORNALIEROPowerpoint: presentazioniautomatizzatePOWERPOINT: INSERIMENTO AUTOMATICO DI UNA TABELLA EXCELAccess: largo agli espertiCREARE UNA MACRO CON LA PROCEDURA GUIDATA

top related