Introduktion til Access-programmering

Gælder for
Access til Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Når du opretter en ny database, starter du normalt med at oprette databaseobjekter som tabeller, formularer og rapporter. På et tidspunkt kan det være nødvendigt at tilføje programmering for at automatisere processer og forbinde disse objekter. I denne artikel introduceres programmeringsværktøjerne i Access.

I denne artikel

Hvad er programmering?

I Access betyder programmering, at der føjes funktionalitet til databasen ved hjælp af Access-makroer eller Visual Basic for Applications (VBA)-kode. Du kan f.eks. oprette en formular og en rapport og derefter føje en kommandoknap til den formular, der åbner rapporten, når du vælger den. I så fald skal du oprette en makro eller VBA procedure og derefter angive kommandoknappens hændelsesegenskab OnClick , så kommandoknappen kører makroen eller proceduren. Hvis du ønsker en enkel handling, f.eks. at åbne en rapport, kan du bruge guiden Kommandoknap til at udføre arbejdet, eller du kan deaktivere guiden og programmere den selv.

Bemærk

Mange Microsoft Office-programmer bruger betegnelsen "makro" til at henvise til VBA kode. Det kan forvirre Access-brugere, fordi betegnelsen "makro" i Access henviser til en navngiven samling af makrohandlinger, som du samler ved hjælp af Makrogenerator. Makrohandlinger i Access repræsenterer kun et udsnit af de kommandoer, der findes i VBA. Makrogenerator giver en mere struktureret grænseflade end Visual Basic Editor, så du kan føje programmering til kontrolelementer og objekter uden at lære VBA kode. I Hjælp-artikler i Access kaldes Access-makroer for makroer. VBA Kode kaldes VBA kode, en funktion eller en procedure. VBA Kode gemmes i klassemoduler, som er en del af individuelle formularer eller rapporter, og som normalt kun indeholder kode for disse objekter, samt i moduler, der ikke er knyttet til bestemte objekter, og som normalt indeholder global kode, som du kan bruge i hele databasen.

Objekter som formularer og rapporter og kontrolelementer som kommandoknapper og tekstfelter har hændelsesegenskaber, som du kan knytte makroer eller procedurer til. Hver hændelsesegenskab er knyttet til en bestemt hændelse, f.eks. klik med musen, åbning af en formular eller ændring af data i et tekstfelt. Hændelser kan også udløses af faktorer uden for Access, f.eks. systemhændelser, eller makroer eller procedurer, der er knyttet til andre hændelser. Din database kan blive kompleks, hvis du føjer mange makroer eller procedurer til mange hændelsesegenskaber for mange objekter. I de fleste tilfælde kan du dog opnå de resultater, du ønsker, ved hjælp af meget lidt programmering.

Toppen af siden

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

Beslutningen om at bruge makroer, eller begge dele, afhænger primært af, VBAhvordan du planlægger at installere eller distribuere databasen. Hvis databasen f.eks. er gemt på computeren, er du den eneste bruger, og du er fortrolig med at bruge VBA kode, som du måske beslutter dig for at bruge VBA til de fleste programmeringsopgaver. Hvis du har planer om at dele din database med andre personer fra en filserver, bør du muligvis ikke bruge den VBA af sikkerhedsmæssige årsager.

Baser din beslutning om at bruge makroer eller VBA kode på to hensyn: sikkerhed og de ønskede funktioner. Sikkerheden er vigtig, fordi VBA den kan bruges til at oprette kode, der kompromitterer dine data eller skader filer på din computer. Når du bruger en database, som en anden har oprettet, skal du kun aktivere VBA kode, hvis du ved, at databasen kommer fra en pålidelig kilde. Når du opretter en database, som andre skal bruge, skal du ikke inkludere programmeringsfunktioner, der kræver, at brugeren eksplicit har tillid til databasen. Generelle teknikker til at undgå dette krav vises senere i dette afsnit.

