Kennismaken met programmeren in Access

Wanneer u een nieuwe database maakt, gaat u meestal eerst verschillende databaseobjecten maken, zoals tabellen, formulieren en rapporten. Na verloop van tijd komt u op een punt waar u programmeerfuncties zult moeten toevoegen om bepaalde processen te automatiseren en uw database-objecten te koppelen. In dit artikel vindt u informatie over de programmeerhulpmiddelen in Access.

In dit artikel

Wat is programmeren?

Kan ik beter macro's of VBA-code gebruiken?

Veelvoorkomende programmeertaken uitvoeren met de wizard Opdrachtknop

Algemene informatie over macro's

Algemene informatie over VBA-code

Macro's converteren naar VBA-code

Wat is programmeren?

In Access is programmeren het proces van het toevoegen van functionaliteit aan de database met behulp van Access-macro's of VBA-code (Visual Basic for Applications). Stel dat u een formulier en een rapport hebt gemaakt. U wilt nu een opdrachtknop toevoegen aan het formulier waarop kan worden geklikt om het rapport te openen. Programmeren, in dit geval, is het proces van het maken van een macro of VBA-procedure en het instellen van de gebeurteniseigenschap OnClick van de opdrachtknop, zodat de macro of procedure wordt uitgevoerd wanneer er op de opdrachtknop wordt geklikt. Voor een eenvoudige bewerking, zoals het openen van een rapport, kunt u de wizard Opdrachtknop al het werk laten doen. U kunt er ook voor kiezen om de wizard uit te schakelen en de functie zelf te programmeren.

Opmerking: In veel Microsoft Office-programma's wordt de term 'macro' gebruikt om te verwijzen naar VBA-code. Dit kan verwarrend zijn voor gebruikers van Access omdat de term 'macro' in Access verwijst naar een benoemde verzameling macroacties die u kunt samenstellen met behulp van de opbouwfunctie voor macro's. Macroacties van Access vertegenwoordigen echter slechts een subset van de opdrachten die beschikbaar zijn in VBA. Met de opbouwfunctie voor macro's beschikt u over een meer gestructureerde gebruikersinterface dan in Visual Basic Editor, zodat u programmering kunt toevoegen aan besturingselementen en objecten zonder dat u VBA-code hoeft te kennen. U moet onthouden dat in Help-artikelen voor Access macro's van Access simpelweg macro's worden genoemd. VBA-code, daarentegen, wordt aangeduid als VBA, code, een functie of een procedure. VBA-code is opgenomen in klassemodules (die deel uitmaken van afzonderlijke formulieren of rapporten en die meestal alleen code voor deze objecten bevatten) en in modules (die niet zijn gekoppeld aan specifieke objecten en die meestal 'algemene' code bevatten die overal in de database kan worden gebruikt).

Objecten (zoals formulieren en rapporten) en besturingselementen (zoals opdrachtknoppen en tekstvakken) hebben verschillende gebeurteniseigenschappen waaraan u macro's of procedures kunt koppelen. Elke gebeurteniseigenschap is gekoppeld aan een bepaalde gebeurtenis, zoals klikken met de muis, een formulier openen of gegevens in een tekstvak wijzigen. Gebeurtenissen kunnen ook worden geactiveerd door factoren buiten Access, zoals systeemgebeurtenissen, of door macro's of procedures die zijn gekoppeld aan andere gebeurtenissen. De database kan erg complex worden als u veel macro's of procedures koppelt aan verschillende gebeurteniseigenschappen van een groot aantal objecten, maar in de meeste gevallen is er gelukkig niet veel programmering nodig om het gewenste resultaat te krijgen.

Naar boven

Kan ik beter macro's of VBA-code gebruiken?

