Creare una macro in Microsoft Access è uno dei modi più semplici per automatizzare attività ripetitive senza scrivere subito codice VBA. Le macro dell’interfaccia utente possono aprire maschere e report, applicare filtri, eseguire comandi, avviare importazioni o esportazioni e coordinare una sequenza di azioni. Microsoft le supporta nelle versioni desktop correnti di Access, tra cui Access per Microsoft 365 e Access 2024.
Una macro non è però un semplice registratore di clic. È un oggetto logico che contiene azioni, argomenti, condizioni e blocchi di controllo. Per usarla bene bisogna capire quando creare una macro autonoma, quando incorporarla in un evento e quando invece passare a VBA. In questa guida costruiamo una macro passo passo e affrontiamo sicurezza, errori, Runtime e manutenzione.
Indice
- Che cos’è una macro Access
- Macro autonoma o incorporata
- Creazione passo passo
- Azioni e argomenti
- If, Else If ed Else
- Pulsanti
- AutoExec
- Import/export
- Sicurezza
- Runtime
- Problemi comuni
- FAQ
Che cos’è una macro in Access
Una macro è una sequenza di azioni eseguite da Access. Le macro dell’interfaccia utente sono collegate a oggetti come maschere, report, pulsanti e caselle di testo. Microsoft distingue queste macro dalle macro dati, che sono legate alle tabelle.
Le macro UI sono adatte per automatizzare funzioni dell’applicazione: aprire un report, applicare un filtro, mostrare un messaggio, importare un foglio, eseguire una query o chiudere una finestra. Non serve conoscere la sintassi VBA, perché le azioni vengono selezionate dal Generatore di macro.
Quando conviene usare una macro
Usa una macro quando la procedura è lineare, deve essere leggibile da utenti non programmatori e utilizza azioni già disponibili. Un pulsante che apre una maschera filtrata è un ottimo candidato. Lo stesso vale per una sequenza che apre un report, lo esporta e mostra un messaggio.
Passa a VBA quando servono cicli complessi, gestione avanzata di file, chiamate a librerie, funzioni personalizzate, oggetti dinamici o gestione errori articolata. Macro e VBA possono convivere nello stesso progetto.
Macro autonoma e macro incorporata
Una macro autonoma è un oggetto visibile nel riquadro di spostamento. È utile quando la stessa logica viene richiamata da più punti. Microsoft sottolinea che riutilizzare una macro autonoma evita di duplicare la stessa sequenza in più oggetti.
Una macro incorporata vive invece dentro una proprietà evento, per esempio Su clic di un pulsante o Su caricamento di una maschera. Non appare come oggetto separato. È adatta quando la logica appartiene soltanto a quell’evento.
Come creare una macro autonoma passo passo
- Apri il database Access.
- Vai alla scheda Crea.
- Nel gruppo Macro e codice scegli Macro.
- Access apre il Generatore di macro.
- Seleziona la prima azione dall’elenco.
- Compila gli argomenti richiesti.
- Aggiungi eventuali azioni successive.
- Salva la macro con un nome descrittivo.
- Chiudi il generatore.
- Esegui la macro in un ambiente di test.
Evita nomi generici come Macro1. Usa nomi come mcrApriDashboard, mcrEsportaVendite o mcrAvvioApplicazione. Una convenzione rende il database più manutenibile.
Il Generatore di macro
Il Generatore mostra azioni, argomenti e catalogo. Alcune azioni hanno campi obbligatori, altre opzionali. Leggi la descrizione prima di usare un’azione che modifica dati. Non inserire valori casuali soltanto per farla funzionare.
Molti argomenti accettano espressioni. Questo permette di riferirsi a controlli, campi, funzioni e valori. Per esempio una condizione può controllare se un campo è Null prima di aprire un report.
Mostra tutte le azioni
Alcune azioni vengono considerate più sensibili e possono essere nascoste finché non si abilita l’opzione per visualizzare tutte le azioni. Microsoft avverte che determinate azioni possono richiedere che il database sia attendibile.
Non confondere la visibilità con l’autorizzazione. Se un database proviene da una fonte non attendibile, la soluzione non è disabilitare tutta la sicurezza. Usa posizioni attendibili e policy coerenti.
Prima macro: aprire una maschera
Crea una macro con l’azione ApriMaschera o l’equivalente localizzato. Seleziona la maschera frmClienti, la visualizzazione normale e gli eventuali filtri. Salva come mcrApriClienti.
Quando esegui la macro, Access apre la maschera. È un esempio semplice ma introduce il modello: azione più argomenti.
Aprire una maschera filtrata
Puoi usare una condizione Where per mostrare un sottoinsieme. Se la maschera contiene il campo IDCliente, un pulsante in una maschera Ordini può aprire il cliente corrente. Il criterio deve rispettare il tipo del campo: numeri senza delimitatori di testo, stringhe correttamente delimitate, date nel formato appropriato.
Per criteri complessi, verifica sempre il risultato con una query o una maschera di test. Gli errori di delimitazione sono una causa frequente di filtri che non restituiscono record.
Aggiungere condizioni If
Il Generatore supporta blocchi If, Else If ed Else. Puoi, per esempio, controllare se una casella obbligatoria è vuota. Se lo è, mostra un messaggio; altrimenti esegui l’azione successiva.
Questo consente di creare logica senza passare subito a VBA. Mantieni però le condizioni leggibili. Se una macro contiene decine di blocchi annidati, può essere il momento di convertire la logica in codice strutturato.
Usare espressioni
Le macro possono usare funzioni e riferimenti come IsNull, Date, Now e riferimenti a controlli. Prima di costruire un’espressione complessa, testala nel Generatore di espressioni o in una query.
Non dare per scontato che un campo vuoto sia sempre Null: alcuni controlli possono contenere stringa vuota. Progetta le condizioni in base ai dati reali.
Macro incorporata in un pulsante
Apri una maschera in Struttura, seleziona un pulsante e apri la scheda Evento delle proprietà. Nella proprietà Su clic scegli Macro incorporata e apri il Generatore. Aggiungi le azioni e salva la maschera.
Il vantaggio è che la logica viaggia con il pulsante quando viene copiato insieme all’oggetto. Lo svantaggio è che una macro incorporata è meno visibile nell’inventario generale. Documenta le automazioni importanti.
Creare un pulsante trascinando una macro
Microsoft documenta anche la possibilità di trascinare una macro salvata dal riquadro di spostamento su una maschera in Struttura. Access crea un pulsante che richiama la macro. È un modo rapido per costruire un menu operativo.
Dopo la creazione modifica Nome, Didascalia e suggerimento. Un’etichetta come “Esporta report mensile” è molto più chiara del nome tecnico della macro.
Macro per aprire report
Puoi creare una macro che apre un report in anteprima, applica un filtro e poi lascia all’utente la scelta di stampare o esportare. Per processi automatici puoi invece usare azioni di output o VBA.
Se il report usa una query parametro, verifica che i parametri siano disponibili. Un’automazione che apre un report e resta bloccata sulla richiesta “Immettere un valore di parametro” non è realmente automatica.
Macro per importare Excel
Access dispone di azioni per importare, esportare o collegare fogli. Microsoft documenta ImportExportSpreadsheet. L’azione può lavorare con il database corrente e un file di foglio di calcolo.
Per importazioni ricorrenti usa una tabella staging. Una macro può importare il file, eseguire una query di validazione e aprire un report errori. Se l’import deve gestire nomi file dinamici e molti controlli, VBA può essere più adatto.
Macro per esportare Excel
Una query di selezione può essere esportata. Prima dell’export assicurati che restituisca i dati desiderati. Microsoft specifica che, per alcune azioni di trasferimento, non puoi sostituire il nome dell’oggetto con una SQL arbitraria: crea prima una query salvata.
Questo è anche un vantaggio organizzativo: la query diventa un oggetto testabile e documentabile.
Macro per importare altri database
L’azione ImportExportData consente operazioni con altri database in scenari supportati. Usa la documentazione Microsoft per gli argomenti corretti e testa sempre l’operazione su una copia.
Macro AutoExec
Una macro chiamata esattamente AutoExec viene eseguita all’apertura del database. Microsoft la indica come metodo per automatizzare eventi di startup. Può massimizzare la finestra, aprire una maschera iniziale o impostare l’ambiente.
Evita di mettere in AutoExec operazioni distruttive. Se una query di eliminazione viene eseguita automaticamente a ogni apertura, un errore di configurazione può causare danni immediati.
Bypass di AutoExec
Microsoft documenta che, in molte configurazioni, tenendo premuto Shift durante l’avvio è possibile bypassare AutoExec e altre opzioni. È utile per manutenzione. Non considerarlo però un meccanismo di sicurezza: la protezione dei dati deve essere applicata altrove.
AutoExec o maschera iniziale?
Se devi soltanto aprire una dashboard, puoi impostarla come maschera di avvio. Se devi eseguire una serie di controlli, AutoExec è più esplicito. Le due tecniche possono anche convivere, ma evita duplicazioni.
Macro dati
Access supporta anche macro dati associate a tabelle. Possono reagire a eventi sui dati o essere richiamate come macro dati con nome. Sono concettualmente diverse dalle macro UI. Usale soltanto quando la logica appartiene realmente al livello dati.
Documenta attentamente le macro dati perché un aggiornamento può attivare logica non visibile nella maschera che l’utente sta usando.
Sicurezza
Le macro possono eseguire azioni potenti. Un database scaricato da Internet o ricevuto via email non dovrebbe essere abilitato automaticamente. Usa il Centro protezione, posizioni attendibili e firme quando appropriato.
In azienda distribuisci il front-end da una fonte controllata. Se usi ACCDE, ricorda che riduce la possibilità di modificare codice e struttura ma non sostituisce la sicurezza del back-end.
Access Runtime
Runtime può eseguire macro incluse nell’applicazione. Questo è uno dei suoi casi d’uso principali: l’utente usa maschere e pulsanti senza modificare il progetto. Proprio per questo le macro devono gestire bene gli errori e non dipendere da comandi di progettazione.
Microsoft 365 e Access 2024
Le macro UI sono disponibili nelle versioni desktop correnti citate da Microsoft. L’interfaccia può variare tra build. Documenta la versione con cui hai testato la procedura, soprattutto in ambienti con canali di aggiornamento differenti.
32 e 64 bit
Le macro standard non contengono dichiarazioni API, quindi sono meno sensibili all’architettura di VBA. Tuttavia un’azione può richiamare codice, provider o controlli esterni che hanno dipendenze 32/64 bit. Testa il flusso completo.
Macro o VBA: criterio decisionale
Scegli macro quando il flusso usa azioni standard, ha poche condizioni ed è facile da leggere nel Generatore. Scegli VBA quando servono cicli, gestione errori avanzata, oggetti, file dinamici, API o funzioni riutilizzabili.
Non convertire una macro funzionante in VBA solo per prestigio tecnico. La manutenibilità è più importante della quantità di codice.
Convertire macro in VBA
In alcune versioni e contesti Access offre strumenti per convertire macro o azioni in codice. Anche quando la conversione automatica è disponibile, rivedi il risultato: aggiungi gestione errori, nomi chiari e commenti utili.
Debug delle macro
Usa l’esecuzione passo passo quando disponibile per vedere quale azione viene eseguita. Controlla condizioni e valori dei controlli. Riduci la macro al minimo per isolare l’errore.
Se una macro apre un report vuoto, verifica prima la query del report. Non cercare il problema nel Generatore se la sorgente non restituisce dati.
Logging
Le macro semplici possono mostrare messaggi, ma per processi importanti crea una query o funzione che registra l’esito. Una tabella log con DataOra, Processo, Utente, Esito e Dettaglio è preziosa.
Transazioni e query di azione
Le macro non sono il luogo ideale per orchestrare transazioni complesse. Se devi garantire che più aggiornamenti siano tutti confermati o tutti annullati, valuta DAO/VBA o logica server. Fai sempre backup prima di procedure distruttive.
Documentare le macro
Per ogni macro annota scopo, trigger, input, azioni e oggetti coinvolti. La guida documentare i flussi di import/export mostra come inventariare le automazioni.
Problemi comuni
La macro non parte
Controlla evento, nome, proprietà e sicurezza. Se è AutoExec verifica il nome esatto.
Un’azione non appare
Prova Mostra tutte le azioni e verifica se l’azione richiede un database attendibile.
La macro chiede un parametro
Controlla nomi di campi, controlli e query. Un riferimento errato viene spesso interpretato come parametro.
Il pulsante non fa nulla
Verifica Su clic, macro incorporata, eventuale condizione falsa e stato del controllo.
L’export non funziona
Controlla percorso, permessi, nome query, formato e attendibilità del database.
Funziona in Access completo ma non Runtime
La macro potrebbe dipendere da funzioni di progettazione o comandi non disponibili. Testa il pacchetto Runtime come ambiente separato.
Checklist prima della pubblicazione
- Nome descrittivo.
- Azioni minime necessarie.
- Condizioni testate.
- Query verificate.
- Sicurezza configurata.
- Errori gestiti.
- Runtime testato.
- Log previsto.
- Backup per query distruttive.
- Documentazione aggiornata.
FAQ
Serve conoscere VBA per creare macro?
No. Il Generatore permette di configurare azioni senza scrivere codice.
Posso usare una macro su un pulsante?
Sì, come macro incorporata o richiamando una macro autonoma.
Posso importare Excel con una macro?
Sì, Access dispone di azioni di import/export foglio. Per logiche complesse valuta VBA.
Cos’è AutoExec?
Una macro con nome speciale eseguita all’apertura del database.
Le macro funzionano in Runtime?
Le automazioni predisposte possono essere eseguite, ma devi evitare dipendenze da strumenti di sviluppo non disponibili.
Macro e macro dati sono la stessa cosa?
No. Le macro UI automatizzano l’interfaccia; le macro dati sono associate alle tabelle e agli eventi dati.
Fonti Microsoft
Microsoft descrive la procedura in Creare una macro di interfaccia utente, l’uso dei pulsanti di comando e la macro AutoExec.
Conclusione
Creare una macro in Microsoft Access è un ottimo punto di partenza per rendere un database più semplice e affidabile. Parti da una macro piccola, usa nomi chiari, controlla condizioni e sicurezza e documenta ogni automazione importante.
Quando la logica cresce, passa a VBA senza forzare il Generatore oltre ciò che rimane leggibile. Per altri esempi consulta Guide Access e automatizzare operazioni ripetitive in Access.