For at sikre databasen skal du prøve at bruge makroer, når du kan, og kun bruge VBA til handlinger, der ikke kan udføres ved hjælp af makrohandlinger. Forsøg også kun at bruge makrohandlinger, der ikke kræver, at der er tillid til databasen, før de kan køres. Når makrohandlinger begrænses på denne måde, kan brugerne føle sig sikre på, at databasen ikke har nogen programmering, der kan beskadige data eller filer på deres computere.

Makroovervejelser

Access indeholder mange makrohandlinger, der giver dig mulighed for at bygge mere effektive makroer, end det var tilladt i tidligere versioner af Access. F.eks. kan du nu oprette og bruge globale midlertidige variabler ved hjælp af makrohandlinger, og du kan håndtere fejl mere problemfrit ved hjælp af nye makrohandlinger til fejlhåndtering. I tidligere versioner af Access var disse funktioner kun tilgængelige i VBA. Du kan også integrere en makro direkte i hændelsesegenskaben for et objekt eller et kontrolelement. En integreret makro bliver en del af objektet eller kontrolelementet og bliver med det, hvis objektet eller kontrolelementet flyttes eller kopieres.

Makroer gør det nemt at håndtere mange programmeringsopgaver, f.eks. åbning og lukning af formularer og rapportkørsel. Du kan hurtigt binde databaseobjekter sammen, f.eks. formularer og rapporter, som du har oprettet, fordi der ikke er meget syntaks at huske. Argumenterne for hver handling vises i Makrogenerator.

Udover makroernes skærpede sikkerhed og brugervenlighed skal du bruge makroer, hvis du vil:

  • Tildele en handling eller en række handlinger til en tast. Dette kræver, at du opretter en makrogruppe kaldet AutoKeys.

  • Udføre en handling eller en række handlinger, første gang en database åbnes. Dette kræver, at du opretter en makro med navnet AutoExec.

    Bemærk

    Makroen AutoExec kører før alle andre makroer eller VBA koder, selvom du har angivet en startformular i dialogboksen Access-indstillinger og knyttet en makro eller VBA kode til formularen OnOpen eller OnLoad hændelsen.

Du kan få mere at vide om, hvordan du opretter makroer, under Forstå makroer.

VBA-overvejelser

Brug funktionen VBA i stedet for makroer, hvis du vil benytte en af følgende fremgangsmåder:

  • Brug indbyggede funktioner, eller opret dine egne. Access indeholder mange indbyggede funktioner, f.eks IPmt. , der beregner en renteydelse. Du kan bruge disse funktioner til at udføre beregninger uden at oprette komplicerede udtryk. Ved hjælp VBAaf , kan du også oprette dine egne funktioner til at udføre beregninger, der går ud over mulighederne for et udtryk eller erstatte komplekse udtryk. Desuden kan du bruge funktionerne, som du opretter i udtryk, til at anvende en hyppig handling på mere end ét objekt.
  • Oprette eller arbejde med objekter. I de fleste tilfælde er det lettest at oprette og redigere et objekt i det pågældende objekts Designvisning. I nogle situationer kan det dog være en fordel at redigere definitionen af et objekt i kode. Ved hjælp af VBAkan du arbejde med alle objekterne i en database og selve databasen.
  • Udføre handlinger på systemniveau. Du kan udføre RunApp handlingen i en makro for at køre et andet program, f.eks. Microsoft Excel, inde fra Access, men du kan ikke bruge en makro til at udføre meget andet uden for Access. Ved hjælp af VBA, kan du kontrollere, om en fil findes på computeren, bruge Automation eller Dynamic Data Exchange (DDE) til at kommunikere med andre Microsoft Windows-baserede programmer, f.eks. Excel, og kalde funktioner i Windows Dynamic Link Libraries (DLLs).
  • Arbejde med poster én ad gangen. Du kan bruge VBA til at gennemgå et sæt poster én post ad gangen og udføre en handling på hver post. I modsætning hertil arbejder makroer med komplette sæt af poster på én gang.

