Introduktion til Access-programmering

Når man opretter en ny database, så begynder man typisk med at oprette flere databaseobjekter, som f.eks. tabeller, formularer og rapporter. Man når efterhånden til et punkt, hvor man er nødt til at tilføje noget programmering for at automatisere visse processer og binde ens databaseobjekter sammen. Denne artikel hjælper med at skabe overblik over programmeringsfunktionerne i Access.

I denne artikel

Hvad er programmering?

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

Brug guiden Kommandoknap til at udføre almindelige programmeringsopgaver

Forstå makroer

Forstå VBA-kode

Konvertér makroer til VBA-kode

Hvad er programmering?

I Access er programmering en proces, hvor der føjes funktionalitet til databasen ved hjælp af Access-makroer eller VBA-kode (Visual Basic for Applications). Det kan f.eks. være, at du har oprettet en formular og en rapport, og du så vil føje en kommandoknap til formularen, som åbner rapporten, når man klikker på den. I dette tilfælde omfatter programmering en proces, hvor man opretter en makro eller VBA-procedure og derefter indstiller kommandoknappens OnClick-hændelsesegenskab, således, at makroen eller proceduren køres, når der klikkes på kommandoknappen. Ved en enkel handling som at åbne en rapport kan du bruge guiden Kommandoknap til at gøre alt arbejdet, eller du kan slå guiden fra og udføre programmeringen selv.

Bemærk: Mange Microsoft Office-programmer bruger betegnelsen "makro" til at henvise til VBA-kode. Dette kan forvirre Access-brugere, fordi betegnelsen "makro" i Access henviser til en navngiven samling af makrohandlinger, som du kan samle 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, hvor kontrolelementer og objekter kan tilføjes programmering, uden at man skal lære VBA-kode. Du skal huske, at i Hjælp-artikler i Access, kaldes Access-makroer for makroer. Derimod kaldes VBA-kode for VBA, kode, en funktion eller en procedure. VBA-kode forekommer i klassemoduler (som er en del af enkelte formularer eller rapporter, og som typisk kun indeholder kode til disse objekter) og i moduler (som ikke er knyttet til bestemte objekter, og typisk indeholder "global" kode, der kan bruges i hele databasen).

Objekter (f.eks. formularer og rapporter) og kontrolelementer (f.eks. kommandoknapper og tekstfelter) har forskellige hændelsesegenskaber, som du kan knytte til makroer eller procedurer. Hver hændelsesegenskab er knyttet til en specifik hændelse, såsom et klik med musen, åbning af en formular eller redigering af data i et tekstfelt. Hændelser kan også udløses af faktorer uden for Access, f.eks. systemhændelser eller af makroer eller procedurer, som er knyttet til andre hændelser. Databasen kan blive kompleks, hvis du føjer for mange makroer eller procedurer til flere hændelsesegenskaber knyttet til mange objekter, men i de fleste tilfælde kan du opnå de ønskede resultater med meget lidt programmering.

Toppen af siden

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

Beslutningen om at bruge makroer, VBA eller begge dele afhænger primært af, hvordan du planlægger at installere eller distribuere databasen. Hvis f.eks. databasen er gemt på computeren, og du er den eneste bruger, og hvis du er fortrolig med at bruge VBA-kode, så kan du vælge at bruge VBA til at udføre de fleste af dine programmeringsopgaver. Men hvis du har planer om at dele din database med andre ved at placere den på en filserver, så bør du måske ikke bruge VBA af sikkerhedshensyn.

Du bør basere din beslutning om at bruge enten makroer eller VBA-kode på to hensyn: sikkerhed og de ønskede funktioner. Sikkerhed er et hensyn, fordi VBA kan bruges til at oprette kode, der enten mindsker dine datas sikkerhed eller kan påføre skade på filerne på din computer. Når du bruger en database, der er oprettet af en anden end dig selv, bør du kun aktivere VBA-kode, hvis du ved, at databasen kommer fra en pålidelig kilde. Når du opretter en database, der skal bruges af andre, bør du ikke inkludere programmeringsfunktioner, der kræver, at brugeren specifikt skal give databasen pålidelighedsstatus. Generelle teknikker til at undgå behov for, at brugere skal have tillid til din database, behandles senere i denne sektion.

For at sikre beskyttelsen af din database skal du prøve at bruge makroer, når du kan, og kun bruge VBA-programmering til handlinger, der ikke kan udføres ved hjælp af makrohandlinger. Desuden bør du kun bruge makrohandlinger, der ikke kræver, at du angiver pålidelighedsstatus for databasen for at køre. Når brugen af makrohandlinger begrænses på denne måde, så kan brugerne være sikre på, at databasen ikke har nogen programmering, der kan beskadige data eller filer på deres computere.

Makroovervejelser

Begyndende fra Access 2010-versionen indeholder Access mange nye makrohandlinger, hvor du kan oprette mere effektive makroer, end du kan oprette ved hjælp af tidligere versioner af Access. Nu kan du f.eks. oprette og bruge globale midlertidige variabler ved hjælp af makrohandlinger, og du kan håndtere fejl mere problemfrit ved hjælp af de nye makrohandlinger til fejlhåndtering. I ældre versioner af Access er disse funktionstyper kun tilgængelige ved hjælp af VBA. Desuden kan du indlejre en makro direkte i hændelsesegenskaben for et objekt eller et kontrolelement. En indlejret makro bliver en del af det pågældende objekt eller kontrolelement, og forbliver tilknyttet til objektet eller kontrolelementet, hvis det flyttes eller kopieres.

