Introduzione alla programmazione in Access

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 consente di orientarsi tra gli strumenti di programmazione disponibili in Access 2010.

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 la programmazione è il processo con cui vengono aggiunte funzionalità al database usando macro di Access o codice 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. Questo potrebbe confondere gli utenti di Access perché in Access il termine "macro" fa riferimento a una raccolta denominata di azioni di macro che è possibile assemblare 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 a quella di Visual Basic Editor, consentendo di aggiungere funzionalità di programmazione a controlli e oggetti senza dover necessariamente conoscere il codice VBA. È importante ricordare che, negli argomenti della Guida di Access, per fare riferimento alle macro di Access si usa il termine 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 anche essere attivati da fattori esterni ad Access, ad esempio eventi di sistema, oppure da macro o routine collegate 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.

Torna all'inizio

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

A partire dalla versione 2010, in Access sono disponibili molte nuove azioni di macro che consentono di creare macro più potenti rispetto a quanto possibile con 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 quando si usa 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 consente di calcolare 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 EseguiApplicazione 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.

Torna all'inizio

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 consentirà di creare 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.

  1. 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.

  2. Nella scheda Struttura fare clic sulla freccia giù per visualizzare la raccolta Controlli e quindi verificare che Usa creazioni guidate Controllo sia selezionato.

  3. Nella raccolta Controlli della scheda Struttura fare clic su Pulsante.

  4. 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.

  5. 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.

  6. 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.

  7. Immettere un nome significativo per il pulsante di comando. Questo è un passaggio facoltativo e il nome immesso non verrà visualizzato sul pulsante di comando. È però consigliabile immettere un nome significativo per facilitare i riferimenti successivi al pulsante di comando. Se, ad esempio, si sta impostando l'ordine di tabulazione per i controlli della maschera, sarà più facile distinguere i vari pulsanti di comando. Se si tratta di un pulsante di comando che consente di chiudere la maschera, sarà ad esempio possibile assegnare al comando il nome cmdChiudi oppure ComandoChiudi.

  8. Fare clic su Fine.

    Access inserisce il pulsante di comando nella maschera.

  9. Per vedere i risultati della programmazione eseguita tramite la procedura guidata, eseguire i passaggi facoltativi seguenti:

    1. Se la finestra delle proprietà non è già visualizzata, premere F4 per visualizzarla.

    2. Fare clic sulla scheda Evento nella finestra delle proprietà.

    3. Nella casella della proprietà Su clic fare clic sul pulsante Genera Icona del pulsante .

      Access avvia il Generatore di macro e visualizza la macro creata tramite la procedura guidata. Se necessario, è possibile modificare la macro. Per altre informazioni sulla modifica di una macro, vedere la sezione Informazioni sulle macro. Al termine, fare clic su Chiudi nel gruppo Chiudi della scheda Struttura per chiudere il Generatore di macro. Se Access chiede di salvare le modifiche e aggiornare la proprietà, fare clic su per salvare le modifiche oppure su No per annullarle.

  10. Fare clic su Visualizza nel gruppo Visualizzazioni della scheda Struttura e quindi fare clic su Visualizzazione Maschera. Fare clic sul nuovo pulsante di comando per verificare che funzioni come previsto.

Torna all'inizio

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.

È possibile paragonare le macro di Microsoft Access a un linguaggio di programmazione semplificato, in cui il codice viene creato redigendo un elenco delle 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. Grazie alle macro, è possibile 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.

Generatore di macro di Access 2010

Nota : Si noti che il Generatore di macro di Access 2007 è diverso da quello della figura precedente. In Access 2007 il Generatore di macro è costituito da una serie di righe e colonne in cui sono elencate le diverse azioni della macro.

Per visualizzare il Generatore di macro:

  • Nel gruppo Macro e codice della scheda Crea fare clic su Macro.