De keuze voor macro's, VBA of een combinatie van beiden, wordt voornamelijk bepaald door de gewenste implementatie of distributie van de database. Als de database bijvoorbeeld is opgeslagen op uw computer en u de enige gebruiker bent, en als u ervaring hebt met VBA-code, kan het een goed idee zijn om de meeste taken te programmeren met VBA. Als u de database echter wilt gaan delen met andere personen door de database op te slaan op een bestandsserver, is het qua beveiliging beter om niet VBA te gebruiken.

Bij uw beslissing om macro's of VBA-code te gebruiken, moet u rekening houden met twee factoren: beveiliging en de gewenste functionaliteit. Beveiliging is een factor omdat met VBA code kan worden geschreven die de beveiliging van uw gegevens in gevaar kan brengen of die bestanden op uw computer kan beschadigen. Wanneer u een database gebruikt die door iemand anders is gemaakt, moet u VBA-code alleen inschakelen als u weet dat de database afkomstig is van een betrouwbare bron. Wanneer u een database maakt die door anderen zal worden gebruikt, moet u geen programmeerfuncties gebruiken waarvoor de gebruiker de database expliciet moet vertrouwen. Verderop wordt uitgelegd welke algemene technieken u kunt gebruiken om te voorkomen dat gebruikers uw database moeten vertrouwen.

Voor de beveiliging van de database moet u zo veel mogelijk macro's gebruiken en alleen VBA-code gebruiken voor bewerkingen die niet kunnen worden uitgevoerd met macroacties. Daarnaast kunt u het beste alleen macroacties gebruiken waarvoor geen vertrouwde status aan de database hoeft te worden verleend om deze te kunnen uitvoeren. Wanneer u het gebruik van macroacties op deze manier beperkt, kunnen de gebruikers erop vertrouwen dat de database geen programmeerfuncties bevat die de gegevens of andere bestanden op de computer kunnen beschadigen.

Aandachtspunten voor macro's

Vanaf Access 2010 bevat Access veel nieuwe macroacties waarmee u veel krachtigere macro's kunt maken dan in eerdere versies van Access. Zo kunt u nu algemene tijdelijke variabelen maken en gebruiken via macroacties, en kunnen fouten beter worden afgehandeld met behulp van nieuwe macroacties voor foutafhandeling. In eerdere versies van Access zijn deze functies alleen beschikbaar met behulp van VBA. Bovendien is het nu mogelijk om een macro rechtstreeks in te sluiten in de gebeurteniseigenschap van een object of besturingselement. Een ingesloten macro wordt een onderdeel van het object of besturingselement en blijft gekoppeld aan het object of besturingselement wanneer dit wordt verplaatst of gekopieerd.

Macro's zijn een eenvoudige manier om allerlei verschillende programmeertaken af te handelen, zoals het openen en sluiten van formulieren en rapporten. U kunt de databaseobjecten die u hebt gemaakt, zoals formulieren en rapporten, snel en eenvoudig koppelen omdat u niet veel syntaxis hoeft te onthouden. De argumenten voor elke actie worden namelijk weergegeven in de opbouwfunctie voor macro's.

Naast de verbeterde beveiliging en het gebruiksgemak van macro's, zijn macro's onmisbaar om de volgende taken uit te voeren:

  • Een actie of een set met acties toewijzen aan een toets. Hiervoor moet u een macrogroep met de naam AutoKeys maken.

  • Een actie of een reeks acties uitvoeren wanneer een database voor het eerst wordt geopend. Hiervoor moet u een macro met de naam AutoExec maken.

    Opmerking:  De macro AutoExec wordt uitgevoerd vóór andere macro's of VBA-code, zelfs als u een opstartformulier hebt opgegeven in het dialoogvenster Opties voor Access en een macro of VBA-code hebt gekoppeld aan de gebeurtenis OnOpen of OnLoad van het formulier.

Zie Algemene informatie over macro's voor meer informatie over het maken van macro's.

Aandachtspunten voor VBA

