Når du oppretter en ny database, begynner du vanligvis med å opprette databaseobjekter som tabeller, skjemaer og rapporter. På et tidspunkt må du kanskje legge til programmering for å automatisere prosesser og koble disse objektene. Denne artikkelen introduserer programmeringsverktøyene i Access.
I denne artikkelen
- Hva er programmering?
- Bør jeg bruke makroer, eller bør jeg bruke VBA-kode?
- Bruke kommandoknappveiviseren til å utføre vanlige programmeringsoppgaver
- Forstå makroer
- Forstå VBA-kode
- Konvertere makroer til VBA-kode
Hva er programmering?
Programmering i Access betyr å legge til funksjonalitet i databasen ved hjelp av Access-makroer eller Visual Basic for Applications (VBA)-kode. Du kan for eksempel opprette et skjema og en rapport, og deretter legge til en kommandoknapp i skjemaet som åpner rapporten når du velger den. I så fall oppretter du en makro eller VBA prosedyre, og deretter angir du hendelsesegenskapen for kommandoknappen OnClick slik at kommandoknappen kjører makroen eller prosedyren. For en enkel operasjon, for eksempel å åpne en rapport, kan du bruke kommandoknappveiviseren til å gjøre arbeidet, eller du kan deaktivere veiviseren og programmere den selv.
Obs!
Mange Microsoft Office-programmer bruker begrepet «makro» til å referere til VBA kode. Dette kan forvirre Access-brukere fordi uttrykket «makro» i Access refererer til en navngitt samling av makrohandlinger som du setter sammen ved hjelp av makroverktøyet. Access-makrohandlinger representerer bare et delsett av kommandoene som er tilgjengelige i VBA. Makroverktøyet gir deg et mer strukturert grensesnitt enn Visual Basic Editor, slik at du kan legge til programmering i kontroller og objekter uten å lære VBA kode. Access-makroer kalles makroer i Hjelp-artikler i Access.
VBA koden kalles VBA kode, en funksjon eller en prosedyre.
VBA koden lagres i klassemoduler, som er en del av individuelle skjemaer eller rapporter og vanligvis inneholder kode bare for disse objektene, og i moduler, som ikke er knyttet til bestemte objekter og vanligvis inneholder global kode som du kan bruke i hele databasen.
Objekter som skjemaer og rapporter, og kontroller som kommandoknapper og tekstbokser, har hendelsesegenskaper som du kan legge ved makroer eller prosedyrer i. Hver hendelsesegenskap er knyttet til en bestemt hendelse, for eksempel å klikke musen, åpne et skjema eller endre data i en tekstboks. Hendelser kan også utløses av faktorer utenfor Access, for eksempel systemhendelser eller makroer eller prosedyrer som er knyttet til andre hendelser. Databasen kan bli kompleks hvis du legger til mange makroer eller prosedyrer i mange hendelsesegenskaper på mange objekter. I de fleste tilfeller kan du imidlertid få resultatene du ønsker ved hjelp av svært lite programmering.
Skal jeg bruke makroer, eller skal jeg bruke VBA-kode?
Beslutningen om å bruke makroer, VBAeller begge avhenger hovedsakelig av hvordan du planlegger å distribuere eller distribuere databasen. Hvis databasen for eksempel er lagret på datamaskinen, er du den eneste brukeren, og du er komfortabel med å bruke VBA kode, og du kan velge å bruke VBA for de fleste programmeringsoppgaver. Hvis du planlegger å dele databasen med andre personer fra en filserver, bør du imidlertid unngå å bruke VBA den på grunn av sikkerhetshensyn.
Baser beslutningen om å bruke makroer eller VBA kode på to spørsmål: sikkerhet og funksjonaliteten du vil bruke. Sikkerhetsspørsmål fordi VBA kan brukes til å opprette kode som kompromitterer dataene dine eller skader filer på datamaskinen. Når du bruker en database som noen andre har opprettet, aktiverer VBA du kode bare hvis du vet at databasen kommer fra en pålitelig kilde. Når du oppretter en database som andre skal bruke, kan du prøve å unngå å inkludere programmeringsverktøy som krever at brukeren eksplisitt stoler på databasen. Generelle teknikker for å unngå dette kravet vises senere i denne delen.
Hvis du vil sikre databasen, kan du prøve å bruke makroer når du kan og bare kan bruke VBA for operasjoner som ikke kan utføres ved hjelp av makrohandlinger. Prøv også å bruke bare makrohandlinger som ikke krever at databasen er klarert før de kan kjøres. Ved å begrense makrohandlinger på denne måten kan brukerne føle seg trygge på at databasen ikke har programmering som kan skade data eller andre filer på datamaskinen.
Makrohensyn
Access inneholder mange makrohandlinger som lar deg bygge kraftigere makroer enn tidligere versjoner av Access er tillatt. Nå kan du for eksempel opprette og bruke globale, midlertidige variabler ved hjelp av makrohandlinger, og du kan enklere håndtere feil ved hjelp av nye makrohandlinger for feilbehandling. I tidligere versjoner av Access var disse funksjonene bare tilgjengelige i VBA. Du kan også bygge inn en makro direkte i hendelsesegenskapen for et objekt eller en kontroll. En innebygd makro blir en del av objektet eller kontrollen og forblir med den hvis objektet eller kontrollen flyttes eller kopieres.
Makroer gir en enkel måte å håndtere mange programmeringsoppgaver på, for eksempel åpning og lukking av skjemaer og kjøring av rapporter. Du kan raskt knytte sammen databaseobjektene, for eksempel skjemaer og rapporter, som du opprettet fordi det er lite syntaks å huske. Argumentene for hver handling vises i makroverktøyet.
I tillegg til økt sikkerhet og brukervennlighet som makroer gir, må du bruke makroer til å utføre følgende oppgaver:
Tilordne en handling eller et sett med handlinger til en nøkkel. Dette krever oppretting av en makrogruppe med navnet
AutoKeys.Utføre en handling eller en serie med handlinger når du åpner en database. Dette krever oppretting av en makro med navnet
AutoExec.Obs!
Makroen
AutoExeckjøres foran andre makroer ellerVBAkoder, selv om du har angitt et oppstartsskjema i dialogboksen Alternativer for Access og knyttet en makro ellerVBAkode til skjemaetsOnOpenellerOnLoadhendelsen.
Hvis du vil ha mer informasjon om hvordan du bygger makroer, kan du se Forstå makroer.
VBA-hensyn
Bruk VBA i stedet for makroer hvis du vil gjøre ett av følgende:
- Bruk innebygde funksjoner eller lag dine egne. Access inneholder mange innebygde funksjoner, for eksempel
IPmt, som beregner en rentebetaling. Du kan bruke disse funksjonene til å utføre beregninger uten å opprette kompliserte uttrykk. Ved å brukeVBAkan du også opprette dine egne funksjoner for å utføre beregninger som går utover muligheten til et uttrykk, eller til å erstatte komplekse uttrykk. I tillegg kan du bruke funksjonene som du oppretter i uttrykk, til å bruke en felles operasjon på mer enn ett objekt. - Opprette eller manipulere objekter. I de fleste tilfeller er det enklest å opprette og endre et objekt i utformingsvisning for objektet. I noen tilfeller vil du imidlertid kanskje manipulere definisjonen av et objekt i kode. Ved å bruke
VBAkan du manipulere alle objektene i en database, i tillegg til selve databasen. - Utføre handlinger på systemnivå. Du kan utføre
RunApphandlingen i en makro for å kjøre et annet program, for eksempel Microsoft Excel, fra Access, men du kan ikke bruke en makro til å gjøre mye annet utenfor Access. Ved hjelpVBAav dette kan du kontrollere om det finnes en fil på datamaskinen, bruke automatisering eller dynamisk datautveksling (DDE) til å kommunisere med andre Microsoft Windows-baserte programmer, for eksempel Excel, og kalle opp funksjoner i dynamiske koblingsbiblioteker i Windows (DLLs). - Manipulere poster én om gangen. Du kan bruke
VBAtil å gå gjennom et sett med poster én post om gangen og utføre en operasjon på hver post. Makroer fungerer derimot med hele sett med poster samtidig.
Bruke kommandoknappveiviseren til å utføre vanlige programmeringsoppgaver
Hvis du legger til en kommandoknapp i et skjema, kan kommandoknappveiviseren hjelpe deg med å komme i gang med programmering. Veiviseren hjelper deg med å opprette en kommandoknapp som utfører en bestemt oppgave. I en Access-fil oppretter.accdb veiviseren en makro som er innebygd i OnClick egenskapen til kommandoknappen. I en .mdb fil oppretter .adpVBA veiviseren kode fordi innebygde makroer ikke er tilgjengelige i disse filformatene. I begge tilfeller kan du deretter endre eller forbedre makroen eller VBA koden slik at den passer bedre til dine behov.
Høyreklikk på skjemaet i navigasjonsruten der du vil legge til kommandoknappen, og klikk deretter på Utformingsvisning.
Klikk pil ned på Fanen Skjemautforming for å vise kontrollgalleriet , og kontroller deretter at Bruk kontrollveivisere er valgt.
Klikk Knapp i kontrollgalleriet på Fanen Skjemautforming.
Klikk der du vil kommandoknappen skal plasseres i utformingsrutenettet for skjemaet. Kommandoknappveiviseren starter.
På den første siden i veiviseren klikker du på hver kategori i Kategorier-listen for å se hvilke handlinger veiviseren kan programmere kommandoknappen til å utføre. Velg handlingen du vil bruke, i Handlinger-listen, og klikk deretter på Neste.
Klikk enten på alternativet Tekst eller på alternativet Bilde, avhengig av om du vil at tekst eller et bilde skal vises på kommandoknappen.
- Hvis du vil at teksten skal vises, kan du redigere teksten i boksen ved siden av alternativet Tekst.
- Hvis du vil at et bilde skal vises, foreslår veiviseren et bilde i listen. Hvis du vil velge et annet bilde, merker du av for Vis alle bilder for å vise en liste over alle kommandoknapp-bildene i Access, eller du klikker på Bla gjennom for å velge et bilde som er lagret et annet sted. Klikk på Neste.
Skriv inn et meningsfylt navn for kommandoknappen. Dette trinnet er valgfritt, og dette navnet vises ikke på kommandoknappen. Det er imidlertid lurt å skrive inn et beskrivende navn, slik at når du må referere til kommandoknappen senere, for eksempel når du angir tabulatorrekkefølgen for kontroller i skjemaet, blir det mye enklere å skille kommandoknappene fra hverandre. Hvis kommandoknappen lukker skjemaet, kan du for eksempel kalle det
cmdCloseellerCommandClose.Klikk på Fullfør. Access plasserer kommandoknappen i skjemaet.
Hvis du vil se hva veiviseren programmerte for deg, følger du disse valgfrie trinnene:
Hvis egenskapsarket ikke allerede vises, trykker du F4 for å vise det.
Klikk på Hendelse-fanen i egenskapsarket.
Klikk byggeverktøyknappen i egenskapsboksen Ved klikk.
Access starter makroverktøyet og viser makroen som veiviseren opprettet. Du kan redigere makroen hvis du vil. Hvis du vil ha mer informasjon, kan du se Forstå makroer. Når du er ferdig, klikker du Lukk i Lukk-gruppen på fanen Makroutforming for å lukke makroverktøyet. Hvis du blir bedt om å lagre endringene og oppdatere egenskapen i Access, klikker du på Ja for å lagre endringene eller Nei for å forkaste endringene.
Klikk Vis i Visninger-gruppen på fanen Skjemautforming, og klikk deretter Skjemavisning. Klikk den nye kommandoknappen for å bekrefte at den fungerer som forventet.
Forstå makroer
En makro er et verktøy som lar deg automatisere oppgaver og legge til funksjonalitet i skjemaer, rapporter og kontroller. Hvis du for eksempel legger til en kommandoknapp i et skjema, kan du knytte hendelsesegenskapen for knappen OnClick til en makro som inneholder kommandoene du vil at knappen skal utføre hver gang den er valgt.
Det er lurt å tenke på Access-makroer som et forenklet programmeringsspråk der du oppretter kode ved å bygge en liste over handlinger som skal utføres. Når du bygger en makro, velger du hver handling fra en rullegardinliste, og deretter fyller du inn den nødvendige informasjonen for hver handling. Makroer lar deg legge til funksjonalitet i skjemaer, rapporter og kontroller uten å skrive kode i en VBA modul. Makroer inneholder et delsett av kommandoene som er tilgjengelige i VBA, og de fleste synes det er enklere å bygge en makro enn å skrive VBA kode.
Du kan opprette en makro ved hjelp av makroverktøyet, som vist i illustrasjonen nedenfor.
Hvis du vil vise makroverktøyet:
- Klikk på Makro på Opprett-fanen i gruppen Makroer og kode.
Forstå VBA-kode
I likhet med makroer kan VBA du legge til automatisering og annen funksjonalitet i Access-programmet. Du kan utvide VBA ved hjelp av tredjepartskontroller, og du kan skrive dine egne funksjoner og prosedyrer for bestemte behov.
En rask måte å komme i gang med VBA på, er først å bygge en Access-makro og deretter konvertere den til VBA kode. Instruksjoner for å gjøre dette er inkludert i Konverter makroer til VBA-kode. Denne funksjonen oppretter en ny VBA modul som utfører de tilsvarende operasjonene i makroen. Den åpner også Visual Basic Editor slik at du kan begynne å endre prosedyren. Når du arbeider i Visual Basic Editor, kan du klikke nøkkelord og trykke F1 for å starte Hjelp for Access-utviklere og lære mer om hvert nøkkelord. Deretter kan du utforske Hjelp for Access-utvikler og oppdage nye kommandoer som kan hjelpe deg med å utføre programmeringsoppgavene du ønsker deg.
Konvertere makroer til VBA-kode
Du kan bruke Access til automatisk å konvertere makroer til VBA moduler eller klassemoduler. Du kan konvertere makroer som er vedlagt i et skjema eller en rapport, uansett om de finnes som separate objekter eller som innebygde makroer. Du kan også konvertere globale makroer som ikke er knyttet til et bestemt skjema eller en bestemt rapport.
Konvertere makroer som er vedlagt i et skjema eller en rapport
Denne prosessen konverteres til VBA makroer som refereres til av, eller innebygd i, et skjema eller en rapport eller noen av kontrollene, og legger til VBA koden i skjemaet eller rapportens klassemodul. Klassemodulen blir en del av skjemaet eller rapporten og følger med skjemaet eller rapporten hvis disse flyttes eller kopieres.
Høyreklikk skjemaet eller rapporten i navigasjonsruten, og klikk deretter Utformingsvisning.
Klikk enten Konverter skjemamakroer til Visual Basic eller Konverter rapportens makroer til Visual Basic i Verktøy-gruppen på Fanen Skjemautforming.
Velg om du vil at Access skal legge til feilbehandlingskode i funksjonene som genereres, i dialogboksen Konverter skjemamakroer eller Konverter rapportmakroer . Hvis makroene inneholder kommentarer, velger du også om du vil inkludere disse kommentarene i funksjonene. Klikk på Konverter for å fortsette. Hvis det ikke finnes noen klassemodul for skjemaet eller rapporten, blir det i Access opprettet og lagt til en prosedyre i modulen for hver makro som ble knyttet til skjemaet eller rapporten. Access endrer også hendelsesegenskapene for skjemaet eller rapporten, slik at de kjører de nye
VBAprosedyrene i stedet for makroene.Slik viser og redigerer
VBAdu koden:Hvis egenskapsarket ikke allerede vises mens skjemaet eller rapporten fremdeles er åpen i utformingsvisning, trykker du F4 for å vise det.
Klikk i en egenskapsboks som vises
[Event Procedure]i kategorien Hendelse på egenskapsarket, og klikk deretter Bygg-knappen . Hvis du vil vise hendelsesegenskapene for en bestemt kontroll, klikker du på kontrollen for å merke den. Hvis du vil vise hendelsesegenskapene for hele skjemaet eller rapporten, velger du Skjema eller Rapport fra rullegardinlisten øverst på egenskapsarket.
Visual Basic Editor åpnes i Access og viser hendelsesprosedyren i klassemodulen. Du kan rulle opp eller ned for å vise andre prosedyrer som er i samme klassemodul.
Konvertere globale makroer
Høyreklikk på makroen du vil konvertere i navigasjonsruten, og klikk deretter på Utformingsvisning.
Klikk Konverter makroer til Visual Basic i Verktøy-gruppen på fanen Makroutforming.
Velg alternativene du vil bruke, i dialogboksen Konverter makro, og deretter klikker du på Konverter. Access konverterer makroen og åpner Visual Basic Editor.
Slik viser og redigerer
VBAdu koden:- Hvis Project Explorer-ruten ikke vises i Visual Basic Editor, klikker du på Project Explorer på Visning -menyen.
- Utvid treet under navnet på databasen du arbeider i.
- Dobbeltklikk modulen
Converted Macro-<macro name>under Moduler. Modulen åpnes i Visual Basic Editor.
Legge ved en VBA-funksjon i en hendelsesegenskap
Når du konverterer en global makro til VBA, VBA plasseres koden i en standardmodul. I motsetning til en klassemodul er ikke en standardmodul en del av et skjema eller rapport. Du vil mest sannsynlig kombinere funksjonen med en hendelsesegenskap i et skjema, en rapport eller en kontroll, slik at koden kjøres nøyaktig når og hvor du vil. Hvis du vil gjøre dette, kan du kopiere koden til en klassemodul og deretter knytte den VBA til en hendelsesegenskap, eller du kan foreta et spesielt anrop fra hendelsesegenskapen til standardmodulen ved hjelp av følgende fremgangsmåte.
- Noter funksjonsnavnet i Visual Basic Editor. Hvis du for eksempel konverterte en makro med navnet
MyMacro, blirMyMacro()funksjonsnavnet . - Lukk Visual Basic Editor
- Høyreklikk skjemaet eller rapporten du vil knytte funksjonen til, i navigasjonsruten, og klikk deretter Utformingsvisning.
- Klikk på kontrollen eller inndelingen du vil knytte funksjonen til.
- Hvis egenskapsarket ikke allerede vises, trykker du F4 for å vise det.
- Klikk på boksen for egenskapshendelsen som du vil knytte funksjonen til, på Hendelse-fanen i egenskapsarket.
- Skriv inn et likhetstegn (
=) etterfulgt av navnet på funksjonen i egenskapsboksen, for eksempel=MyMacro(). Pass på å inkludere parentesene. - Lagre skjemaet eller rapporten ved å klikke på Lagre på verktøylinjen for hurtigtilgang.
- Dobbeltklikk på skjemaet eller rapporten i navigasjonsruten, og test den for å se at koden kjører som den skal.
Du vet nå de grunnleggende trinnene for å legge VBA til kode i databasen. Denne artikkelen beskriver bare det grunnleggende om hvordan du kommer i gang. Mange utmerkede referansebøker og ressurser på nettet kan hjelpe deg med å bygge opp programmeringsferdighetene dine.
Se også
Kjøre Access-makroer med hurtigtaster
Automatisere oppstartshendelser med en makro
Opprette en makro som kjører når du åpner en database