Torna all'inizio

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 innanzitutto una macro di Microsoft Access e quindi convertirla in codice VBA. Le istruzioni per eseguire questa operazione sono incluse nella sezione Convertire le macro in codice VBA. Questa funzionalità consente di creare un nuovo modulo VBA che consente di eseguire le stesse operazioni specificate nella macro, nonché di aprire Visual Basic Editor in modo da poter modificare la routine. Quando si usa Visual Basic Editor, è possibile fare clic sulle parole chiave e premere F1 per aprire la Guida per sviluppatori e visualizzare maggiori informazioni su ogni parola chiave. È quindi possibile esplorare la Guida per sviluppatori e scoprire i nuovi comandi che consentono di eseguire le attività di programmazione desiderate.

Torna all'inizio

Convertire macro in codice VBA

Access consente di 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.

Nota : Il codice Visual Basic, Applications Edition (VBA) può essere aggiunto a un database Web, ma non è possibile eseguire tale codice quando il database è in esecuzione in un Web browser. Se il database Web contiene codice VBA, per eseguire il codice è prima necessario aprire il database tramite Access. Per eseguire attività di programmazione in un database Web, usare le macro di Access.

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.

  1. Nel riquadro di spostamento fare clic con il pulsante destro del mouse sulla maschera o sul report e quindi scegliere Visualizzazione Struttura.

  2. Nel gruppo Macro della scheda Struttura fare clic su Converti macro della maschera in Visual Basic o Converti macro del report in Visual Basic.

  3. Nella finestra di dialogo Converti da macro o Converti macro di report scegliere se si vuole che venga aggiunto automaticamente il codice per la gestione degli errori alle funzioni generate da Access. 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, ne verrà creato uno automaticamente e verrà aggiunta una routine al modulo per ogni macro associata alla maschera o al report. Le proprietà evento del modulo o del report verranno inoltre modificate automaticamente, in modo che al posto delle macro vengano eseguite le nuove routine VBA.

  4. Per visualizzare e modificare il codice VBA:

    1. Con la maschera o il report ancora aperti in Visualizzazione Struttura, se la finestra delle proprietà non è già visualizzata, premere F4 per visualizzarla.

    2. Nella scheda Evento della finestra delle proprietà fare clic sulla casella di una proprietà in cui sia visualizzato [Routine evento] e quindi fare clic sul pulsante di compilazione Icona del pulsante . 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

  1. 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.

  2. Nel gruppo Strumenti della scheda Struttura fare clic su Converti macro in Visual Basic.

  3. 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.

  4. Per visualizzare e modificare il codice VBA:

    1. In Visual Basic Editor, se il riquadro Explorer del progetto non è visualizzato, scegliere Explorer del progetto dal menu Visualizza.

    2. Espandere l'albero sotto il nome del database che si sta usando.

    3. 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.

  1. 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().

  2. Chiudere Visual Basic Editor.

  3. 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.

  4. Fare clic sul controllo o sulla sezione a cui associare la funzione.

  5. Se la finestra delle proprietà non è già visualizzata, premere F4 per visualizzarla.

  6. Nella scheda Evento della finestra delle proprietà fare clic sulla casella della proprietà evento alla quale si vuole associare la funzione.

  7. Nella casella della proprietà digitare un segno di uguale (=) seguito dal nome della funzione, ad esempio =MiaMacro(). Assicurarsi di includere le parentesi.

  8. Salvare la maschera o il report facendo clic su Salva sulla barra di accesso rapido.

  9. Nel riquadro di spostamento fare doppio clic sulla maschera o sul report e controllare che il codice venga eseguito come previsto.

A questo punto si conoscono le procedure di base per l'aggiunta di codice VBA al database. Questo articolo illustra solo le nozioni fondamentali che consentono di iniziare a programmare. Per migliorare le proprie capacità di programmazione, sono disponibili diversi materiali di riferimento e risorse online.

Torna all'inizio

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa al programma Office Insider

Queste informazioni sono risultate utili?

Grazie per i tuoi commenti e suggerimenti

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×