Gebruik VBA-code in plaats van macro's als u een van de volgende handelingen wilt uitvoeren:

  • Ingebouwde functies gebruiken of uw eigen functies maken    Access bevat veel ingebouwde functies, zoals IPmt, waarmee u de rente kunt berekenen die moet worden betaald. U kunt deze ingebouwde functies gebruiken voor het uitvoeren van berekeningen zonder dat u ingewikkelde expressies hoeft te maken. Met behulp van VBA-code kunt u ook uw eigen functies maken, hetzij om berekeningen uit te voeren die meer mogelijkheden bieden dan een expressie of om complexe expressies te vervangen. Daarnaast kunt u de functies die u in expressies maakt, gebruiken om een algemene bewerking op meer dan één object toe te passen.

  • Objecten maken of bewerken    In de meeste gevallen zult u merken dat u een object het makkelijkst kunt maken en wijzigen door naar de ontwerpweergave van dat object te gaan. In sommige gevallen zult u echter de definitie van een object via code willen bewerken. Met VBA kunt u bewerkingen uitvoeren op alle objecten in een database, maar ook op de database als geheel.

  • Acties op systeemniveau uitvoeren    U kunt de actie RunApp uitvoeren in een macro om vanuit Access een ander programma (zoals Microsoft Excel) te starten, maar verder is er weinig wat u met macro's kunt doen buiten Access. Met VBA kunt u controleren of een bestand aanwezig is op de computer, automatisering of DDE (Dynamic Data Exchange) gebruiken om te communiceren met andere Microsoft Windows-programma's, zoals Excel, en functies aanroepen in DLL's (Dynamic Link Libraries) van Windows.

  • Records afzonderlijk bewerken    U kunt met VBA stapsgewijs door een set met records lopen en een bewerking uitvoeren op elke record. Macro's, daarentegen, kunt u gebruiken om een hele set met records in één keer te bewerken.

Naar boven

Veelvoorkomende programmeertaken uitvoeren met de wizard Opdrachtknop

Als u een opdrachtknop toevoegt aan een formulier, kan de wizard Opdrachtknop u helpen om eenvoudige taken te programmeren. De wizard helpt u bij het maken van een opdrachtknop voor het uitvoeren van een specifieke taak. In een Access-bestand (.accdb) maakt u met de wizard een macro die wordt ingesloten in de eigenschap OnClick van de opdrachtknop. In een MDB- of ADP-bestand wordt er met de wizard VBA-code gemaakt omdat in deze bestandsindelingen ingesloten macro's niet worden ondersteund. In beide gevallen kunt u de macro of VBA-code vervolgens aanpassen of verbeteren als dat nodig is.

  1. Klik in het navigatiedeelvenster met de rechtermuisknop op het formulier waaraan u de opdrachtknop wilt toevoegen en klik op Ontwerpweergave.

  2. Klik op het tabblad Ontwerp op de pijl-omlaag om de galerie Besturingselementen weer te geven en zorg ervoor dat Wizards voor besturingselementen gebruiken is geselecteerd.

  3. Klik op het tabblad Ontwerp in de galerie Besturingselementen op Knop.

  4. Klik in het formulierontwerpraster op de plaats waar u de opdrachtknop wilt weergeven.

    De wizard Opdrachtknop wordt gestart.

  5. Klik op de eerste pagina van de wizard op de verschillende categorieën in de lijst Categorieën om te zien welke bewerkingen u met de wizard aan de opdrachtknop kunt koppelen. Selecteer in de lijst Acties de gewenste actie en klik vervolgens op Volgende.

  6. Selecteer het keuzerondje Tekst of Afbeelding om te bepalen of u tekst of een afbeelding wilt weergeven op de opdrachtknop.

    • Als u tekst wilt weergeven, kunt u de tekst in het vak naast Tekst desgewenst aanpassen.

    • Als u een afbeelding wilt weergeven, stelt de wizard een afbeelding uit de lijst voor. Als u een andere afbeelding wilt selecteren, schakelt u het selectievakje Alle afbeeldingen weergeven in om een lijst weer te geven met alle afbeeldingen voor opdrachtknoppen die beschikbaar zijn in Access. U kunt ook op Bladeren klikken om een afbeelding te selecteren die ergens anders is opgeslagen.

      Klik op Volgende.

  7. Voer een duidelijke naam in voor de opdrachtknop. Dit is een optionele stap en deze naam wordt niet weergegeven op de opdrachtknop. Het is echter een goed idee om een zinvolle naam in te voeren, zodat u later meteen weet waar een knop voor is bedoeld en u veel gemakkelijker onderscheid kunt maken tussen de opdrachtknoppen(bijvoorbeeld als u de tabvolgorde voor besturingselementen op het formulier gaat instellen). Als de opdrachtknop bijvoorbeeld is bedoeld om het formulier te sluiten, kunt u de naam cmdSluiten of OpdrachtSluiten gebruiken.

  8. Klik op Voltooien.

    De opdrachtknop wordt op het formulier geplaatst.

  9. Als u wilt zien wat de wizard voor u heeft 'geprogrammeerd', volgt u deze optionele stappen:

    1. Druk op F4 om het eigenschappenvenster weer te geven, als dat nog niet wordt weergegeven.

    2. Klik in het eigenschappenvenster op het tabblad Gebeurtenis.

    3. Klik in het eigenschappenvak Bij klikken op de knop Opbouwen Knopvlak .

      De opbouwfunctie voor macro's wordt gestart en u ziet de macro die met de wizard is gemaakt. U kunt de macro desgewenst bewerken (zie hiervoor Algemene informatie over macro's). Als u klaar bent, gaat u op het tabblad Ontwerp naar de groep Sluiten en klikt u daar op Sluiten om de opbouwfunctie voor macro's af te sluiten. Als er wordt gevraagd of u de wijzigingen wilt opslaan en de eigenschap wilt bijwerken, klikt u op Ja om de wijzigingen op te slaan of op Nee om de wijzigingen te annuleren.

  10. Ga op het tabblad Start naar de groep Weergaven, klik op Weergave en klik vervolgens op Formulierweergave. Klik op de nieuwe opdrachtknop om te kijken of deze werkt zoals verwacht.