Toppen af siden

Brug guiden Kommandoknap til at udføre almindelige programmeringsopgaver

Hvis du føjer en kommandoknap til en formular, kan guiden Kommandoknap hjælpe dig med at komme i gang med programmering. Guiden hjælper dig med at oprette en kommandoknap, der udfører en bestemt opgave. I en Access-fil (.accdb) opretter guiden en makro, der er indlejret i OnClick egenskaben for kommandoknappen. Guiden opretter VBA kode i en .mdb OR-fil.adp, fordi indlejrede makroer ikke er tilgængelige i disse filformater. I begge tilfælde kan du derefter ændre eller udvide makroen eller VBA koden, så den passer bedre til dine behov.

  1. I navigationsruden skal du højreklikke på formularen, som du vil tilføje kommandoknappen, og derefter klikke på Designvisning.

  2. Klik på den nedadvendte pil for at få vist galleriet Kontrolelementer på fanen Formulardesign, og kontrollér, at Brug kontrolelementguider er markeret.

  3. Klik på knappen i galleriet Kontrolelementer på fanen Formulardesign.

  4. Klik på den ønskede placering for kommandoknappen i formulardesigngitteret. Guiden Kommandoknap starter.

  5. På den første side skal du klikke på hver kategori på listen Kategorier for at se hvilke handlinger, som guiden kan programmere kommandoknappen til at udføre. På listen Handlinger skal du vælge den ønskede handling og derefter klikke på Næste.

  6. Klik enten på indstillingen Tekst eller Billede, afhængigt af om du ønsker, at tekst eller et billede skal vises på kommandoknappen.

    • Hvis der skal vises tekst, kan du redigere teksten i feltet ud for indstillingen Tekst.
    • Hvis du vil have, at der skal vises et billede, så foreslår guiden et billede på listen. Hvis du vil vælge et andet billede, skal du markere afkrydsningsfeltet Vis alle billeder for at få vist en liste over alle kommandoknapbillederne, som findes i Acces, eller klikke på Gennemse for at vælge et billede, der er gemt et andet sted. Klik på Næste.
  7. Angiv et beskrivende navn for kommandoknappen. Dette trin er valgfrit, og dette navn vises ikke på kommandoknappen. Det er dog en god ide at angive et beskrivende navn, så det er meget lettere at skelne kommandoknapperne fra hinanden, når du har brug for at henvise til kommandoknappen senere, f.eks. når du indstiller fanerækkefølgen for kontrolelementer i din formular. Hvis f.eks. kommandoknappen lukker formularen, kan du navngive den cmdClose eller CommandClose.

  8. Klik på Udfør. I Access placeres kommandoknappen i formularen.

  9. Hvis du vil se, hvad guiden har programmeret for dig, kan du følge disse valgfrie trin:

    1. Hvis egenskabsarket ikke allerede vises, skal du trykke på F4 for at få det vist.

    2. Klik på fanen Hændelse i egenskabsarket.

    3. Klik på knappen Byg i egenskabsfeltet Ved klik.

      Access starter Makrogenerator og viser den makro, som guiden har oprettet. Du kan redigere makroen, hvis du vil. Få mere at vide under Forstå makroer. Når du er færdig, skal du klikke på Luk i gruppen Luk under fanen Makrodesign for at lukke Makrogenerator. Hvis du i Access bliver bedt om at gemme ændringerne og opdatere egenskaben, skal du klikke på Ja for at gemme ændringerne eller Nej for at afvise ændringerne.

  10. Klik på Vis i gruppen Visninger på fanen Formulardesign, og klik derefter på Formularvisning. Klik på den nye kommandoknap for at bekræfte, at den fungerer som forventet.

Toppen af siden

Forstå makroer

