Come creare una macro in Microsoft Access: tutorial pratico

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

  1. Apri il database Access.
  2. Vai alla scheda Crea.
  3. Nel gruppo Macro e codice scegli Macro.
  4. Access apre il Generatore di macro.
  5. Seleziona la prima azione dall’elenco.
  6. Compila gli argomenti richiesti.
  7. Aggiungi eventuali azioni successive.
  8. Salva la macro con un nome descrittivo.
  9. Chiudi il generatore.
  10. 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.

Lascia un commento