Innføring i Access-programmering

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 å finne 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 er prosessen med å legge til funksjonalitet i databasen ved hjelp av Access-makroer eller VBA (Visual Basic for Applications)-kode. 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.

Merknad: Mange Microsoft Office-programmer bruker begrepet «makro» til å referere til VBA-kode. Dette kan være forvirrende for Access-brukere fordi begrepet «makro» i Access refererer til en navngitt samling av makrohandlinger som du kan sette sammen ved hjelp av makroverktøyet. Makrohandlinger i Access 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 må huske på at i Hjelp for Access-artikler, kalles Access-makroer for makroer. 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 en rekke hendelsesegenskaper der du kan legge ved makroer eller prosedyrer. Hver hendelsesegenskap er tilknyttet en bestemt hendelse, som å klikke på musen, åpne et skjema eller endre data i en tekstboks. Hendelser kan også utløses av faktorer utenfor Access, for eksempel systemhendelser, eller av 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. I de fleste tilfeller kan du imidlertid oppnå resultatene du ønsker, med svært lite bruk av programmering.

Til toppen av siden

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 fra og med Access 2010-versjonen mange nye makrohandlinger som du kan bygge kraftigere makroer med enn du kan med tidligere versjoner. 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 slike funksjoner bare tilgjengelige ved bruk 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.

    Merknad:  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:

  • Bruke innebygde funksjoner, eller opprette dine egne funksjoner    Access inneholder mange innebygde funksjoner som RAVDRAG-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ørProgram-handlingen 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 stort 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.

Til toppen av siden

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. Veiviseren oppretter en makro i en Access (ACCDB)-fil som er innebygd i egenskapen OnClick 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.

  1. Høyreklikk på skjemaet i navigasjonsruten der du vil legge til kommandoknappen, og klikk deretter på Utformingsvisning.

  2. Klikk på nedoverpilen på Utforming-fanen for å vise galleriet Kontroller, og pass på at Bruk kontrollveivisere er valgt.

  3. Klikk på KnappUtforming-fanen i galleriet Kontroller.

  4. Klikk der du vil kommandoknappen skal plasseres i utformingsrutenettet for skjemaet.

    Kommandoknappveiviseren starter.

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

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

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

  8. Klikk på Fullfør.

    Access plasserer kommandoknappen i skjemaet.

  9. Hvis du vil se hva veiviseren har «programmert» for deg, følger du disse valgfrie trinnene:

    1. Hvis egenskapsarket ikke allerede vises, trykker du på F4 for å vise det.

    2. Klikk på Hendelse-fanen i egenskapsarket.

    3. Klikk på Bygg-knappen Bilde av knapp i egenskapsboksen OnClick.

      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 på LukkUtforming-fanen i Lukk-gruppen 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.

  10. Klikk på VisningUtforming-fanen i Visninger-gruppen, og klikk deretter på Skjemavisning Klikk på den nye kommandoknappen for å bekrefte at den fungerer som forventet.

Til toppen av siden

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

Makroverktøyet i Access 2010

Merknad: Legg merke til at makroverktøyet i Access 2007 var annerledes enn illustrasjonen ovenfor. I Access 2007 var makroverktøyet en serie med rader og kolonner som viste de ulike handlingene i makroen.

Hvis du vil vise makroverktøyet:

  • Klikk på MakroOpprett-fanen i gruppen Makroer og kode.

Til toppen av siden

Forstå VBA-kode

Som med makroer kan du med VBA 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 å bygge en Access-makro først 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 på nøkkelord og trykke på F1 for å starte Hjelp for Access-utvikler, 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.

Til toppen av siden

Konvertere makroer til VBA-kode

Du kan bruke Access til å konvertere makroer til VBA-moduler eller klassemoduler automatisk. 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.