En makro er et værktøj, der gør det muligt at automatisere opgaver og føje funktioner til formularer, rapporter og kontrolelementer. Hvis du f.eks. føjer en kommandoknap til en formular, kan du knytte knappens hændelsesegenskab OnClick til en makro, der indeholder de kommandoer, som knappen skal udføre hver gang, den markeres.

Det er praktisk at opfatte Access-makroer som et forenklet programmeringssprog, som du bruger til at oprette kode ved at opbygge en liste over handlinger, der skal udføres. Når du opretter en makro, kan du vælge hver handling på en rulleliste og derefter udfylde de obligatoriske oplysninger for hver handling. Du kan bruge makroer til at føje funktioner til formularer, rapporter og kontrolelementer uden at skrive kode i et VBA modul. Makroer indeholder et undersæt af de kommandoer, der er tilgængelige i VBA, og de fleste har nemmere ved at oprette en makro, end at skrive VBA kode.

Du kan oprette en makro ved hjælp af Makrogenerator, der er vist i nedenstående illustration.

Sådan får du vist Makrogenerator:

  • Klik på Makro i gruppen Makroer og kode under fanen Opret.

Toppen af siden

Forstå VBA-kode

Som med makroer VBA kan du føje automatisering og andre funktioner til dit Access-program. Du kan udvide VBA ved hjælp af tredjepartskontrolelementer, og du kan skrive dine egne funktioner og procedurer til specifikke behov.

En hurtig måde at komme i gang på VBA er først at oprette en Access-makro og derefter konvertere den til VBA kode. En vejledning i at gøre dette findes i Konvertér makroer til VBA-kode. Denne funktion opretter et nyt VBA modul, som udfører de tilsvarende handlinger i makroen. Den åbner også Visual Basic Editor, så du kan begynde at redigere proceduren. Når du arbejder i Visual Basic Editor, kan du klikke på nøgleord og trykke på F1 for at starte Hjælp til Access Developer og få mere at vide om hvert nøgleord. Du kan derefter udforske Hjælp til Access Developer og finde nye kommandoer, som kan være en hjælp, når du skal udføre ønskede programmeringsopgaver.

Toppen af siden

Konvertér makroer til VBA-kode

Du kan bruge Access til automatisk at konvertere makroer til VBA moduler eller klassemoduler. Du kan konvertere makroer, der er knyttet til en formular eller rapport, uanset om de eksisterer som særskilte objekter eller indlejrede makroer. Du kan også konvertere globale makroer, der ikke er knyttet til en bestemt formular eller rapport.

Konvertér makroer, der er knyttet til en formular eller rapport

Denne proces konverteres til VBA en hvilken som helst makro, der henvises til i eller er indlejret i en formular eller rapport eller nogen af dens kontrolelementer, og føjer VBA koden til formularen eller rapportens klassemodul. Klassemodulet bliver en del af formularen eller rapporten og flytter med formularen eller rapporten, hvis den flyttes eller kopieres.

  1. Højreklik på formularen eller rapporten i navigationsruden, og klik derefter på Designvisning.

  2. I gruppen Funktioner under fanen Formulardesign skal du klikke på enten Konvertér formularens makroer til Visual Basic eller Konvertér rapportens makroer til Visual Basic.

  3. I dialogboksen Konvertér formularmakroer eller Konvertér rapportmakroer skal du vælge, om Access skal føje en fejlhåndteringskode til de funktioner, den genererer. Hvis dine makroer omfatter kommentarer, skal du også vælge, om disse kommentarer skal medtages i funktionerne. Klik på Konvertér for at fortsætte. Hvis der ikke findes noget klassemodul til formularen eller rapporten, så oprettes der et i Access, og der føjes en procedure til modulet for hver makro, der er knyttet til formularen eller rapporten. Access ændrer også hændelsesegenskaberne i formularen eller rapporten, så de kører de nye VBA procedurer i stedet for makroerne.

  4. Sådan får du vist og redigerer VBA koden:

    1. Mens formularen eller rapporten stadig er åben i designvisning, skal du trykke på F4 for at få det vist, hvis egenskabsarket ikke allerede vises.

    2. På fanen Begivenhed i egenskabsarket skal du klikke i et vilkårligt egenskabsfelt, der vises [Event Procedure], og derefter klikke på knappen Byg . For at få vist hændelsesegenskaberne for et bestemt kontrolelement skal du klikke på kontrolelementet for at vælge det. For at få vist hændelsesegenskaberne for hele formularen eller rapporten skal du vælge Formular eller Rapport på rullelisten øverst i egenskabsarket.

      Visual Basic Editor åbner i Access, og hændelsesproceduren vises i dens klassemodul. Du kan rulle op eller ned for at få vist en anden vilkårlig procedure, der er i samme klassemodul.