Makroer gør det let at håndtere mange programmeringsopgaver, f.eks. åbning og lukning af formularer og rapportkørsel. Du kan hurtigt og let binde databaseobjekter sammen (formularer, rapporter osv.), som du har oprettet, fordi der kun er lidt syntaks, du skal 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 kaldet AutoExec.

    Bemærk:  AutoExec-makroen kører før nogen anden makro eller VBA-kode, selvom du har angivet en startformular i dialogboksen Adgangsindstillinger og har knyttet en makro eller en VBA-kode til den pågældende formulars VedÅbning- eller OnLoad-hændelse.

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

VBA-overvejelser

Du skal bruge VBA-programmering i stedet for makroer, hvis du vil gøre et af følgende:

  • Bruge indbyggede funktioner eller oprette dine egne funktioner    Access indeholder mange indbyggede funktioner, som f.eks. funktionen R.ydelse, der beregner en renteydelse. Du kan bruge disse indbyggede funktioner til at udføre beregninger uden at være nødt til at oprette avancerede udtryk. Du kan også bruge VBA-kode, når du skal oprette dine egne funktioner til enten at udføre beregninger, der overskrider 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    Du vil i de fleste tilfælde opdage, at det er lettest at oprette og redigere et objekt i det pågældende objekts Designvisning. Dog kan det i nogle situationer være en fordel at redigere definitionen af et objekt i kode. Du kan bruge VBA til at arbejde med alle objekterne i en database, udover med selve databasen.

  • Udføre handlinger på systemniveau    Du kan udføre handlingen KørProgram 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. Du kan bruge VBA til at kontrollere og se, om en fil eksisterer 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 DLL-biblioteker (Dynamic Link Library).

  • 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 en VBA-kode i .mdb- eller .adp-filer, 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 under fanen Design, og kontrollér, at Brug kontrolelementguider er markeret.

  3. På fanen Design i galleriet Kontrolelementer skal du klikke på Knap.

  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å når du har brug for at henvise til kommandoknappen senere (f.eks. hvis du indstiller fanerækkefølgen for kontrolelementer på din formular), så er det meget lettere at skelne mellem kommandoknapperne. Hvis f.eks. kommandoknappen lukker formularen, så kan du f.eks. kalde den cmdLuk eller CommandLuk.

  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 den valgfrie fremgangsmåde:

    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. I egenskabsfeltet Ved klik skal du klikke på knappen Generér Knapflade .

      Access starter Makrogenerator og viser den makro, som guiden har oprettet. Du kan redigere makroen, hvis du vil (for at få mere at vide om, hvordan du redigerer en makro, skal du se afsnittet Forstå makroer). Når du er færdig, skal du på fanen Design i gruppenLuk klikke på Luk 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. På fanen Design skal du i gruppen Visninger klikke på Vis og derefter klikke 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, så knytter du knappens OnClick-hændelsesegenskab til en makro, der indeholder kommandoerne, som du vil have, at knappen skal udføre hver gang, der klikkes på den.

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.

Makrogenerator i Access 2010

Bemærk: Bemærk, at Makrogenerator i Access 2007 fungerer anderledes end den ovenstående illustration. I Access 2007 er Makrogenerator en serie af rækker og kolonner, som viser en liste over forskellige makrohandlinger.

Sådan får du vist Makrogenerator:

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

Toppen af siden

Forstå VBA-kode

Du kan som med makroer bruge VBA til at 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 i henhold til dine egne specifikke behov.

Du kan hurtigt komme i gang med VBA-programmering ved først at oprette en Access-makro og derefter konvertere den til VBA-kode. En vejledning i at gøre dette findes i sektionen 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.

Bemærk: Du kan føje VBA-kode (Visual Basic for Applications) til en webdatabase, men du kan ikke køre koden, mens databasen kører i en webbrowser. Hvis din webdatabase indeholder VBA-kode, skal du først åbne webdatabasen med Access, før du kan køre koden. For at udføre programmeringsopgaver i en webdatabase skal du i stedet bruge Access-makroer.

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

Denne proces konverterer vilkårlige makroer til VBA, 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. På fanen Design i gruppen Funktioner 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 funktionerne, den opretter. Hvis du har kommentarer i makroerne, skal du desuden vælge, om de skal indsættes som kommentarer 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. Vis og rediger VBA-kode:

    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 viser [Hændelsesprocedure], og derefter klikke på knappen Generér Knapflade . 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 Design.

  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. Vis og rediger VBA-kode:

    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. Under Moduler skal du dobbeltklikke på modulets Konverteret makro-makronavn.

      Modulet åbner i Visual Basic Editor.

Knyt en VBA-funktion til en hændelsesegenskab

Når du konverterer en global makro til VBA, så placeres VBA-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 enten 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 den følgende procedure.

  1. I Visual Basic Editor skal du notere dig funktionsnavnet. Hvis du f.eks. har konverteret en makro, der hedder MinMakro, så er funktionsnavnet MinMakro().

  2. Luk Visual Basic Editor

  3. Højreklik på den formular eller rapport, du vil knytte funktionen til, i navigationsruden, 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. =MinMakro() . 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; der er mange fremragende opslagsværker og onlineressourcer, der kan hjælpe dig med at udvikle dine programmeringsfærdigheder.

Toppen af siden

Udvid dine færdigheder
Gå på opdagelse i kurser
Få nye funktioner først
Bliv Office Insider

Var disse oplysninger nyttige?

Tak for din feedback!

Tak for din feedback! Det lyder, som om det vil kunne hjælpe, hvis du bliver sat i forbindelse med en af vores Office-supportteknikere.

×