Merknad: Du kan legge til VBA (Visual Basic for Applications)-kode til en nettdatabase. Du kan imidlertid ikke kjøre den koden mens databasen kjører i en nettleser. Hvis nettdatabasen inneholder VBA-kode, må du først åpne nettdatabasen ved hjelp av Access før du kan kjøre koden. Hvis du vil utføre programmeringsoppgaver i en nettdatabase, bruker du Access-makroer i stedet.

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.

  1. Høyreklikk på tabellen eller rapporten i navigasjonsruten, og klikk på Utformingsvisning.

  2. Klikk på enten Konverter skjemaets makroer til Visual Basic eller Konverter rapportens makroer til Visual BasicUtforming-fanen i Verktøy-gruppen.

  3. Velg om du vil at Access skal legge til feilbehandlingskode til funksjonene som genereres, i dialogboksene Konverter skjemamakroer eller Konverter rapportmakroer. 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, blir det i Access opprettet og lagt til en prosedyre i modulen for hver makro som ble knyttet til skjemaet eller rapporten. Hendelsesegenskapene for skjemaet eller rapporten endres også i Access, slik at de kjører de nye VBA-prosedyrene i stedet for makroene.

  4. Vise og redigere VBA-kode:

    1. Når skjemaet eller rapporten er åpen i Utformingsvisning, trykker du på F4 for å vise egenskapsarket, hvis det ikke allerede vises.

    2. Klikk på en hvilken som helst egenskapsboks på Hendelse-fanen som viser [Hendelsesprosedyre], og klikk deretter på Bygg-knappen Bilde av knapp . 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

  1. Høyreklikk på makroen du vil konvertere i navigasjonsruten, og klikk deretter på Utformingsvisning.

  2. Klikk på Konverter makroer til Visual BasicUtforming-fanen i Verktøy-gruppen.

  3. Velg alternativene du vil bruke, i dialogboksen Konverter makro, og deretter klikker du på Konverter.

    Access konverterer makroen og åpner Visual Basic Editor.

  4. Vise og redigere VBA-kode:

    1. Hvis Project Explorer-ruten ikke vises i Visual Basic Editor, klikker du på Project ExplorerVisning -menyen.

    2. Utvid treet under navnet på databasen du arbeider i.

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

  1. Noter funksjonsnavnet i Visual Basic Editor. Hvis du for eksempel har konvertert en makro kalt MinMakro, blir funksjonsnavnet MinMakro().

  2. Lukk Visual Basic Editor

  3. Høyreklikk på skjemaet eller rapporten i navigasjonsruten som du vil knytte funksjonen til, og klikk deretter på Utformingsvisning.

  4. Klikk på kontrollen eller inndelingen du vil knytte funksjonen til.

  5. Hvis egenskapsarket ikke allerede vises, trykker du på F4 for å vise det.

  6. Klikk på boksen for egenskapshendelsen som du vil knytte funksjonen til, på Hendelse-fanen i egenskapsarket.

  7. I egenskapsboksen skriver du inn et likhetstegn (=) etterfulgt av navnet på funksjonen, for eksempel =MinMakro() . Pass på å inkludere parentesene.

  8. Lagre skjemaet eller rapporten ved å klikke på Lagre på verktøylinjen for hurtigtilgang.

  9. Dobbeltklikk på skjemaet eller rapporten i navigasjonsruten, og test den for å se at koden kjører som den skal.

Nå kan du de grunnleggende trinnene for å legge til VBA-kode i databasen. Denne artikkelen beskriver bare grunnleggende hvordan du kommer i gang. Det finnes mange utmerkede referansebøker og nettressurser som kan hjelpe deg med å bygge opp programmeringsferdigheter.

Til toppen av siden

Utvid ferdighetene dine
Utforsk opplæring
Vær først ute med de nye funksjonene
Bli med i Office Insiders

Var denne informasjonen nyttig?

Takk for tilbakemeldingen!

Takk for tilbakemeldingen! Det høres ut som det kan være lurt å sette deg i kontakt med én av våre Office-kundestøtteagenter.

×