Quando si crea un nuovo database, si inizia in genere creando diversi oggetti di database, ad esempio tabelle, maschere e report. Col tempo si arriverà al punto in cui si dovranno aggiungere alcuni elementi di programmazione per automatizzare determinati processi e collegare tra loro gli oggetti di database. Questo articolo illustra gli strumenti di programmazione disponibili in Access.
Contenuto dell'articolo
Informazioni sulla programmazione
In Access, la programmazione è il processo di aggiunta di funzionalità al database tramite macro Access o codice di Visual Basic, Applications Edition (VBA). Si supponga, ad esempio, di avere creato una maschera e un report e di volere aggiungere alla maschera un pulsante di comando che, se selezionato, consenta di aprire il report. La programmazione è in questo caso il processo che consente di creare una macro o una routine VBA e quindi di impostare la proprietà evento SuClic del pulsante di comando, in modo che quando si fa clic su tale pulsante venga eseguita la macro o la routine. Per un'operazione semplice, ad esempio l'apertura di un report, è possibile usare la Creazione guidata Pulsante di comando per eseguire tutte le operazioni oppure disattivare la procedura guidata ed eseguire la programmazione manualmente.
Nota: In molte applicazioni di Microsoft Office il termine "macro" viene usato in riferimento al codice VBA. Ciò può creare confusione Access utenti perché, in Access, il termine "macro" fa riferimento a una raccolta denominata di azioni di macro che è possibile assemblare usando il Generatore di macro. Access azioni di macro rappresentano solo un sottoinsieme dei comandi disponibili in VBA. Il Generatore di macro offre un'interfaccia più strutturata rispetto a quella di Visual Basic Editor, consentendo di aggiungere funzionalità di programmazione a controlli e oggetti senza dover necessariamente conoscere il codice VBA. Tenere presente che in Access articoli della Guida Access macro sono denominate macro. Per fare riferimento al codice VBA si usano invece i termini codice VBA, codice, funzione o routine. Il codice VBA è incluso nei moduli di classe, che fanno parte di maschere o report singoli e contengono in genere solo il codice per tali oggetti, e nei moduli, che non sono collegati a oggetti specifici e contengono in genere codice globale utilizzabile in tutto il database.
Per gli oggetti, quali maschere e report, e per i controlli, quali pulsanti di comando e caselle di testo, sono disponibili diverse proprietà evento alle quali è possibile collegare macro e routine. Ogni proprietà evento è associata a un evento specifico, ad esempio il clic del mouse, l'apertura di una maschera o la modifica di dati in una casella di testo. Gli eventi possono essere attivati anche da fattori esterni a Access, ad esempio eventi di sistema, oppure da macro o routine associate ad altri eventi. Il database potrebbe diventare più complesso se si aggiungono molte macro o routine a diverse proprietà evento di un numero elevato di oggetti, ma, nella maggior parte dei casi, per ottenere i risultati desiderati, è sufficiente un numero ridotto di elementi di programmazione.
Scegliere tra macro e codice VBA
Per scegliere se usare macro, codice VBA o entrambi, è necessario considerare come si intende distribuire il database. Se, ad esempio, il database è archiviato nel computer di un unico utente che conosce bene il codice VBA, è possibile scegliere di usare VBA per eseguire la maggior parte delle attività di programmazione. Se però si prevede di condividere il database con altri utenti archiviandolo in un file server, è opportuno evitare di usare VBA per motivi di sicurezza.
Per decidere se usare le macro o il codice VBA, è opportuno considerare due aspetti, ovvero la sicurezza e la funzionalità desiderate. La sicurezza costituisce un problema perché VBA può essere usato per creare codice che compromette la sicurezza dei dati o può danneggiare i file nel computer. Quando si usa un database creato da un altro utente, è opportuno abilitare il codice VBA solo se si è certi che il database proviene da un'origine attendibile. Quando si crea un database che verrà usato da altri utenti, è opportuno evitare di includere strumenti di programmazione che richiedono all'utente di concedere in modo specifico lo stato di attendibilità al database. Più avanti in questa sezione verranno illustrate le tecniche generali che consentono di evitare all'utente di dover considerare attendibile il database.
Per garantire la sicurezza del database, è opportuno provare a usare le macro quando possibile e ricorrere alla programmazione VBA solo per le operazioni che non possono essere eseguite mediante azioni di macro. È inoltre opportuno usare solo azioni di macro che possono essere eseguite senza dover concedere lo stato di attendibilità al database. Limitando in questo modo l'uso delle azioni di macro, si garantirà l'assenza di elementi di programmazione nel database che potrebbero danneggiare i dati o altri file nei computer degli utenti.
Considerazioni sulle macro
Access contiene molte nuove azioni di macro che consentono di creare macro più potenti rispetto a quelle che è possibile creare usando le versioni precedenti di Access. In questa versione è ad esempio possibile creare e usare variabili temporanee globali tramite azioni di macro e gestire gli errori in modo più efficace grazie alle nuove azioni di macro per la gestione degli errori. Nelle versioni precedenti di Access questi tipi di caratteristiche sono disponibili solo con VBA. È inoltre possibile incorporare una macro direttamente nella proprietà evento di un oggetto o di un controllo. Una macro incorporata diventa parte dell'oggetto o del controllo e rimane associata ad esso anche quando l'oggetto o il controllo viene spostato o copiato.
Le macro consentono di gestire facilmente molte attività di programmazione, ad esempio aprire e chiudere maschere ed eseguire report. È possibile collegare in modo semplice e rapido gli oggetti di database creati, quali maschere, report e così via, perché la sintassi da ricordare è davvero minima. Gli argomenti relativi a ogni azione sono visualizzati nel Generatore di macro.
Oltre che per soddisfare le esigenze di maggiore sicurezza e facilità d'uso, è necessario usare le macro per eseguire le attività di programmazione seguenti:
-
Assegnare un'azione o un insieme di azioni a un tasto. A questo scopo è necessario creare un gruppo di macro denominate AutoKeys.
-
Eseguire un'azione o una serie di azioni alla prima apertura del database. A questo scopo è necessario creare una macro denominata AutoExec.
Nota: La macro AutoExec viene eseguita prima di qualsiasi altra macro o del codice VBA, anche se è stata definita una maschera di avvio nella finestra di dialogo Opzioni di Access ed è stata collegata una macro o codice VBA all'evento SuApertura o SuCaricamento di tale maschera.
Per altre informazioni sulla creazione di macro, vedere la sezione Informazioni sulle macro.
Considerazioni su VBA
È opportuno usare la programmazione VBA invece delle macro se si vuole eseguire una delle operazioni seguenti:
-
Usare funzioni predefinite o creare funzioni personalizzate Access include molte funzioni predefinite, ad esempio la funzione IPmt , che calcola il pagamento di un interesse. È possibile usare queste funzioni predefinite per eseguire calcoli senza dover creare espressioni complesse. Grazie al codice VBA è anche possibile creare funzioni personalizzate per eseguire calcoli che superano le funzionalità di un'espressione o per sostituire espressioni complesse. È infine possibile usare le funzioni create nelle espressioni per applicare un'operazione comune a più oggetti.
-
Creare o modificare oggetti Nella maggior parte dei casi il modo più facile per creare e modificare un oggetto consiste nell'eseguire queste operazioni nella visualizzazione Struttura dell'oggetto. In alcune situazioni è invece preferibile modificare la definizione di un oggetto nel codice. Con VBA è possibile modificare tutti gli oggetti inclusi in un database, oltre al database stesso.
-
Eseguire azioni a livello di sistema È possibile eseguire l'azione EseguiApp in una macro per eseguire un altro programma, ad esempio Microsoft Excel, dall'interno di Access, ma non è possibile usare una macro per eseguire molte altre operazioni all'esterno di Access. Con VBA è invece possibile verificare la presenza di un file nel computer, usare l'automazione o DDE (Dynamic Data Exchange) per comunicare con altri programmi basati su Microsoft Windows, ad esempio Excel, nonché chiamare funzioni nelle DLL di Windows.
-
Modificare i record uno alla volta È possibile usare VBA per scorrere un set di record, un record alla volta, ed eseguire un'operazione in ogni record. Al contrario, le macro operano su interi set di record contemporaneamente.
Eseguire attività di programmazione comuni con la Creazione guidata Pulsante di comando
Quando si aggiunge un pulsante di comando a una maschera, è possibile usare la Creazione guidata Pulsante di comando per iniziare a programmare. La procedura guidata facilita la creazione di un pulsante di comando per l'esecuzione di un'attività specifica. In un file di Access (con estensione accdb) la procedura guidata crea una macro incorporata nella proprietà SuClic del pulsante di comando. In un file con estensione mdb o adp la procedura guidata consentirà invece di creare codice VBA, perché le macro incorporate non sono disponibili in questi formati di file. In entrambi i casi sarà quindi possibile modificare o migliorare la macro o il codice VBA in base alle esigenze specifiche.
-
Nel riquadro di spostamento fare clic con il pulsante destro del mouse sulla maschera per la quale aggiungere il pulsante di comando e quindi scegliere Visualizzazione Struttura.
-
Nella scheda Struttura maschera fare clic sulla freccia in giù per visualizzare la raccolta Controlli e quindi verificare che Usa creazioni guidate Controllo sia selezionato.
-
Nella raccolta Controlli della scheda Struttura maschera fare clic su Pulsante.
-
Nella griglia di struttura della maschera fare clic nel punto in cui si vuole inserire il pulsante di comando.
Viene avviata la Creazione guidata Pulsante di comando.
-
Nella prima pagina della procedura guidata fare clic su ogni categoria nell'elenco Categorie per visualizzare le azioni eseguibili dal pulsante di comando che è possibile programmare con la procedura guidata. Nell'elenco Azioni selezionare l'azione desiderata e quindi fare clic su Avanti.
-
Fare clic sull'opzione Testo oppure sull'opzione Immagine, a seconda che nel pulsante di comando si voglia visualizzare testo o un'immagine.
-
Se si vuole visualizzare testo, è possibile modificare il testo presente nella casella accanto all'opzione Testo.
-
Se si vuole visualizzare un'immagine, verrà proposta automaticamente un'immagine inclusa nell'elenco. Se si vuole selezionare un'immagine diversa, selezionare la casella di controllo Mostra tutte le immagini per visualizzare un elenco di tutte le immagini dei pulsanti di comando disponibili Access oppure fare clic su Sfoglia per selezionare un'immagine archiviata in un'altra posizione.
Fare clic su Avanti.
-
-
Immettere un nome significativo per il pulsante di comando. Si tratta di un passaggio facoltativo e questo nome non viene visualizzato sul pulsante di comando. Tuttavia, è consigliabile immettere un nome significativo in modo che, quando è necessario fare riferimento al pulsante di comando in un secondo momento (ad esempio, se si imposta l'ordine di tabulazione per i controlli della maschera), sarà molto più facile distinguere i pulsanti di comando. Se il pulsante di comando chiude la maschera, ad esempio, è possibile denominarla cmdChiudi o CommandClose.
-
Fare clic su Fine.
Access inserisce il pulsante di comando nella maschera.
-
Per vedere i risultati della programmazione eseguita tramite la procedura guidata, eseguire i passaggi facoltativi seguenti:
-
Se la finestra delle proprietà non è già visualizzata, premere F4 per visualizzarla.
-
Fare clic sulla scheda Evento nella finestra delle proprietà.
-
Nella casella della proprietà Al clic del mouse fare clic sul pulsante Genera .
Access avvia il Generatore di macro e visualizza la macro creata dalla procedura guidata. Se si vuole, è possibile modificare la macro. Per altre informazioni su come modificare una macro, vedere la sezione Informazioni sulle macro. Al termine, nel gruppo Chiudi della scheda Struttura macro fare clic su Chiudi per chiudere il Generatore di macro. Se Access chiede di salvare le modifiche e aggiornare la proprietà, fare clic su Sì per salvare le modifiche o su No per rifiutare le modifiche.
-
-
Nel gruppo Visualizzazioni della scheda Struttura maschera fare clic su Visualizza e quindi su Visualizzazione Maschera. Fare clic sul nuovo pulsante di comando per verificare che funzioni come previsto.
Informazioni sulle macro
Una macro è uno strumento che consente di automatizzare attività e aggiungere funzionalità a maschere, report e controlli. Se, ad esempio, si aggiunge un pulsante di comando a una maschera, la proprietà evento SuClic del pulsante verrà associata a una macro contenente i comandi che devono essere eseguiti ogni volta che si fa clic sul pulsante.
È utile considerare Access macro come un linguaggio di programmazione semplificato in cui creare codice creando un elenco di azioni da eseguire. Per creare una macro, si selezionano le singole azioni da un elenco a discesa e per ogni azione si immettono le informazioni necessarie. Le macro consentono di aggiungere funzionalità a maschere, report e controlli senza scrivere codice in un modulo VBA. Le macro offrono un sottoinsieme dei comandi disponibili in VBA. Per molti utenti è quindi più semplice creare una macro che scrivere codice VBA.
Per creare una macro, è necessario usare il Generatore di macro, illustrato nell'immagine seguente.
Per visualizzare il Generatore di macro:
-
Nel gruppo Macro e codice della scheda Crea fare clic su Macro.
Informazioni sul codice VBA
Analogamente alle macro, VBA consente di aggiungere l'automazione e altre funzionalità all'applicazione Access. È possibile estendere le prestazioni di VBA usando controlli di terze parti, nonché scrivere funzioni e routine personalizzate in base alle esigenze specifiche.
Un modo rapido per iniziare a usare la programmazione VBA consiste nel creare una macro Access e quindi convertirla in codice VBA. Le istruzioni per eseguire questa operazione sono incluse nella sezione Convertire le macro in codice VBA. Questa caratteristica crea un nuovo modulo VBA che esegue le operazioni equivalenti nella macro. Verrà aperto anche Visual Basic Editor, che consente di iniziare a modificare la procedura. Quando si lavora in Visual Basic Editor, è possibile fare clic su parole chiave e premere F1 per avviare Access Guida per sviluppatori e ottenere altre informazioni su ogni parola chiave. È quindi possibile esplorare Access Guida per sviluppatori e individuare nuovi comandi che consentono di eseguire le attività di programmazione desiderate.
Convertire macro in codice VBA
È possibile usare Access per convertire automaticamente le macro in moduli VBA o moduli di classe. È possibile convertire le macro collegate a una maschera o a un report, indipendentemente dal fatto che queste esistano come oggetti separati o macro incorporate. È anche possibile convertire macro globali non collegate a una maschera o a un modulo specifico.
Convertire macro collegate a una maschera o un report
Questo processo consente di convertire in VBA qualsiasi macro alla quale venga fatto riferimento da una maschera o da un report o che sia incorporata in una maschera o in un report, nonché nei relativi controlli, e di aggiungere codice VBA al modulo di classe della maschera o del report. Il modulo di classe diventa parte integrante della maschera o del report con cui viene spostato, nel caso in cui la maschera o il report venga spostato o copiato.
-
Nel riquadro di spostamento fare clic con il pulsante destro del mouse sulla maschera o sul report e quindi scegliere Visualizzazione Struttura.
-
Nel gruppo Strumenti della scheda Struttura maschera fare clic su Converti le macro della maschera in Visual Basic o Converti macro del report in Visual Basic.
-
Nella finestra di dialogo Converti macro maschera o Converti macro di report specificare se Access aggiungere il codice di gestione degli errori alle funzioni generate. Se poi le macro contengono commenti, specificare se si vuole che vengano inclusi nelle funzioni. Fare clic su Converti per continuare.
Se non esiste alcun modulo di classe per la maschera o il report, Access ne crea uno e aggiunge una routine al modulo per ogni macro associata alla maschera o al report. Access modifica anche le proprietà evento della maschera o del report in modo da eseguire le nuove routine VBA invece delle macro.
-
Per visualizzare e modificare il codice VBA:
-
Con la maschera o il report ancora aperti in Visualizzazione Struttura, se la finestra delle proprietà non è già visualizzata, premere F4 per visualizzarla.
-
Nella scheda Evento della finestra delle proprietà fare clic in una casella di proprietà in cui sia visualizzato [Routine evento] e quindi fare clic sul pulsante di compilazione . Per visualizzare le proprietà evento per un controllo specifico, fare clic sul controllo per selezionarlo. Per visualizzare le proprietà evento per l'intera maschera o report, selezionare Maschera o Report nell'elenco a discesa nella parte superiore della finestra delle proprietà.
Access apre Visual Basic Editor e visualizza la routine evento nel relativo modulo di classe. È possibile scorrere verso l'alto o verso il basso per visualizzare eventuali altre routine incluse nello stesso modulo di classe.
-
Convertire macro globali
-
Nel riquadro di spostamento fare clic con il pulsante destro del mouse sul nome della macro che si vuole convertire e quindi fare clic su Visualizzazione Struttura.
-
Nel gruppo Strumenti della scheda Struttura macro fare clic su Converti macro in Visual Basic.
-
Nella finestra di dialogo Converti macro selezionare le opzioni desiderate e quindi fare clic su Converti.
Access converte la macro e apre Visual Basic Editor.
-
Per visualizzare e modificare il codice VBA:
-
In Visual Basic Editor, se il riquadro Explorer del progetto non è visualizzato, scegliere Explorer del progetto dal menu Visualizza.
-
Espandere l'albero sotto il nome del database che si sta usando.
-
In Moduli fare doppio clic sul modulo Macro <nome macro> convertita.
Visual Basic Editor apre il modulo.
-
Collegare una funzione VBA a una proprietà evento
Quando si converte una macro globale in VBA, il codice VBA viene inserito in un modulo standard. A differenza di un modulo di classe, un modulo standard non fa parte di una maschera o di un report. È probabile che si voglia associare la funzione a una proprietà evento in una maschera, in un report o in un controllo, in modo che il codice venga eseguito esattamente nel momento e nella posizione desiderati. A tale scopo, è possibile copiare il codice VBA in un modulo di classe e quindi associarlo a una proprietà evento oppure creare una chiamata speciale dalla proprietà evento al modulo standard eseguendo la procedura seguente.
-
In Visual Basic Editor prendere nota del nome della funzione. Se, ad esempio, è stata convertita una macro denominata MiaMacro, il nome della funzione sarà MiaMacro().
-
Chiudere Visual Basic Editor.
-
Nel riquadro di spostamento fare clic con il pulsante destro del mouse sulla maschera o sul report al quale si vuole associare la funzione e quindi scegliere Visualizzazione Struttura.
-
Fare clic sul controllo o sulla sezione a cui associare la funzione.
-
Se la finestra delle proprietà non è già visualizzata, premere F4 per visualizzarla.
-
Nella scheda Evento della finestra delle proprietà fare clic sulla casella della proprietà evento alla quale si vuole associare la funzione.
-
Nella casella della proprietà digitare un segno di uguale (=) seguito dal nome della funzione, ad esempio =MiaMacro(). Assicurarsi di includere le parentesi.
-
Salvare la maschera o il report facendo clic su Salva sulla barra di accesso rapido.
-
Nel riquadro di spostamento fare doppio clic sulla maschera o sul report e controllare che il codice venga eseguito come previsto.
Ora si conoscono i passaggi di base per aggiungere codice VBA al database. Questo articolo descrive solo le nozioni di base su come iniziare. ci sono molti libri di riferimento e risorse online eccellenti che possono aiutarti a costruire le tue competenze di programmazione.
Vedere anche
Creare una macro di interfaccia utente
Eseguire una macro di Access mediante tasti di scelta rapida
Automatizzare gli eventi di avvio con una macro
Creare una macro che viene eseguita all'apertura di un database