Naar boven

Algemene informatie over macro's

Een macro is een hulpmiddel waarmee u taken kunt automatiseren en functionaliteit kunt toevoegen aan formulieren, rapporten en besturingselementen. Als u bijvoorbeeld een opdrachtknop toevoegt aan een formulier, koppelt u de gebeurteniseigenschap OnClick van de knop aan een macro die de opdrachten bevat die moeten worden uitgevoerd als er iemand op de knop klikt.

Het is handig om macro's van Access te zien van als een vereenvoudigde programmeertaal waarin u code kunt maken door een lijst met uit te voeren acties samen te stellen. Wanneer u een macro maakt, selecteert u elke actie uit een vervolgkeuzelijst en vult u vervolgens de vereiste gegevens in voor elke actie. Gebruik macro's om functionaliteit toe te voegen aan formulieren, rapporten en besturingselementen zonder dat u code hoeft te schrijven in een VBA-module. Macro's bieden een subset van de opdrachten die beschikbaar zijn in VBA, en de meeste mensen vinden het makkelijker om een macro te maken dan VBA-code te schrijven.

U maakt een macro met behulp van de opbouwfunctie voor macro's, die hieronder wordt weergegeven.

De opbouwfunctie voor macro's van Access 2010

Opmerking: De opbouwfunctie voor macro's in Access 2007 heeft een andere interface dan in de bovenstaande afbeelding. In Access 2007 bestaat de opbouwfunctie voor macro's uit een reeks met rijen en kolommen die de verschillende acties van de macro vertegenwoordigen.

De opbouwfunctie voor macro's weergeven:

  • Klik op het tabblad Maken in de groep Macro's en code op Macro.

Naar boven

Algemene informatie over VBA-code

