Macro (informatica) alcune nozioni

Macro (informatica)

In informatica, il termine macro sta ad indicare una procedura ricorrente durante l'esecuzione di un programma. Una macro è concettualmente molto simile ad una funzione, può essere richiamata da eventi ed essere parametrizzata. La macro può anche essere definita come un insieme di comandi.

Le macro consentono di ottenere una serie di operazioni con l'invio di un solo comando. Alcuni programmi hanno all'interno la capacità di registrare ed eseguire macro, in alternativa esistono software di automazione che consentono di realizzare macro a livello superiore, e quindi per tutti i programmi che non le prevedono. Il concetto originario di macro non prevede l'uso di un linguaggio di programmazione, trattandosi di una semplice registrazione di una serie di comandi già disponibile all'interno del software. Evolvendosi nella forma attuale, le macro hanno acquisito un linguaggio di programmazione (es: VBA), con tanto di strutture condizionali (If... Then... Else...), subroutine, dialogo con l'utilizzatore attraverso finestre per l'introduzione di dati, raggiungendo un'efficienza molto maggiore, ma anche maggiore complessità nella loro stesura.

In un foglio di calcolo, alcune operazioni tipiche di una macro sono inserimento/eliminazione di righe/colonne, formattazione del testo/numero e colore, copia-incolla di valori, esecuzione di funzioni come le somme, impostazioni di stampa e salvataggio del file.

Livelli di esecuzione

La macro può essere salvata a livello di singolo foglio di lavoro, tutte le cartelle di lavoro aperte, qualsiasi file Excel/open office. In quest'ultimo caso, la macro deve essere salvata nella cartella di avvio del programma (XLStart/PERSONAL.XLS, ovvero Open Office/Avvio).

Se la macro è salvata nel codice del singolo foglio di lavoro è una private subroutine, non visibile nell'elenco di macro presente nel file, ed è un tipo di macro ad evento, eseguita ogni volta che si apre il foglio di lavoro cui è associata.

Se ad esempio si desidera avere un indice dinamico dei fogli di lavoro presenti in un file Excel, dovrà essere associata a un foglio di lavoro di nome "Index" una macro che crea un indice dei fogli di lavoro: in pratica, per avere un indice dinamico si utilizza una macro ad evento, salvata nel foglio di lavoro, che crea un comune indice statico.

Eseguire una macro su una selezione corrente di celle

Il codice di una macro non necessariamente si riferisce a una determinata riga, colonna o intervallo di celle, e può essere tale da venire eseguito sulla selezione corrente, che viene effettuata prima di laciare la macro. Se ad esempio l'utente desidera eseguire la macro sulla colonna N, la riga 1 o l'invervallo di celle "A2:N20", è sufficiente che evidenzi col mouse queste aree del foglio, prima di lanciare la macro, che sarà appunto eseguita sull'ultima selezione corrente di celle.

Per ottenere istruzioni di questo tipo con il registratore di macro, è sufficiente selezionare le aree di interesse prima di iniziare la registrazione di macro, e subito dopo lanciare la registrazione. Il registratore genera codice del tipo: "Selection.Copy", "selection.Autofilter", "Selection.Delete".

Per selezionare le celle di un intervallo di dimensione variabile si utilizza l'istruzione:

    Range(Selection, Selection.End(xlDown)).Select

   

Queta istruzione indica gli estremi dell'intervallo da selezionare, da una parte la cella selezionata dal cursore e dall'altra l'ultima cella attiva (con valori o formule) fra quelle al di sotto della selezione corrente. Per selezionare l'ultima cella attiva sopra, a destra o sinistra di quella corrente, si utilizzano le proprietà del metodo "End": "xlUp", "xlToRight", "xlToLeft". Per ottenere la selezione di più colonne, è sufficiente selezionare un intervallo di celle, anziché una singola cella, prima di lanciare la macro.

Se l'area da selezionare dipende da altri intervalli di celle, si utilizza una variante del tipo:

    Range(Selection, Range("A1:B65536").End(xlDown)).Select

[modifica] Estensione della macro a tutti i fogli di lavoro

Sia in Excel che in Open Office Calc tutti i servizi di sistema possono essere eseguiti per singolo foglio di lavoro.

