Innføring i programmering i Access

Gjelder for
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Når du oppretter en ny database, starter du vanligvis med å opprette databaseobjekter som tabeller, skjemaer og rapporter. På et tidspunkt må du kanskje legge til programmering for å automatisere prosesser og koble sammen disse objektene. Denne artikkelen gir en innføring i programmeringsverktøyene i Access.

I denne artikkelen

Hva er programmering?

I Access betyr programmering å legge til funksjonalitet i databasen ved hjelp av Access-makroer eller kode for Visual Basic for Applications (VBA). 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 kommandoknappens hendelsesegenskap OnClick slik at kommandoknappen kjører makroen eller prosedyren. Hvis du skal utføre enkel operasjon, som å åpne en rapport, kan du bruke kommandoknappveiviseren til å gjøre arbeidet, eller du kan slå av veiviseren og programmere den selv.

Obs!

Mange Microsoft Office-programmer bruker begrepet «makro» til å referere til VBA kode. Dette kan forvirre Access-brukere fordi begrepet «makro» i Access refererer til en navngitt samling av makrohandlinger som du setter 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, slik at du kan legge til programmering i kontroller og objekter uten å lære VBA kode. I Hjelp for Access-artikler kalles Access-makroer for makroer. VBA Kode kalles VBA kode, en funksjon eller en prosedyre. VBA Kode lagres i klassemoduler, som er en del av individuelle skjemaer eller rapporter, og som 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, for eksempel skjemaer og rapporter, og kontroller som kommandoknapper og tekstbokser, har hendelsesegenskaper som du kan knytte makroer eller prosedyrer til. Hver hendelsesegenskap er knyttet til en bestemt hendelse, for eksempel å klikke med 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 kompleks hvis du legger til mange makroer eller prosedyrer i mange hendelsesegenskaper for mange objekter. I de fleste tilfeller kan du imidlertid oppnå resultatene du ønsker ved å bruke svært lite programmering.

Til toppen av siden

Skal jeg bruke makroer, eller skal jeg bruke VBA-kode?

Avgjørelsen om å bruke makroer VBAeller begge avhenger hovedsakelig av hvordan du planlegger å utgi eller distribuere databasen. Hvis databasen er lagret på datamaskinen, er du for eksempel den eneste brukeren, og du er komfortabel med å bruke VBA kode, kan du velge å bruke VBA den til de fleste programmeringsoppgaver. Hvis du imidlertid har tenkt å dele databasen med andre fra en filserver, bør du unngå bruken VBA av den av sikkerhetshensyn.

Baser avgjørelsen om du skal bruke makroer eller VBA kode på to faktorer: sikkerheten og funksjonaliteten du ønsker. Sikkerhet er viktig fordi VBA den 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, må du aktivere VBA kode bare hvis du vet at databasen kommer fra en pålitelig kilde. Når du oppretter en database som andre vil bruke, bør du unngå å inkludere programmeringsverktøy som krever at brukeren eksplisitt klarerer databasen. Generelle metoder for å unngå dette kravet vises senere i denne delen.