Net zoals bij macro's, kunt u met VBA taken automatiseren en functionaliteit toevoegen aan uw Access-toepassing. U kunt VBA uitbreiden met behulp van besturingselementen van derden, en u kunt uw eigen functies en procedures schrijven voor uw eigen specifieke behoeften.

Een snelle manier om aan de slag te gaan met programmeren in VBA is door eerst een Access-macro te maken en deze vervolgens te converteren naar VBA-code. Instructies hiervoor vindt u in de sectie Macro's converteren naar VBA-code. U maakt op deze manier een nieuwe VBA-module die de equivalente bewerkingen uit de macro uitvoert. Bovendien wordt Visual Basic Editor geopend, zodat u de procedure kunt gaan wijzigen. Wanneer u in Visual Basic Editor werkt, kunt u op trefwoorden klikken en op F1 drukken om de Help voor ontwikkelaars weer te geven en meer te lezen over elk trefwoord. U kunt op uw gemak de Help voor ontwikkelaars bekijken en ontdekken welke opdrachten u kunt gebruiken om de taken te programmeren die u wilt uitvoeren.

Naar boven

Macro's converteren naar VBA-code

U kunt Access gebruiken om macro's automatisch te converteren naar VBA-modules of klassemodules. U kunt macro's converteren die zijn gekoppeld aan een formulier of rapport, ongeacht of ze bestaan als aparte objecten of als ingesloten macro's. Het is ook mogelijk om algemene macro's te converteren, die dus niet zijn gekoppeld aan een bepaald formulier of rapport.

