Quando si crea un nuovo database, in genere si inizia con la creazione di oggetti di database, ad esempio tabelle, maschere e report. A un certo punto, potrebbe essere necessario aggiungere la programmazione per automatizzare i processi e connettere quegli oggetti. Questo articolo presenta gli strumenti di programmazione in Access.
Contenuto dell'articolo
- Informazioni sulla programmazione
- Scegliere tra macro e codice VBA
- Eseguire attività di programmazione comuni con la Creazione guidata Pulsante di comando
- Informazioni sulle macro
- Informazioni sul codice VBA
- Convertire macro in codice VBA
Informazioni sulla programmazione
In Access, programmare significa aggiungere funzionalità al database usando le macro di Access o il codice di Visual Basic, Applications Edition (VBA). Ad esempio, si potrebbero creare una maschera e un report, quindi aggiungere un pulsante di comando alla maschera che apre il report quando viene selezionato. In tal caso, creare una macro o VBA una procedura e quindi impostare la proprietà evento del pulsante di comando in modo che il pulsante di OnClick comando esegua la macro o la procedura. Per un'operazione semplice, ad esempio l'apertura di un report, è possibile usare la Creazione guidata Pulsante di comando per eseguire il lavoro oppure è possibile disattivare la procedura guidata e programmarla autonomamente.
Nota
Molte applicazioni di Microsoft Office usano il termine "macro" per fare riferimento al VBA codice. Ciò può confondere gli utenti di Access perché, in Access, il termine "macro" si riferisce a una raccolta denominata di azioni di macro assemblata usando il Generatore di macro. Le azioni di macro di Access rappresentano solo un sottoinsieme dei comandi disponibili in VBA. Il Generatore di macro offre un'interfaccia più strutturata rispetto al Visual Basic Editor, in modo da poter aggiungere la programmazione a controlli e oggetti senza apprendimento del VBA codice. Negli articoli della Guida di Access le macro di Access sono denominate macro.
VBA Il codice è detto VBA codice, funzione o procedura.
VBA Il codice viene archiviato in moduli di classe, che fanno parte di singole maschere o report e di solito contengono solo codice per tali oggetti, e in moduli, che non sono legati a oggetti specifici e di solito contengono codice globale che è possibile usare in tutto il database.
Oggetti come maschere e report e controlli quali pulsanti di comando e caselle di testo hanno proprietà evento a cui è possibile associare macro o procedure. Ogni proprietà evento è associata a un evento specifico, ad esempio il clic del mouse, l'apertura di una maschera o la modifica dei dati in una casella di testo. Gli eventi possono essere attivati anche da fattori esterni ad Access, ad esempio eventi di sistema, oppure da macro o procedure collegate ad altri eventi. Il database può diventare complesso se si aggiungono molte macro o procedure a molte proprietà evento in molti oggetti. Nella maggior parte dei casi, tuttavia, è possibile ottenere i risultati desiderati utilizzando pochissima programmazione.
Inizio pagina
Scegliere tra macro e codice VBA
La decisione di utilizzare le VBAmacro o entrambe dipende principalmente dal modo in cui si prevede di distribuire o distribuire il database. Ad esempio, se il database è memorizzato nel computer, si è l'unico utente e si ha familiarità con l'uso VBA del codice, si potrebbe decidere di usarlo VBA per la maggior parte delle attività di programmazione. Tuttavia, se si prevede di condividere il database con altri utenti da un file server, è consigliabile evitare di utilizzarlo VBA per motivi di sicurezza.
Basare la decisione di utilizzare macro o VBA codice su due aspetti: la sicurezza e le funzionalità desiderate. La sicurezza è importante perché VBA può essere usata per creare codice che compromette i dati o danneggia i file nel computer. Quando si usa un database creato da un altro utente, abilitare VBA il codice solo se si è certi che il database proviene da un'origine attendibile. Quando si crea un database che verrà usato da altre persone, cercare di evitare di includere strumenti di programmazione che richiedano all'utente di considerare attendibile il database. Le tecniche generali per evitare tale requisito sono riportate più avanti in questa sezione.
Per proteggere il database, provare a usare le macro quando possibile e solo VBA per le operazioni che non possono essere eseguite usando le azioni di macro. Provare anche a usare solo le azioni di macro che non richiedono l'attendibilità del database prima di poter essere eseguite. La limitazione delle azioni di macro in questo modo consente agli utenti di sentirsi sicuri che il database non disponga di programmazioni che potrebbero danneggiare dati o altri file nei computer.
Considerazioni sulle macro
Access contiene molte azioni di macro che consentono di creare macro più potenti rispetto alle 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 queste funzionalità erano disponibili solo in VBA. È anche 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 con esso se 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 rapidamente gli oggetti di database, ad esempio maschere e report, creati perché la sintassi da ricordare è ridotta. 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 denominato
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
AutoExecmacro viene eseguita prima di qualsiasi altra macro oVBAcodice, anche se è stato designato un modulo di avvio nella finestra diOnOpendialogo Opzioni di Access e è stata associata una macro oVBAun codice al modulo oOnLoadall'evento specificato.
Per ulteriori informazioni su come creare macro, vedere Informazioni sulle macro.
Considerazioni su VBA
Usare VBA al posto delle macro se si desidera eseguire una delle operazioni seguenti:
- Usa funzioni predefinite o creane di personalizzate. Access include molte funzioni predefinite, come
IPmt, che consente di calcolare un pagamento di interessi. È possibile usare queste funzioni per eseguire calcoli senza creare espressioni complesse. UtilizzandoVBA, è anche possibile creare funzioni personalizzate per eseguire calcoli che vanno oltre la capacità 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 manipolare oggetti. Nella maggior parte dei casi, il modo più semplice è creare e modificare un oggetto nella visualizzazione Struttura. In alcune situazioni, tuttavia, potrebbe essere necessario manipolare la definizione di un oggetto nel codice. Utilizzando
VBA, è possibile modificare tutti gli oggetti di un database, nonché il database stesso. - Eseguire azioni a livello di sistema. È possibile eseguire l'azione
RunAppin una macro per eseguire un altro programma, ad esempio Microsoft Excel, da Access, ma non è possibile usare una macro per eseguire altre operazioni all'esterno di Access. UtilizzandoVBA, è possibile verificare se un file esiste nel computer, utilizzare Automation o Dynamic Data Exchange (DDE) per comunicare con altri programmi basati su Microsoft Windows, ad esempio Excel, e chiamare funzioni nelle librerie ad accesso dinamico di Windows (DLLs). - Modificare i record uno alla volta. È possibile utilizzare
VBAper scorrere un set di record un record alla volta ed eseguire un'operazione su ogni record. Le macro, invece, funzionano con interi set di record contemporaneamente.
Inizio pagina
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 (.accdb) la procedura guidata crea una macro incorporata nelle OnClick proprietà del pulsante di comando. In un .mdb file OR .adp la procedura guidata crea VBA codice perché le macro incorporate non sono disponibili in tali formati di file. In entrambi i casi è possibile modificare o migliorare la macro o VBA il codice in base alle proprie esigenze.
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 GIÙ per visualizzare la raccolta Controlli e quindi verificare che sia selezionata l'opzione Usa Creazione guidata controllo .
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 delle immagini di tutti i pulsanti di comando disponibili in Access oppure fare clic su Sfoglia per selezionare un'immagine archiviata in un'altra posizione. Fare clic su Avanti.
Immetti un nome significativo per il pulsante di comando. Questo passaggio è facoltativo e il nome non viene visualizzato sul pulsante di comando. È comunque consigliabile immettere un nome significativo in modo che quando sarà necessario fare riferimento al pulsante di comando in un secondo momento, ad esempio quando si imposta l'ordine di tabulazione per i controlli nella maschera, sarà molto più facile distinguere i pulsanti di comando. Se il pulsante di comando chiude la maschera, ad esempio, è possibile assegnargli
cmdCloseun nome oCommandClose.Fare clic su Fine. Access inserisce il pulsante di comando nella maschera.
Se si vuole vedere cosa ha programmato la procedura guidata, seguire questa procedura facoltativa:
Se la finestra delle proprietà non è già visualizzata, premere F4 per aprirla.
Fare clic sulla scheda Evento nella finestra delle proprietà.
Nella finestra della proprietà Al clic del mouse fare clic sul pulsante Crea .
Access avvia il Generatore di macro e visualizza la macro creata dalla procedura guidata. Se si vuole, è possibile modificare la macro. Per ulteriori informazioni, vedere Informazioni sulle macro. Al termine, nel gruppo Chiudi della scheda Progettazione macro fare clic su Chiudi per chiudere il Generatore di macro. Se in Access viene richiesto di salvare le modifiche e aggiornare la proprietà, fare clic su Sì per salvare le modifiche o su No per rifiutarle.
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.
Inizio pagina
Informazioni sulle macro
Una macro è uno strumento che consente di automatizzare le attività e aggiungere funzionalità a maschere, report e controlli. Se ad esempio si aggiunge un pulsante di comando a una maschera, è possibile associare la proprietà evento del OnClick pulsante a una macro contenente i comandi che si desidera vengano eseguiti dal pulsante ogni volta che viene selezionato.
È utile pensare alle macro di Access come a un linguaggio di programmazione semplificato in cui si crea codice generando 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 VBA modulo. Le macro forniscono un sottoinsieme dei comandi disponibili in VBAe per la maggior parte delle persone è più semplice creare una macro che scrivere VBA codice.
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.
Inizio pagina
Informazioni sul codice VBA
Analogamente alle macro, VBA consente di aggiungere automazione e altre funzionalità all'applicazione Access. È possibile estendere VBA usando controlli di terze parti e scrivere funzioni e procedure personalizzate per esigenze specifiche.
Un modo rapido per iniziare VBA consiste nel creare prima una macro di Access e quindi convertirla in VBA codice. Le istruzioni per eseguire questa operazione sono incluse in Convertire macro in codice VBA. Questa funzionalità crea un nuovo VBA modulo che esegue le operazioni equivalenti nella macro. Verrà inoltre aperto Visual Basic Editor in modo che sia possibile iniziare a modificare la procedura. Quando si lavora nel Visual Basic Editor, è possibile fare clic su parole chiave e premere F1 per avviare Access alla Guida per sviluppatori e ottenere altre informazioni su ogni parola chiave. È quindi possibile esplorare la Guida per sviluppatori di Access e individuare nuovi comandi che consentono di eseguire le attività di programmazione desiderate.
Inizio pagina
Convertire macro in codice VBA
È possibile usare Access per convertire automaticamente macro in moduli o moduli di VBA 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 un report specifico.
Convertire macro collegate a una maschera o un report
Questo processo converte in VBA tutte le macro a cui fa riferimento o che sono incorporate in una maschera o in un report o in uno dei relativi controlli e aggiunge il VBA codice 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 macro di maschera in Visual Basic o Converti macro di report in Visual Basic.
Nella finestra di dialogo Converti macro maschera o Converti macro rapporto specificare se si desidera che Access aggiunga il codice di gestione degli errori alle funzioni generate. Se le macro includono commenti, specificare se si desidera includere tali commenti nelle funzioni. Fare clic su Converti per continuare. Se non esiste alcun modulo di classe per la maschera o il report, ne verrà creato uno automaticamente e verrà aggiunta una routine al modulo per ogni macro associata alla maschera o al report. Inoltre, Access modifica le proprietà evento della maschera o del report, in modo che vengano eseguite le nuove
VBAprocedure anziché le macro.Per visualizzare e modificare il
VBAcodice:Mentre la maschera o il report è ancora aperto 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 delle proprietà visualizzata
[Event Procedure]e quindi fare clic sul pulsante Crea . 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 aprirà Visual Basic Editor e visualizzerà 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 Progettazione 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
VBAcodice:- 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
Converted Macro-<macro name>modulo. Visual Basic Editor apre il modulo.
Collegare una funzione VBA a una proprietà evento
Quando si converte una macro globale in VBA, il VBA codice 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 VBA codice in un modulo di classe e quindi associarlo a una proprietà evento oppure effettuare una chiamata speciale dalla proprietà dell'evento al modulo standard utilizzando la procedura seguente.
- In Visual Basic Editor prendere nota del nome della funzione. Ad esempio, se è stata convertita una macro denominata
MyMacro, il nome della funzione saràMyMacro(). - Chiudere Visual Basic Editor.
- Nel riquadro di spostamento fare clic con il pulsante destro del mouse sulla maschera o sul report a cui si desidera 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 aprirla.
- 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,=MyMacro()ad esempio . 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 conosci i passaggi di base per aggiungere VBA codice al tuo database. Questo articolo descrive solo le nozioni di base su come iniziare. Molti eccellenti libri di riferimento e risorse online possono aiutarti a sviluppare le tue capacità 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
Ordine degli eventi per gli oggetti di database
Inizio pagina