Når du oppretter en ny database, starter du vanligvis med å opprette flere databaseobjekter, for eksempel tabeller, skjemaer og rapporter. Til slutt ender du på et punkt der du må legge til litt programmering for å automatisere bestemte prosesser og knytte databaseobjektene sammen. Denne artikkelen hjelper deg med å orientere deg om programmeringsverktøyene i Access.
I denne artikkelen
Hva er programmering?
I Access er programmering prosessen med å legge til funksjonalitet i databasen ved hjelp av Access makroer eller VBA-kode (Visual Basic for Applications). Anta for eksempel at du har opprettet et skjema og en rapport, og du ønsker å legge til en kommandoknapp i skjemaet som åpner rapporten når du klikker på den. Programmering i dette tilfellet er prosessen med å opprette en makro eller VBA-prosedyre og deretter angi kommandoknappens hendelsesegenskap OnClick, slik at når du klikker på kommandoknappen, kjører makroen eller prosedyren. Hvis du skal utføre enkel operasjon, som å åpne en rapport, kan du bruke kommandoknappveiviseren til å gjøre hele jobben, eller du kan slå av veiviseren og gjøre programmeringen selv.
Obs!: Mange Microsoft Office-programmer bruker begrepet «makro» til å referere til VBA-kode. Dette kan være forvirrende å Access brukere, fordi i Access refererer termen "makro" til en navngitt samling av makrohandlinger som du kan sette 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 og gjør at du kan legge til programmering i kontroller og objekter uten å måtte lære VBA-kode. Du bør huske at Access makroer kalles makroer i Access hjelpeartikler. Derimot kalles VBA-kode for VBA, kode, en funksjon eller en prosedyre. VBA-kode finnes 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 kan brukes i hele databasen) .
Objekter (for eksempel skjemaer og rapporter) og kontroller (for eksempel kommandoknapper og tekstbokser) har ulike 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 komplisert hvis du legger til mange makroer eller prosedyrer i flere hendelsesegenskaper for mange objekter, men i de fleste tilfeller kan du oppnå resultatene du ønsker ved hjelp av svært lite programmering.
Skal jeg bruke makroer, eller skal jeg bruke VBA-kode?
Avgjørelsen om å bruke makroer, VBA eller begge avhenger først og fremst av hvordan du planlegger å utgi eller distribuere databasen. Hvis databasen er lagret på datamaskinen og du er den eneste brukeren, og hvis du er komfortabel med å bruke VBA-kode, kan du for eksempel velge å bruke VBA til å utføre de fleste programmeringsoppgavene. Hvis du har tenkt å dele databasen med andre ved å plassere den på en filserver, bør du imidlertid unngå å bruke VBA av sikkerhetshensyn.
Avgjørelsen om du skal bruke makroer eller VBA-kode, bør baseres på to faktorer: sikkerheten og funksjonaliteten du ønsker. Sikkerhet er et problem fordi VBA kan brukes til å opprette kode som kan kompromittere sikkerheten til dataene eller skade filer på datamaskinen. Når du bruker en database som ble opprettet av andre enn deg selv, bør du aktivere VBA-kode bare hvis du vet at databasen kommer fra en pålitelig kilde. Når du oppretter en database som skal brukes av andre, bør du unngå å inkludere programmeringsverktøy som krever at brukeren spesifikt skal gi klarert status for databasen. Generelle metoder for å unngå behovet for at brukere skal klarere databasen, kommer senere i denne delen.
Du bør sørge for å bedre sikkerheten i databasen ved å bruke makroer når du kan, og bruke VBA-programmering bare for operasjoner som ikke kan utføres ved hjelp av makrohandlinger. I tillegg bør du prøve å bruke bare makrohandlinger som ikke krever klarert status for at databasen skal kjøre. Begrensninger i bruken av makrohandlinger på denne måten gjør at brukere kan være sikre på at databasen ikke har programmering som kan skade dataene eller andre filer på datamaskinen.
Makrohensyn
Access inneholder mange nye makrohandlinger som gjør det mulig å bygge kraftigere makroer enn du kan bygge ved hjelp av tidligere versjoner av Access. 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 er disse funksjonene bare tilgjengelige ved hjelp av VBA. I tillegg kan du bygge inn en makro direkte i hendelsesegenskapen for et objekt eller en kontroll. En innebygd makro blir en del av objektet eller kontrollen og følger med objektet eller kontrollen hvis disse blir flyttet eller kopiert.
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 og enkelt knytte sammen databaseobjektene (skjemaer, rapporter og så videre) som du har opprettet, fordi det er lite syntaks du må 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 kalt AutoKeys.
-
Utføre en handling eller en serie med handlinger når du åpner en database. Dette krever oppretting av en makrogruppe kalt AutoExec.
Obs!: Makroen AutoExec kjører før alle andre makroer eller VBA-kode, selv om du har angitt et oppstartsskjema i dialogboksen Alternativer for Access, og vedlagt en makro eller VBA-kode i skjemaets OnOpen- eller OnLoad-hendelse.
Hvis du vil ha mer informasjon om hvordan du bygger makroer, kan du se delen Forstå makroer.
VBA-hensyn
Du bør bruke VBA-programmering i stedet for makroer hvis du vil gjøre ett eller flere av følgende:
-
Bruk innebygde funksjoner, eller opprett dine egne funksjoner Access inkluderer mange innebygde funksjoner, for eksempel IPmt-funksjonen , som beregner en rentebetaling. Du kan bruke disse innebygde funksjonene til å utføre beregninger uten å måtte opprette kompliserte uttrykk. Når du bruker VBA-kode, kan du også opprette dine egne funksjoner enten til å utføre beregninger som overskrider funksjonene til et uttrykk, eller til å erstatte kompliserte uttrykk. I tillegg kan du bruke funksjonene som du oppretter i uttrykk, til å bruke en felles operasjon på mer enn ett objekt.
-
Opprette eller endre objekter I de fleste tilfeller finner du at det er enklest å opprette og endre et objekt i Utformingsvisning for objektet. I noen tilfeller bør du imidlertid endre definisjonen av et objekt i kode. Når du bruker VBA kan du manipulere alle objektene i en database, i tillegg til selve databasen.
-
Utføre handlinger på systemnivå Du kan utføre KjørApp-handlingen i en makro for å kjøre et annet program (for eksempel Microsoft Excel) innenfra Access, men du kan ikke bruke en makro til å gjøre mye annet utenfor Access. Når du bruker VBA, kan du sjekke for å se om en fil finnes 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 (DLL-er) i Windows.
-
Manipulere én post om gangen Du kan bruke VBA til å gå gjennom et sett med poster, én post om gangen, og utføre en operasjon i hver post. I motsetning til dette fungerer makroer 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 (ACCDB)-fil oppretter veiviseren en makro som er innebygd i OnClick-egenskapen for kommandoknappen. Veiviseren oppretter VBA-kode i en MDB- eller ADP-fil, fordi innebygde makroer ikke er tilgjengelige i de filformatene. I begge tilfeller kan du senere endre eller forbedre makroen eller VBA-koden etter 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 kommandoknappbildene som Access inneholder, eller du kan klikke Bla gjennom for å velge et bilde som er lagret et annet sted.
Klikk på Neste.
-
-
Skriv inn et meningsfylt navn for kommandoknappen. Dette er et valgfritt trinn, og navnet vises ikke på kommandoknappen. Det er imidlertid en god idé å angi et beskrivende navn, slik at når du trenger å referere til kommandoknappen senere (for eksempel hvis du vil angi fanerekkefølge for kontroller på skjemaet), vil det være mye enklere å skille mellom kommandoknappene. Hvis kommandoknappen lukker skjemaet, kan du for eksempel kalle den cmdClose eller CommandClose.
-
Klikk på Fullfør.
Access plasserer kommandoknappen i skjemaet.
-
Hvis du vil se hva veiviseren har «programmert» for deg, følger du disse valgfrie trinnene:
-
Hvis egenskapsarket ikke allerede vises, trykker du på 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 om hvordan du redigerer en makro, se delen Forstå makroer). Når du er ferdig, klikker du Lukk i Lukk-gruppen på fanen Makroutforming for å lukke makroverktøyet. Hvis Access ber deg om å lagre endringene og oppdatere egenskapen, klikker du 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 gjør det mulig å automatisere oppgaver og legge til funksjonalitet i skjemaer, rapporter og kontroller. Hvis du for eksempel legger til en kommandoknapp i et skjema, knytter du hendelsesegenskapen OnClick for knappen til en makro som inneholder kommandoen du vil at knappen skal utføre, hver gang du klikker på den.
Det er nyttig å 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 gjør at du kan legge til funksjonalitet i skjemaer, rapporter og kontroller uten å skrive kode i en VBA-modul. Makroer har et delsett med kommandoer 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 lar VBA deg 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 dine egne behov.
En rask måte å komme i gang med VBA-programmering på, er først å bygge en Access makro og deretter konvertere den til VBA-kode. Instruksjoner for dette er inkludert i delen Konvertere 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 Access Hjelp for utviklere og lære mer om hvert nøkkelord. Deretter kan du utforske Access hjelp for utviklere og oppdage nye kommandoer for å hjelpe deg med å utføre programmeringsoppgavene du ønsker.
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 vedlagt i et bestemt skjema eller en rapport.
Konvertere makroer som er vedlagt i et skjema eller en rapport
Denne prosessen konverterer alle makroer som det er referert til (eller som er innebygd) i et skjema eller en rapport (eller noen av de tilhørende kontrollene), til VBA, og legger til VBA-kode i skjemaets 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 på tabellen eller rapporten i navigasjonsruten, og klikk på Utformingsvisning.
-
Klikk enten Konverter skjemamakroer til Visual Basic eller Konverter rapportens makroer til Visual Basic i Verktøy-gruppen på Fanen Skjemautforming.
-
I dialogboksen Konverter skjemamakroer eller Konverter rapportmakroer velger du om du vil Access legge til feilbehandlingskode i funksjonene den genererer. Hvis du har kommentarer i makroene, velger du også om du vil ha dem inkludert som kommentarer i funksjonene. Klikk på Konverter for å fortsette.
Hvis det ikke finnes noen klassemodul for skjemaet eller rapporten, oppretter Access en og legger til en prosedyre i modulen for hver makro som var knyttet til skjemaet eller rapporten. Access endrer også hendelsesegenskapene for skjemaet eller rapporten, slik at de kjører de nye VBA-prosedyrene i stedet for makroene.
-
Vise og redigere VBA-kode:
-
Når skjemaet eller rapporten er åpen i Utformingsvisning, trykker du på F4 for å vise egenskapsarket, hvis det ikke allerede vises.
-
Klikk i en egenskapsboks som viser [Hendelsesprosedyre], i kategorien Hendelse på egenskapsarket, og klikk deretter byggeknappen . 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.
Access åpner Visual Basic Editor 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.
-
Vise og redigere VBA-kode:
-
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 på makronavnet Konvertert makro, 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, er VBA-koden plassert 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 enten kopiere VBA-koden i en klassemodul og deretter knytte den til en hendelsesegenskap, eller du kan foreta en spesialoppkalling fra hendelsesegenskapen til standardmodulen ved å følge fremgangsmåten nedenfor.
-
Noter funksjonsnavnet i Visual Basic Editor. Hvis du for eksempel har konvertert en makro kalt MinMakro, blir funksjonsnavnet MinMakro().
-
Lukk Visual Basic Editor
-
Høyreklikk på skjemaet eller rapporten i navigasjonsruten som du vil knytte funksjonen til, og klikk deretter på Utformingsvisning.
-
Klikk på kontrollen eller inndelingen du vil knytte funksjonen til.
-
Hvis egenskapsarket ikke allerede vises, trykker du på F4 for å vise det.
-
Klikk på boksen for egenskapshendelsen som du vil knytte funksjonen til, på Hendelse-fanen i egenskapsarket.
-
I egenskapsboksen skriver du inn et likhetstegn (=) etterfulgt av navnet på funksjonen, for eksempel =MinMakro() . 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.
Nå vet du de grunnleggende trinnene for å legge til VBA-kode i databasen. Denne artikkelen beskriver bare det grunnleggende om hvordan du kommer i gang. det finnes mange utmerkede referansebøker og ressurser på nettet som 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