Opmerking: U kunt VBA-code (Visual Basic for Applications toevoegen aan een webdatabase, maar het is echter niet mogelijk om die code uit te voeren terwijl de database wordt uitgevoerd in een webbrowser. Als de webdatabase VBA-code bevat, moet u de webdatabase eerst openen met Access voordat u de code kunt uitvoeren. Als u programmeertaken wilt uitvoeren in een webdatabase, moet u Access-macro's gebruiken.

Macro's converteren die zijn gekoppeld aan een formulier of rapport

Met deze procedure worden alle macro's waarnaar wordt verwezen door (of die zijn ingesloten in) een formulier of rapport (of een van de bijbehorende besturingselementen) geconverteerd naar VBA en wordt de VBA-code toegevoegd aan de klassemodule van het formulier of rapport. De klassemodule wordt onderdeel van het formulier of rapport en blijft bij het formulier of rapport wanneer dit wordt verplaatst of gekopieerd.

  1. Klik in het navigatiedeelvenster met de rechtermuisknop op het formulier of rapport en klik vervolgens op Ontwerpweergave.

  2. Ga op het tabblad Ontwerp naar de groep Extra en klik op Formuliermacro's converteren naar Visual Basic of Rapportmacro's converteren naar Visual Basic.

  3. Geef in het dialoogvenster Formuliermacro's converteren of Rapportmacro's converteren aan of Access code voor foutafhandeling moet toevoegen aan de functies die worden gegenereerd. Als beschrijvingen hebt opgenomen in de macro's, kunt u deze desgewenst ook overbrengen naar de functies. Klik op Converteren om door te gaan.

    Als er geen klassemodule bestaat voor het formulier of rapport, wordt er een gemaakt in Access en wordt er aan de module een procedure toegevoegd voor elke macro die is gekoppeld aan het formulier of rapport. Bovendien worden de gebeurteniseigenschappen van het formulier of rapport aangepast door Access, zodat deze de nieuwe VBA-procedures uitvoeren in plaats van de macro's.

  4. De VBA-code weergeven en bewerken:

    1. Als het eigenschappenvenster nog niet wordt weergegeven, drukt u op F4 terwijl het formulier of rapport is geopend in de ontwerpweergave.

    2. Klik op het tabblad Gebeurtenis van het eigenschappenvenster in een eigenschappenvak met de naam van een [gebeurtenisprocedure] en klik vervolgens op de knop Opbouwen Knopvlak . Als u de gebeurteniseigenschappen voor een bepaald besturingselement wilt weergeven, klikt u op het besturingselement om dit te selecteren. Als u de gebeurteniseigenschappen voor het hele formulier of rapport wilt bekijken, selecteert u Formulier of Rapport in de vervolgkeuzelijst bovenaan het eigenschappenvenster.

      Visual Basic Editor wordt geopend en u ziet de gebeurtenisprocedure in de bijbehorende klassemodule. U kunt omhoog of omlaag scrollen om eventuele andere procedures in de klassemodule te bekijken.

Algemene macro's converteren

  1. Klik in het navigatiedeelvenster met de rechtermuisknop op de macro die u wilt converteren en klik vervolgens op Ontwerpweergave.

  2. Klik op het tabblad Ontwerpen in de groep Extra op Macro's converteren naar Visual Basic.

  3. Selecteer de gewenste opties in het dialoogvenster Macro converteren en klik vervolgens op Converteren.

    De macro wordt geconverteerd en Visual Basic Editor wordt geopend.

  4. De VBA-code weergeven en bewerken:

    1. Als in Visual Basic Editor het deelvenster Projectverkenner niet wordt weergegeven, klikt u in het menu Beeld op Projectverkenner.

    2. Vouw de boomstructuur uit onder de naam van de database waarin u werkt.

    3. Dubbelklik onder Modules op de module Geconverteerde macro- macronaam.

      De module wordt geopend in Visual Basic Editor.

Een VBA-functie koppelen aan een gebeurteniseigenschap

Wanneer u een algemene macro naar VBA converteert, wordt de VBA-code in een standaardmodule geplaatst. In tegenstelling tot een klassemodule, maakt een standaardmodule geen deel uit van een formulier of rapport. De kans is groot dat u de functie wilt koppelen aan een gebeurteniseigenschap van een formulier, rapport of besturingselement, zodat de code wordt uitgevoerd wanneer en waar u wilt. U doet dit door de VBA-code naar een klassemodule te kopiëren en deze vervolgens te koppelen aan een gebeurteniseigenschap of u maakt een speciale aanroep vanuit de gebeurteniseigenschap naar de standaardmodule. Gebruik hiervoor de onderstaande procedure.

  1. Kijk in Visual Basic Editor wat de naam van de functie is. Als u bijvoorbeeld een macro met de naam MijnMacro hebt geconverteerd, is de naam van de functie MijnMacro().

  2. Sluit Visual Basic Editor af.

  3. Klik in het navigatiedeelvenster met de rechtermuisknop op het formulier of rapport waaraan u de functie wilt koppelen en klik vervolgens op Ontwerpweergave.

  4. Klik op het besturingselement of de sectie waaraan u de functie wilt koppelen.

  5. Druk op F4 om het eigenschappenvenster weer te geven, als dat nog niet wordt weergegeven.

  6. Klik op het tabblad Gebeurtenis van het eigenschappenvenster in het vak van de gebeurteniseigenschap waaraan u de functie wilt koppelen.

  7. Typ in het eigenschappenvak een gelijkteken (=) gevolgd door de naam van de functie, bijvoorbeeld =MijnMacro(). Vergeet de haakjes niet.

  8. Sla het formulier of rapport op door op de werkbalk Snelle toegang te klikken op Opslaan.

  9. Dubbelklik in het navigatiedeelvenster op het formulier of rapport, en kijk of de code op de juiste manier wordt uitgevoerd.

U bent nu bekend met de basisstappen voor het toevoegen van VBA-code aan uw database. In dit artikel hebben we alleen de basisvaardigheden besproken. Er zijn allerlei uitstekende naslagwerken en online-informatiebronnen die u kunt raadplegen om ervaring op te doen met programmeren.

Naar boven

Uw Office-vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Office Insiders

Was deze informatie nuttig?

Bedankt voor uw feedback.

Hartelijk dank voor uw feedback! Het lijkt ons een goed idee om u in contact te brengen met een van onze Office-ondersteuningsagents.

×