I servizi di sistema sono quelli richiamabili all'esterno del foglio di lavoro, come quelli dei menu "File", "Modifica", "Dati", "Strumenti". Il programma consente di selezionare più fogli di lavoro (CTRL + Sheet), ma esegue questi servizi solo per il foglio corrente, non permette di stampare, mettere dei filtri o "Modifica /sostituisci con" su una selezione di fogli di lavoro.

Per fare ciò, occorre una macro che contenga i comandi da eseguire, e una seconda macro che la richiama tramite il costrutto "For Each..Next", eseguendola su tutti i fogli di lavoro del file corrente. Il codice è di questo tipo:

Sub For_Each()

  Dim mySheets As Worksheet 'mySheets è un foglio di lavoro e WorkSheet il file corrente   

  For Each mySheets In Worksheets

    mySheets.Select

    mySheets.Application.Run "PERSONAL.XLS!Macro 1" 'Esegue la Macro 1 salvata in PERSONAL.XLS

  Next mySheets 'Incrementa il contatore, passando al foglio di lavoro successivo

End Sub

oppure , in modo molto più compatto:

Sub Esecuzione_Macro_File_Excel()
ActiveWorkbook.Application.Run "PERSONAL.XLS!Macro 1" 'Esegue la Macro per tutti i fogli del file corrente
End Sub


Microsoft Excel

Microsoft Office consente l'esecuzione di macro all'interno di un singolo file o aprendo file salvati con i programmi Outlook, Word, Excel, Powerpoint, Publisher, Access. L'integrazione in pratica è disponibile per i programmi del pacchetto Office, e tramite Internet Explorer all'elaborazioni di dati pubblicati da altri applicativi nel web. Il registratore di macro è un editor grafico, che genera un codice Visual Basic, in base ai movimenti del mouse e alle stringhe digitate da tastiera. È possibile associare la macro ad un bottone che la richiama, e a un comando breve da tastiera (es. digitando "Alt+F5"), e salvarla a diversi livelli, per il file in uso, per una cartella di file oppure all'avvio di un programma di Office.

Dalla versione 2007, è possibile associare un commento alla macro e inserire parti di testo esplicative e non eseguibili all'interno del codice VB. È corretto un baco per il quale una macro non era automaticamente eseguita sul foglio Excel nel quale è posizionato il riferimento cella, cosa che rendeva talune macro difficilmente estendibili ad un intero foglio Excel, insieme di lucidi Powerpoint e simili. Inoltre, i riferimenti relativi rendono meno onerosa la manutenzione del codice generato, ed evitano di dover risistemare il codice della macro ad ogni cambiamento di nome del file o dei fogli Excel, e all'organizzazione del foglio, con aggiunta di righe/colonne o spostamento dei contenuti di interesse per la macro.


Open Office

Open Office contiene un application programming interface che consente la registrazione/compilazione manuale e l'esecuzione di macro in differenti linguaggi di programmazione, fra i quali: C++, Java, Python, CLI, StarBasic, JavaScript, OLE.

Open Office non possiede un ambiente di programmazione per il VBA di Microsoft, e non è compatibile con questo linguaggio. Esistono delle versioni del programma che permettono una conversione fra il codice VBA e Star Office.

Le macro di Open Office possono operare con una varietà molto più ampia di file, rispetto ad Excel 2007. Durante registrazione, dal menu File/Apri (e in Excel da "File/Cerca file") si richiamano i file con i quali si intende eseguire delle operazioni. Il registratore scriverà il codice necessario sia per il file di partenza, nel quale si è avviata la registrazione della macro, che per tutti quelli aperti con tale modalità. Le estensioni compatibili in OpenOffice includono immagini, file AutoCad, molti programmi di testo, i file Notepad (non importabili in una macro Excel) che sono una frequente via di comunicazione di dati fra applicazioni proprietarie. Le macro Openoffice operano anche con file Microsoft Office, mentre al solito non esiste un'interoperabilità in senso opposto. Il compilatore Macro di Excel è molto più veloce e stabile.



Commenti

Post popolari in questo blog

La Centrale Idroelettrica.

I pesci abissali. Zoologia marina.

Perché si dice avere il cappello sulle ventitré.