#Access: come utilizzare le macro
Programma in Access senza conoscere VBA
Autore: Andrea Pacchiarotti
Ultimo aggiornamento: 22 Gennaio 2023
Categoria: Microsoft Office Access Macro
Le Macro Microsoft Access sono rappresentate da una serie di comandi e azioni che possono essere eseguiti in modo automatico quando si avvia un'applicazione o si esegue una determinata azione. Le macro Access possono essere utilizzate per automatizzare una varietà di attività, come l'apertura di un form o di un report, la modifica dei dati in una tabella o l'esecuzione di una query.
Una macro Access può essere creata utilizzando la visualizzazione di progettazione delle macro, che offre un'interfaccia drag and drop per l'aggiunta di azioni. È inoltre possibile utilizzare il codice VBA (Visual Basic for Applications) per creare macro più complesse. Una volta create, le macro possono essere eseguite manualmente o possono essere associate a eventi, come il clic di un pulsante o l'apertura di un form.
Le macro Access possono essere utilizzate per:
- Automatizzare ripetitivi compiti
- Impostare la sicurezza della base dati
- Creare pulsanti per eseguire azioni specifiche
- Creare interfacce utente personalizzate
- Creare messaggi di avviso e richieste di conferma
- Creare rapporti automatici
- Creare la logica di navigazione per i moduli
È importante notare che tutte le macro possono rappresentare un rischio di sicurezza, in quanto possono essere utilizzate per eseguire codice maligno. Per questo motivo, Access, e gli altri programmi della suite Office, fornisce opzioni per la disabilitazione delle macro o per la loro esecuzione solo da fonti attendibili.
I primi oggetti che si creano in un database Access sono le tabelle, le maschere, le query e i report, ma esistono anche le macro Access.
Sommario #Access: come utilizzare le macro
- Programmazione in Access
- Macro Access
- A che serve una macro
- Creare macro dal Catalogo azioni
- Programmare con la Creazione guidata Pulsante di comando
- Convertire macro in VBA
Programmazione in Access
Quando si costruisce un database Access, si inizia normalmente creando alcuni oggetti quali tabelle, query, maschere e report. Se l’archivio cresce molto è probabile che nasca l’esigenza di implementare un po’ di programmazione per automatizzare taluni processi e collegare tra loro gli oggetti creati attraverso, per esempio, pulsanti di comando o per attivare altre azioni.
Per farlo è necessario usare le macro Access già pronte o creare da zero codice VBA - Visual Basic for Application (se ti interessa il VBA per Excel puoi iniziare leggendo Istruzioni condizionali e Cicli iterativi).
Spesso il termine macro viene erroneamente usato per riferirsi al codice VBA. In realtà in Access il termine macro riguarda una raccolta di azioni assemblabili mediante il Generatore di macro. Ma esse sono solo un sottoinsieme dei comandi disponibili in VBA.
Per capire se utilizzare macro, codice VBA o entrambi, bisogna considerare come si intende sviluppare il proprio database e le funzionalità che deve possedere. Per oggetti e controlli (ActiveX, Allegato, Casella combinata, Casella di controllo, Casella di riepilogo, Casella di testo, Collegamento, Controllo Struttura a schede, Cornice oggetto associato, Cornice oggetto non associato, Etichetta, Grafico, Gruppo di opzioni, Immagine, Interruttore, Interruzione di pagina, Pulsante di comando, Pulsante di opzione, Rettangolo, Riga, Sottomaschera, Sottoreport, Spostamento, Web browser), si hanno varie proprietà evento alle quali collegare macro e routine. Le proprietà evento sono associate a eventi come ad esempio: clic del mouse, apertura di una maschera, modifica di dati in una casella di testo. Gli eventi sono attivabili anche esternamente da Access, per esempio tramite eventi di sistema o da macro o routine collegate ad altri eventi.
Da tener presente che sotto l’aspetto della sicurezza il VBA può rappresentare un problema in quanto può essere usato per creare codice malevolo. Se si usa un database creato da sconosciuti, bisognerebbe abilitare il codice VBA solo se si è certi che l’archivio è sicuro.
Dalla scheda File, Opzioni, Centro di protezione, Impostazioni centro di protezione, Impostazioni delle macro, è possibile impostare diversi livelli di sicurezza riguardanti le macro.
Comparirà una finestra che permetterà di impostare il livello di protezione scegliendo tra:
- disabilita tutte le macro senza notifica
- disabilita tutte le macro con notifica
- disabilita tutte le macro tranne quelle con firma digitale
- abilita tutte le macro (scelta non consigliata, possibile esecuzione di codice pericoloso)
è preferibile scegliere quest’ultima impostazione se si è sicuri della provenienza dei file ricevuti.
Macro Access
Dalla versione Access 2010, sono pronte all’uso molte nuove macro che possono essere quindi utilizzate al posto di routine programmate in VBA.
È anche possibile incorporare una macro nella proprietà evento di oggetti o controlli; in tal modo essa diventa parte dell'oggetto o del controllo e resta associata a esso anche se l'oggetto o il controllo viene spostato o copiato.
Conviene usare la programmazione VBA anziché le macro per:
- Creare funzioni personalizzate
Access include molte funzioni predefinite per eseguire calcoli, ma grazie al VBA è possibile creare funzioni personalizzate - Creare o modificare oggetti
A volte è utile modificare la definizione di un oggetto nel codice anziché dalla visualizzazione Struttura dell’oggetto - Eseguire azioni a livello di sistema
VBA permette di allargare le azioni previste dalle macro come, ad esempio, verificare la presenza di un file nel computer, comunicare con altri programmi basati su Windows come la suite Office (DDE Dynamic Data Exchange) e molto altro - Modificare i record singolarmente
Le macro operano solo su interi set di record contemporaneamente
A che serve una macro
La macro automatizza attività e aggiunge funzionalità a maschere, report e controlli senza necessità di scrivere codice in un modulo VBA; è quindi molto più semplice creare una macro anziché programmare codice VBA.
Aggiungendo un pulsante a una maschera, sarà possibile, ad esempio, associargli una macro che verrà avviata al clic sul pulsante stesso, come vedremo tra poco nella sezione intitolata Programmare con la Creazione guidata Pulsante di comando.
Creare macro dal Catalogo azioni
È possibile creare una macro Access, selezionandone le azioni da un elenco a discesa e immettendo le relative informazioni in ogni azione; per farlo bisogna usare il Catalogo azioni, presente nella scheda Crea del gruppo Macro e codice, cliccando l’icona Macro.
- Flusso esecuzione programma
Elenco di blocchi in grado di modificare l’ordine con cui vengono eseguite le azioni di macro o agevolare la strutturazione di una macro - Commento
Visualizza informazioni che non vengono eseguite durante l’esecuzione della macro - Gruppo
Consente di raggruppare le azioni e il flusso di esecuzione del programma in un blocco denominato comprimibile che non viene eseguito - Se
Esegue un blocco logico se la condizione restituisce vero - Sottomacro
Consente di creare nella macro una raccolta denominata di azioni di macro che può essere chiamata solo da un’azione di macro EseguiMacro o SuErrore - Azioni
Elenco di azioni che se eseguite consentono di eseguire una funzione - Comandi di interfaccia utente
Elenco di azioni di macro che controllano gli elementi visualizzati
- AggiungiMenu
Aggiunge un menu a una barra dei menu personalizzata per una maschera o un report. Per ogni menu è necessaria un’azione AggiungiMenu distinta. Aggiunge inoltre un menu di scelta rapida personalizzato per una maschera, per un controllo in una maschera o per un report, nonché una barra dei menu o un menu di scelta rapida globale per tutte le finestre di Access - AnnullaRecord
Annulla l’ultima azione dell’utente - BloccaRiquadroSpostamento
Blocca o sblocca il riquadro di spostamento - FinestraMessaggio
Visualizza una finestra contenente un avviso o un messaggio informativo. Viene in genere utilizzata per visualizzare un messaggio quando una convalida non riesce - ImpostaCategorieVisualizzate
Specifica le categorie da visualizzare nel riquadro di spostamento - ImpostaVoceMenu
Imposta lo stato (attivata o disattivata, selezionata o deselezionata) delle voci dei menu personalizzati, inclusi i menu globali, relativi alla finestra attiva. Può essere utilizzata solo con i menu personalizzati creati tramite le macro per la creazione di barre dei menu - PassaA
Converte in un controllo sottomaschera l’oggetto di una sottomaschera caricato - Ripeti
Ripete l’ultima azione dell’utente - SpostaA
Passa a un gruppo e a una categoria specifici nel riquadro di spostamento - Comandi di sistema
Elenco di azioni di macro che apportano modifiche al sistema di database - ChiudiAccess
Esce da Access. Selezionare una delle opzioni di salvataggio disponibili - ChiudiDatabase
Chiude il database corrente - SegnaleAcustico
Provoca l’emissione di un segnale acustico. Utilizzare questa azione per segnalare condizioni di errore o modifiche visive importanti - VisualizzaPuntatoreAClessidra
Sostituisce il normale puntatore del mouse con una clessidra, o con un’altra icona scelta dall’utente, durante l’esecuzione della macro. Al termine dell’esecuzione viene ripristinato l’aspetto consueto del puntatore - Comandi macro
Elenco di azioni di macro che apportano modifiche alla macro - AnnullaEvento
Annulla l’evento di Access che ha determinato l’esecuzione della macro contenente questa azione. Se ad esempio l’evento PrimaDiAggiornare determina l’esecuzione di una macro di convalida e la convalida non riesce, utilizzare questa azione per annullare l’aggiornamento dei dati - ArrestaMacro
Arresta la macro in esecuzione. Riattiva inoltre l’eco schermo e la visualizzazione dei messaggi di sistema, se erano stati disattivati. Utilizzare questa azione per arrestare una macro quando si verifica una determinata condizione - ArrestaOgniMacro
Arresta tutte le macro in esecuzione. Riattiva inoltre l’eco schermo e la visualizzazione dei messaggi di sistema, se in precedenza erano stati disattivati. È possibile utilizzare questa azione quando è necessario interrompere l’esecuzione di tutte le macro a causa di una condizione di errore - CancellaErroreMacro
Cancella l’ultimo errore nell’oggetto MacroError - EseguiCodice
Esegue una routine Function di Visual Basic. Per eseguire una routine Sub o una routine evento, creare una routine Function che chiama tale routine Sub o evento - EseguiComandoMenu
Esegue un comando di menu Access. Il comando deve essere appropriato per la visualizzazione attiva quando la macro esegue il comando - EseguiMacro
Esegue una macro. È possibile usare questa azione per eseguire una macro dall’interno di un’altra macro, ripetere una macro, eseguire una macro basata su una determinata condizione o collegare una macro a un comando di menu personalizzato - EseguiMacroDati
Esegue una macro di dati - ImpostVarLocale
Imposta una variabile locale su un valore specificato - ImpostVarTemp
Imposta una variabile temporanea su un valore specificato - PassoAPasso
Sospende l’esecuzione della macro e apre la finestra di dialogo Macro passo a passo - RimuoviTutteLeVarTemp
Rimuove tutte le variabili temporanee - RimuoviVarTemp
Rimuove una variabile temporanea - SuErrore
Definisce il comportamento di gestione degli errori - Filtro/Query/Ricerca
Elenco delle azioni di macro che eseguono operazioni di filtro (leggi i filtri in Excel), query e ricerche nei record - Aggiorna
Aggiorna i record nella visualizzazione - AggiornaRecord
Aggiorna il record corrente - ApplicaFiltro
Applica un filtro, una query o una clausola SQL WHERE a una tabella, a una maschera o a un report per ordinare o limitare i record inclusi nella tabella o provenienti dalla tabella o dalla query sottostante la maschera o il report - ApriQuery
Apre una query di selezione o a campi incrociati oppure esegue una query di comando. È possibile aprire la query in visualizzazione Foglio dati, Struttura o Anteprima di stampa - CercaRecord
Cerca un record in un oggetto in base a un criterio - ImpostaFiltro
Applica un filtro, a una query o a una clausola SQL WHERE a una tabella, a una maschera o a un report per ordinare o limitare i record inclusi nella tabella o provenienti dalla tabella o dalla query sottostante la maschera o il report - ImpostaOrdinaPer
Applica un ordinamento ai record della tabella oppure ai record della tabella o query sottostante la maschera o il report - MostraOgniRecord
Rimuove tutti i filtri applicati dalla tabella, dalla query o dalla maschera attiva. Visualizza tutti i record nella tabella o nel set di risultati oppure tutti i record nella tabella o query sottostante la maschera - RieseguiQuery
Forza la ripetizione di una query su un controllo specifico dell’oggetto attivo oppure sull’oggetto stesso, se non è specificato alcun controllo. Se il controllo specificato non è basato su una tabella o una query, questa azione forza un ricalcolo del controllo - RimuoviFiltroOrdina
Elimina il filtro corrente - TrovaRecord
Trova il primo record o il record successivo che soddisfa i criteri specificati. I record vengono ricercati nella maschera o nel foglio dati attivo - TrovaRecordSuccessivo
Trova il record successivo che soddisfa i criteri specificati con l’ultima azione TrovaRecord o nella finestra di dialogo Trova. Utilizzare questa azione per spostarsi in sequenza sui record che soddisfano gli stessi criteri - Gestione finestre
Elenco di azioni di macro che gestiscono le finestre del database - ChiudiFinestra
Chiude la finestra specificata oppure quella attiva, se non è specificata alcune finestra - IngrandisciFinestra
Ingrandisce la finestra attiva fino a riempire la finestra di Access - RiduciFinestraAIcona
Riduce la finestra attiva a una barra del titolo visualizzata nella parte inferiore della finestra di Access - RipristinaFinestra
Ripristina le dimensioni precedenti di una finestra ingrandita o ridotta a icona. Questa azione viene sempre applicata alla finestra attiva - SpostaERidimensionaFinestra
Consente di spostare e ridimensionare la finestra attiva. Per gli argomenti vuoti viene usata l’impostazione corrente. Ogni misura è espressa in centimetri o pollici (a seconda di come è impostata nel pannello di controllo di Windows) - Importazione/esportazione dati
Elenco delle azioni di macro che importano, esportano, inviano e raccolgono dati - AggiungiContattoDaOutlook
Aggiunge un contatto da Outlook - EsportaConFormattazione
Invia i dati dell’oggetto di database specificato a un file in formato Excel (xls), RTF (rtf), Testo MS-DOS (txt), HTML (htm), Snapshot (snp) - IncludiOggettoDatabaseInMessaggioDiPostaElettronica
Include l’oggetto di database specificato in un messaggio di posta elettronica, in cui può essere visualizzato e inoltrato. È possibile inviare oggetti a qualsiasi applicazione di posta elettronica che utilizzi l’interfaccia standard Microsoft MAPI - SalvaComeContattoOutlook
Salva il record corrente come contatto di Outlook - StampaUnioneWord
Esegue un’operazione di stampa unione - Oggetti di database
Elenco di azioni di macro che apportano modifiche a controlli e oggetti nel database - Operazioni di immissione dati
Elenco delle azioni di macro che apportano modifiche ai dati - In questo database
Elenco degli oggetti con macro nel database
Vediamo come impostare una macro che crei un nuovo record in visualizzazione Maschera.
- Vai sulla scheda Crea e clicca l’icona Macro
- Nel Catalogo azioni di destra, scegli la voce Azioni > Oggetti di database > ApriReport. Facendo doppio clic su ApriReport compare la seguente finestra
Finsetra ApriReport delle macro Access - In Nome Report seleziona, dall’elenco a discesa di destra, il report corrispondente
- In basso a sinistra clicca + Aggiungi nuova azione
- Clicca VaiARecord per decidere cosa deve accadere dopo che il report è stato aperto. Ad esempio in Tipo oggetto si potrebbe selezionare l’oggetto Maschera e in Nome oggetto la maschera che interessa.
Con Record puoi scegliere quale record visualizzare (Precedente, Successivo, Primo, Ultimo, Vai, Nuovo), ad esempio Nuovo - Salva la macro
Programmare con la Creazione guidata Pulsante di comando
Aggiungendo un pulsante di comando a una maschera, è possibile usare la Creazione guidata per poterlo programmare. Ciò permetterà di creare una macro incorporata nel pulsante stesso (se il file Access ha estensione mdb la procedura guidata creerà invece codice VBA)
- Nel riquadro di spostamento (ovvero la zona sinistra dell’interfaccia che contiene tutti gli oggetti Access creati) cliccare con il tasto destro del mouse sulla maschera dove aggiungere il pulsante e scegliere Visualizzazione Struttura
- Nella scheda Progettazione, gruppo Controlli cliccare su Pulsante.
- Nella struttura della maschera cliccare dove inserire il pulsante
- Viene avviata la Creazione guidata Pulsante di comando
Creazione guidata Pulsante di comando delle macro Access - Scegliere la Categoria e l’Azione desiderata e cliccare Avanti
- Cliccare sul pulsante di opzione Testo o Immagine, a seconda di cosa si voglia visualizzare nel pulsante di comando e cliccare Avanti
- Immettere un nome evocativo per il pulsante in modo che, quando è necessario riferirvisi successivamente, sarà semplice distinguere tra eventuali pulsanti, cliccare Fine per inserirlo nella maschera
- Assegnare nomi consoni è la prima regola specialmente quando si lavora con molti oggetti e controlli. Ad esempio una casella di testo dove l’utente deve inserire il suo nome si dovrebbe chiamare txtNome. Ecco un elenco che potreste utilizzare: frm per le maschere, rpt per i report, mod per i moduli, txt per le caselle di testo, lbl per le etichette, cbo per le caselle combinate, lst per le liste, cmd per i pulsanti di comando, opt per i pulsanti di opzione, chk per le caselle di controllo
- Se si desidera vederne la programmazione, cliccare l’icona Finestra delle Proprietà e qui, aprire la scheda Evento, nella voce su click cliccare Genera (i tre puntini di sospensione). Dalla finestra che appare è anche possibile modificare la macro.
Convertire macro in VBA
Come per le macro, la programmazione in VBA aggiunge automazione e funzionalità ad Access. È possibile cominciare a usare VBA creando una macro e convertendola in codice VBA; in tal modo viene a crearsi un modulo VBA. Si apre anche Visual Basic Editor (VBE) che permette di modificare la routine; in VBE è altresì possibile cliccare su parole chiave e premere F1 per avviare la guida.
La conversione aggiunge codice VBA al modulo di classe della maschera o del report.
- Nel riquadro di spostamento cliccare con il tasto destro del mouse sulla maschera o sul report e scegliere Visualizzazione Struttura
- Nella scheda Progettazione, gruppo Strumenti, cliccare Converti macro della maschera in Visual Basic o Converti macro del report in Visual Basic
Si aprirà la finestra Converti da macro o Converti macro di report; qui è consigliabile aggiungere il codice per la gestione degli errori ed eventualmente i commenti, successivamente cliccare Converti.
In conclusione, le macro in Microsoft Access sono uno strumento potente per automatizzare i compiti ripetitivi, migliorare l'efficienza e la sicurezza della gestione dei dati. Con le macro è possibile creare interfacce utente personalizzate, generare rapporti automatici e migliorare la logica di navigazione. Utilizzare le macro Access può aiutare a risparmiare tempo e ridurre gli errori, rendendo più semplice e efficiente la gestione dei dati.
Potrebbe interessarti leggere anche: #Access: tipo dati e proprietà della tabella