Macro (informatica): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Funzionalità collegamenti suggeriti: 2 collegamenti inseriti. |
|||
(34 versioni intermedie di 16 utenti non mostrate) | |||
Riga 1:
{{F|programmazione|ottobre 2012}}
In [[informatica]], il termine '''macro''' sta ad indicare una [[subroutine|procedura]], ovvero un "insieme" o "blocco" di [[istruzione (informatica)|comandi]] o [[istruzione (informatica)|istruzioni]], tipicamente ricorrente durante l'[[Esecuzione (informatica)|esecuzione]] di un [[programma (informatica)|programma]].
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]]
== Descrizione ==
=== Livelli di esecuzione ===▼
▲== 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).
Riga 15 ⟶ 14:
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.
===
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 lanciare 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.
Riga 24 ⟶ 23:
:<pre>Range(Selection, Selection.End(xlDown)).Select</pre>
Questa 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.
Se l'area da selezionare dipende da altri intervalli di celle, si utilizza una variante del tipo:
:<pre>Range(Selection, Range("A1:B" & (Range("A1").End(xlDown).Row))).Select</pre>
che seleziona l'intervallo iniziale e l'intervallo da A1 alla colonna B in corrispondenza della riga dove si trova l'ultima cella non vuota sotto A1. Per selezionare le celle sottostanti una colonna (es. la colonna 1) oggetto di filtro dati:<br/>
<pre>ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Select</pre>
== Anonimizzazione delle macro ==▼
La macro può essere resa utile dal significato del file e dei fogli di lavoro, sostituendo a questi istruzioni del tipo: ''ActiveSheet.Select"'' o ''"ActiveSheet.Add"''. Diversamente, se la macro è eseguita su un foglio di lavoro o file con nome diverso da quello registrato nel codice, l'esecuzione restituisce un messaggio di errore.▼
▲== Annidamento di macro ==
È possibile "annidare" le macro, in modo che una macro ne esegua un'altra registrata in precedenza. Il registratore, sia di Excel che di Open Office, tiene conto dei passaggi del ''mouse'' nei menu, fra i quali in "macro / registra nuova macro".
=== Estensione
Sia in Excel che in Open Office Calc tutti i servizi di sistema possono essere eseguiti per singolo foglio di lavoro.
Riga 92 ⟶ 89:
</pre>
=== Estensione
Tramite il percorso "File/Apri"o "File/cerca" la macro può eseguire operazioni su file che non sono aperti al momento del lancio della macro. La macro trova il file, lo apre ed esegue i comandi registrati.
=== Macro su date ===
Per eseguire un filtro, formula o procedura su una cella di tipo "Data", senza modificarne il formato europeo, occorre che i dati siano separati dal segno "*".
Diversamente, la macro porta la data nel formato americano del tipo "mm/g/aaaa", con i mesi che precedono i giorni. Ciò crea problemi nell'esecuzione di tutta una serie di funzioni, a partire dall'estrazione del mese o dell'anno contenuti nella data.
=== Macro
SI parla di macro ad evento quando la macro viene eseguita dopo aver compiuto certe azioni sul foglio di calcolo, come cliccare un bottone, aprire un certo foglio o file Excel.
Riga 108 ⟶ 105:
Una macro simile serve ad esempio a creare indice ''dinamico'' dei fogli presenti in un certo ''file'': aprendo il foglio "Indice", se altri fogli sono stati rinominati o eliminati, la macro aggiornerà il contenuto di conseguenza.
▲=== Anonimizzazione delle macro ===
▲La macro può essere resa utile
== Software ==
Per quanto detto in precedenza, macro e tabelle pivot sono strumenti di largo utilizzo nei fogli di calcolo, implementati da programmi quali [[Excel]] e [[Open Office Calc]].
Tutti i programmi della ''suite'' office e Open Office hanno un motore interno per la registrazione ed esecuzione di macro.
Riga 116:
L'integrazione fra programmi dello stesso pacchetto avviene anche sotto l'aspetto delle macro: è possibile, ad esempio, registrare una macro in Microsoft Access che opera con dei file Excel, e restituisce un output testuale su Word.
Esistono, inoltre, editor di macro, programmi dedicati che lavorano con file di decine di programmi appartenenti a pacchetti proprietari e open-source differenti: ad esempio, [[AutoHotkey]], [[AutoIt]], [[iMacros]], [[Macro Mate]] e [[AutoMate]].
=== Microsoft Office ===
[[Microsoft Office]] consente l'esecuzione di macro all'interno di un singolo file o aprendo file salvati con i programmi [[Outlook]], [[Microsoft Word|Word]], [[Microsoft Excel|Excel]], [[Powerpoint]], [[Publisher]], [[Microsoft Access|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 [[Office 2007|versione 2007]], è possibile associare un commento alla macro e inserire parti di testo esplicative e non eseguibili all'interno del codice VB. È corretto un [[bug]] per il quale una macro non era automaticamente eseguita sul foglio [[Microsoft Excel|Excel]] nel quale è posizionato il riferimento cella, cosa che rendeva talune macro difficilmente estendibili ad un intero foglio Excel, ad un insieme di diapositive di 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.
=== Star Office ===
Riga 127:
=== 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 (linguaggio di programmazione)|Java]], [[Python]],
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|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.
=== LibreOffice ===
Riga 143:
Per farlo, occorre riscrivere il codice delle macro di origine nel linguaggio di programmazione utilizzato dal programma di destinazione per le macro: ciò può essere fatto manualmente o con ricompilatori automatici, interni o esterni ai programmi interessati.
[[Novell]] e [[Sun Microsystems]] hanno reso disponibile, con la collaborazione di Microsoft, una versione dei propri programmi Open Office e Star Office compatibili con Microsoft Office, almeno per alcune funzionalità. I due programmi hanno una funzionalità che converte il codice VBA delle macro Excel nel proprio linguaggio di programmazione
Esistono anche dei ricompilatori automatici per passare da VBA a [[StarBasic]] e viceversa, e avere il codice necessario per eseguire la macro nel nuovo programma.
Riga 159:
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC||macro}}
* {{cita web|http://xoomer.virgilio.it/abcba/Esempi%20VBA.html|Macro Excel: Manuale per principianti}}
|