Du kan sikre databasen ved å prøve å bruke makroer når du kan, og bare for VBA operasjoner som ikke kan utføres ved hjelp av makrohandlinger. Prøv også å bruke bare makrohandlinger som ikke krever klarering av databasen før de kan kjøres. Begrensning av makrohandlinger på denne måten hjelper brukere til å 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 det som tillates i 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 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 følger 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 har 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 kalt AutoKeys.

  • Utføre en handling eller en serie med handlinger når du åpner en database. Dette krever oppretting av en makro kalt AutoExec.

    Obs!

    Makroen AutoExec kjører før andre makroer eller VBA koder, selv om du har angitt et oppstartsskjema i dialogboksen Alternativer for Access og knyttet en makro eller VBA kode til skjemaet OnOpen eller OnLoad hendelsen.

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 eller flere av følgende:

  • Bruk innebygde funksjoner eller opprett dine egne. Access inneholder mange innebygde funksjoner som for eksempel IPmt, som beregner en rentebetaling. Du kan bruke disse funksjonene til å utføre beregninger uten å opprette kompliserte uttrykk. Ved å bruke VBAkan du også opprette dine egne funksjoner for å utføre beregninger som går utover funksjonene til et uttrykk, eller for å 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 er det enklest å opprette og endre et objekt i Utformingsvisning for objektet. I noen tilfeller bør du imidlertid endre 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 RunApp 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. Ved å bruke VBAkan du kontrollere 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 i Windows (DLLs).
  • 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-fil.accdb () som er innebygd i egenskapen OnClick for kommandoknappen. Veiviseren oppretter VBA kode i en .mdb OR-fil .adp 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 pil ned på fanen Skjemautforming for å vise kontrollgalleriet , og kontroller deretter at Bruk kontrollveivisere er valgt.

  3. Klikk Knappi kontrollgallerietfanen Skjemautforming.

  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 trinnet er valgfritt, 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 når du vil angi fanerekkefølge for kontroller på skjemaet, vil det være mye enklere å skille kommandoknappene fra hverandre. Hvis kommandoknappen lukker skjemaet, kan du for eksempel gi det cmdClose navnet 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 egenskapssiden ikke allerede vises, trykker du F4 for å vise den.

    2. Klikk på Hendelse-fanen i egenskapsarket.

    3. Klikk Build-knappen 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-gruppenfanen 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.

  10. Klikk Vis i Visninger-gruppenfanen Skjemautforming, og klikk deretter 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 funksjonaliteten til skjemaer, rapporter og kontroller. Hvis du for eksempel legger til en kommandoknapp i et skjema, kan du knytte knappens OnClick hendelsesegenskap til en makro som inneholder kommandoen du vil at knappen skal utføre, hver gang den velges.

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 det mulig å 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å MakroOpprett-fanen i gruppen Makroer og kode.

Til toppen av siden

Forstå VBA-kode

Som med makroer, VBA kan 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 VBA på, er å bygge en Access-makro først og deretter konvertere den til VBA kode. Instruksjoner for dette er inkludert i 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.

Konvertere makroer som er vedlagt i et skjema eller en rapport

Denne prosessen konverterer til makroer som det er referert til eller som er innebygd i et skjema eller en rapport, eller noen av de tilhørende kontrollene, og legger VBA til VBA koden 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å skjemaet eller rapporten i navigasjonsruten, og klikk deretter på Utformingsvisning.

  2. Klikk 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 dialogboksen Konverter skjemamakroer eller Konverter rapportmakroer . Hvis makroene inneholder kommentarer, velger du også om du vil at disse kommentarene skal inkluderes 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 koden VBA :

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

    2. Klikk i en hvilken som helst egenskapsboks som vises[Event Procedure], på Hendelse-fanen på egenskapsarket, og klikk deretter Build-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

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

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

  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 koden VBA :

    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 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 er 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 kopiere koden VBA til 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 med navnet MyMacro, blir MyMacro()funksjonsnavnet .
  2. Lukk Visual Basic Editor
  3. Høyreklikk skjemaet eller rapporten som du vil knytte funksjonen til, i navigasjonsruten, og klikk deretter Utformingsvisning.
  4. Klikk på kontrollen eller inndelingen du vil knytte funksjonen til.
  5. Hvis egenskapssiden ikke allerede vises, trykker du F4 for å vise den.
  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 =MyMacro(). 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 VBA til kode i databasen. Denne artikkelen beskriver bare grunnleggende hvordan du kommer i gang. Mange utmerkede referansebøker og nettressurser kan hjelpe deg med å bygge programmeringsferdighetene dine.

Se også

Opprette en grensesnittmakro

Kjøre Access-makroer med hurtigtaster

Automatisere oppstartshendelser med en makro

Opprette en makro som kjører når du åpner en database

Hendelsesrekkefølgen for databaseobjekter

Til toppen av siden