Konvertér globale makroer

  1. I navigationsruden skal du højreklikke på den makro, du vil konvertere, og derefter klikke på Designvisning.

  2. Klik på Konvertér makroer til Visual Basic i gruppen Funktioner under fanen Makrodesign.

  3. I dialogboksen Konvertér makro skal du vælge de ønskede indstillinger og derefter klikke på Konvertér. I Access konverteres makroen, og Visual Basic Editor åbnes.

  4. Sådan får du vist og redigerer VBA koden:

    1. I Visual Basic Editor, skal du i menuen Vis klikke på Projektstifinder, hvis ruden Projektstifinder ikke vises.
    2. Udvid træet under navnet på databasen, hvori du arbejder.
    3. Dobbeltklik på moduletConverted Macro-<macro name> under Moduler. Modulet åbner i Visual Basic Editor.

Knyt en VBA-funktion til en hændelsesegenskab

Når du konverterer en global makro til VBA, VBA placeres koden i et standardmodul. I modsætning til et klassemodul er et standardmodul ikke en del af en formular eller rapport. Du vil sandsynligvis knytte funktionen til en hændelsesegenskab i en formular, rapport eller et kontrolelement, så koden kører præcis på det ønskede tidspunkt og sted. For at gøre dette kan du kopiere VBA koden til et klassemodul og derefter knytte den til en hændelsesegenskab, eller du kan udføre et særligt kald fra hændelsesegenskaben til standardmodulet ved hjælp af følgende procedure.

  1. I Visual Basic Editor skal du notere dig funktionsnavnet. Hvis du f.eks. har konverteret en navngivet MyMacromakro, vil funktionsnavnet være MyMacro().
  2. Luk Visual Basic Editor
  3. Højreklik på den formular eller rapport i navigationsruden, som funktionen skal knyttes til, og klik derefter på Designvisning.
  4. Klik på kontrolelementet eller afsnittet, du vil knytte til funktionen.
  5. Hvis egenskabsarket ikke allerede vises, skal du trykke på F4 for at få det vist.
  6. På fanen Hændelse på egenskabsarket skal du klikke på hændelsesegenskabsfeltet, du vil knytte funktionen til.
  7. I egenskabsfeltet skal du skrive et lighedstegn (=) efterfulgt af navnet på funktionen – f.eks =MyMacro(). . Sørg for at medtage parenteserne.
  8. Gem formularen eller rapporten ved at klikke på Gem på værktøjslinjen Hurtig adgang.
  9. Dobbeltklik på formularen eller rapporten i navigationsruden, og test for at se, om koden virker korrekt.

Du har nu fået en grundlæggende vejledning i at føje VBA kode til databasen. Denne artikel giver kun en grundlæggende vejledning i, hvordan du kommer i gang. Mange fremragende opslagsværker og onlineressourcer kan hjælpe dig med at opbygge dine programmeringsfærdigheder.

Se også

Opret en brugergrænseflademakro

Køre en Access-makro ved at bruge en tastaturgenvej

Automatisere starthændelser med en makro

Oprette en makro, der køres, når du åbner en database

Rækkefølge af hændelser for databaseobjekter

Toppen af siden