Wanneer u een nieuwe database maakt, begint u meestal met het maken van databaseobjecten, zoals tabellen, formulieren en rapporten. Op een bepaald moment moet u mogelijk programmeren toevoegen om processen te automatiseren en deze objecten te verbinden. In dit artikel worden de programmeerhulpprogramma's in Access geïntroduceerd.
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 betekent programmeren dat u functionaliteit aan uw database toevoegt met behulp van Access-macro's of Visual Basic for Applications-code (VBA). U kunt bijvoorbeeld een formulier en een rapport maken en vervolgens een opdrachtknop toevoegen aan het formulier waarmee het rapport wordt geopend wanneer u het selecteert. In dat geval maakt u een macro of VBA procedure en stelt u vervolgens de gebeurteniseigenschap van OnClick de opdrachtknop in, zodat de opdrachtknop de macro of procedure uitvoert. Voor een eenvoudige bewerking, zoals het openen van een rapport, kunt u de wizard Opdrachtknop gebruiken om het werk uit te voeren, of u kunt de wizard uitschakelen en zelf programmeren.
Opmerking
Veel Microsoft Office-programma's gebruiken de term 'macro' om naar code te VBA verwijzen. Dit kan gebruikers van Access verwarrend maken, omdat in Access de term 'macro' verwijst naar een benoemde verzameling macroacties die u samenstelt met behulp van de opbouwfunctie voor macro's. Access-macroacties vertegenwoordigen slechts een subset van de opdrachten die beschikbaar zijn in VBA. De opbouwfunctie voor macro's biedt u een meer gestructureerde interface dan de Visual Basic Editor, zodat u programmering kunt toevoegen aan besturingselementen en objecten zonder code te leren VBA . In de Help-artikelen van Access worden Access-macro's macro's genoemd.
VBA code wordt code, een functie of een procedure genoemd VBA .
VBA code wordt opgeslagen in klassemodules, die deel uitmaken van afzonderlijke formulieren of rapporten en meestal alleen code voor die objecten bevatten, en in modules, die niet zijn gekoppeld aan specifieke objecten en meestal globale code bevatten die u in de hele database kunt gebruiken.
Objecten zoals formulieren en rapporten, en besturingselementen zoals opdrachtknoppen en tekstvakken, hebben gebeurteniseigenschappen waaraan u macro's of procedures kunt koppelen. Elke gebeurteniseigenschap is gekoppeld aan een specifieke gebeurtenis, zoals klikken met de muis, het openen van een formulier of het wijzigen van gegevens in een tekstvak. Gebeurtenissen kunnen ook worden geactiveerd door factoren buiten Access, zoals systeemgebeurtenissen, of door macro's of procedures die zijn gekoppeld aan andere gebeurtenissen. Uw database kan complex worden als u veel macro's of procedures toevoegt aan veel gebeurteniseigenschappen op veel objecten. In de meeste gevallen kunt u echter de gewenste resultaten krijgen door heel weinig te programmeren.
Naar boven
Kan ik beter macro's of VBA-code gebruiken?
De beslissing om macro's, of beide te gebruiken, VBAhangt voornamelijk af van de wijze waarop u de database wilt implementeren of distribueren. Als de database bijvoorbeeld is opgeslagen op uw computer, u de enige gebruiker bent en u vertrouwd bent met het gebruik van VBA code, kunt u besluiten om te gebruiken VBA voor de meeste programmeertaken. Als u echter van plan bent om uw database te delen met andere personen vanaf een bestandsserver, kunt u het gebruik VBA ervan vermijden vanwege beveiligingsproblemen.
Baseer uw beslissing om macro's of VBA code te gebruiken op twee punten: beveiliging en de gewenste functionaliteit. Beveiliging is belangrijk omdat VBA kan worden gebruikt om code te maken waarmee uw gegevens worden aangetast of bestanden op uw computer worden beschadigd. Wanneer u een database gebruikt die iemand anders heeft gemaakt, schakelt u code alleen in VBA als u weet dat de database afkomstig is van een betrouwbare bron. Wanneer u een database maakt die door anderen wordt gebruikt, vermijdt u programmeerprogramma's waarvoor de gebruiker de database expliciet moet vertrouwen. Algemene technieken om deze vereiste te voorkomen, worden verderop in deze sectie weergegeven.
Als u uw database wilt beveiligen, kunt u macro's gebruiken wanneer dat mogelijk is en alleen gebruiken VBA voor bewerkingen die niet kunnen worden uitgevoerd met behulp van macroacties. Probeer ook alleen macroacties te gebruiken waarvoor de database niet hoeft te worden vertrouwd voordat ze kunnen worden uitgevoerd. Door macroacties op deze manier te beperken, kunnen gebruikers er zeker van zijn dat de database geen programmering heeft die gegevens of andere bestanden op hun computer kan beschadigen.
Aandachtspunten voor macro's
Access bevat veel macroacties waarmee u krachtigere macro's kunt maken dan eerdere versies van Access zijn toegestaan. 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 waren deze functies alleen beschikbaar in VBA. U kunt een macro ook rechtstreeks insluiten in de gebeurteniseigenschap van een object of besturingselement. Een ingesloten macro wordt onderdeel van het object of besturingselement en blijft behouden als het object of besturingselement 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, zoals formulieren en rapporten, die u hebt gemaakt, snel koppelen omdat er weinig syntaxis is om 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
AutoKeysmaken.Een actie of een reeks acties uitvoeren wanneer een database voor het eerst wordt geopend. Hiervoor moet u een macro met de naam
AutoExecmaken.Opmerking
De
AutoExecmacro wordt uitgevoerd vóór andere macro'sOnOpenofVBAcode, zelfs als u een opstartformulier hebt opgegeven in het dialoogvenster Opties voor Access en een macro ofVBAcode hebt gekoppeld aan het formulier ofOnLoadde gebeurtenis.
Zie Macro's begrijpen voor meer informatie over het maken van macro's.
Aandachtspunten voor VBA
Gebruik VBA in plaats van macro's als u een van de volgende handelingen wilt uitvoeren:
- Gebruik ingebouwde functies of maak uw eigen functies. Access bevat veel ingebouwde functies, zoals
IPmt, waarmee een rentebetaling wordt berekend. U kunt deze functies gebruiken om berekeningen uit te voeren zonder ingewikkelde expressies te maken. Met behulpVBAvan kunt u ook uw eigen functies maken om berekeningen uit te voeren die verder gaan dan de mogelijkheid van 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 is het het eenvoudigst om een object te maken en te wijzigen in de ontwerpweergave van dat object. In sommige situaties wilt u echter mogelijk de definitie van een object in code bewerken. Met behulp
VBAvan kunt u alle objecten in een database bewerken, evenals de database zelf. - Acties op systeemniveau uitvoeren. U kunt de
RunAppactie uitvoeren in een macro om een ander programma, zoals Microsoft Excel, vanuit Access uit te voeren, maar u kunt een macro niet gebruiken om veel meer te doen buiten Access. Met behulpVBAvan kunt u controleren of er een bestand op de computer aanwezig is, Automation of Dynamic Data Exchange (DDE) gebruiken om te communiceren met andere Microsoft Windows-programma's zoals Excel en functies aanroepen in Dynamische koppelingsbibliotheken van Windows (DLLs). - Records één voor één bewerken. U kunt gebruiken
VBAom een set records per record te doorlopen en op elke record een bewerking uit te voeren. Macro's werken daarentegen met hele sets records tegelijk.
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 de wizard een macro die is ingesloten in de OnClick eigenschap van de opdrachtknop. In een .mdb bestand of .adp maakt VBA de wizard code omdat ingesloten macro's niet beschikbaar zijn in deze bestandsindelingen. In beide gevallen kunt u vervolgens de macro of code aanpassen aan VBA uw behoeften.
Klik in het navigatiedeelvenster met de rechtermuisknop op het formulier waaraan u de opdrachtknop wilt toevoegen en klik op Ontwerpweergave.
Klik op het tabblad Formulierontwerp op de pijl-omlaag om de galerie Besturingselementen weer te geven en controleer of Wizards voor besturingselementen gebruiken is geselecteerd.
Klik op het tabblad Formulierontwerp in de galerie Besturingselementen op Knop.
Klik in het formulierontwerpraster op de plaats waar u de opdrachtknop wilt weergeven. De wizard Opdrachtknop wordt gestart.
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.
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 in de lijst voor. Als u een andere afbeelding wilt selecteren, schakelt u het selectievakje Alle afbeeldingen weergeven in om een lijst weer te geven van alle opdrachtknopafbeeldingen die in Access zijn opgegeven, of klikt u op Bladeren om een afbeelding te selecteren die elders is opgeslagen. Klik op Volgende.
Voer een duidelijke naam in voor de opdrachtknop. Deze stap is optioneel en deze naam wordt niet weergegeven op de opdrachtknop. Het is echter een goed idee om een duidelijke naam in te voeren, zodat wanneer u later naar de opdrachtknop moet verwijzen, bijvoorbeeld wanneer u de tabvolgorde voor besturingselementen in uw formulier instelt, het veel gemakkelijker is om de opdrachtknoppen uit elkaar te houden. Als met de opdrachtknop het formulier wordt gesloten, kunt u het
cmdCloseformulier bijvoorbeeld de naam ofCommandClosegeven.Klik op Voltooien. De opdrachtknop wordt op het formulier geplaatst.
Als u wilt zien wat de wizard voor u heeft geprogrammeerd, volgt u deze optionele stappen:
Als het eigenschappenvenster nog niet wordt weergegeven, drukt u op F4 om het weer te geven.
Klik in het eigenschappenvenster op het tabblad Gebeurtenis.
Klik in het eigenschappenvak Bij klikken op de knop Bouwen .
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 Macro's begrijpen voor meer informatie. Wanneer u klaar bent, klikt u op het tabblad Macroontwerp in de groep Sluiten op Sluiten om de opbouwfunctie voor macro's 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.
Klik op het tabblad Formulierontwerp in de groep Weergaven 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 hulpprogramma waarmee u taken kunt automatiseren en functionaliteit kunt toevoegen aan uw formulieren, rapporten en besturingselementen. Als u bijvoorbeeld een opdrachtknop aan een formulier toevoegt, kunt u de gebeurteniseigenschap van OnClick de knop koppelen aan een macro die de opdrachten bevat die de knop moet uitvoeren wanneer deze wordt geselecteerd.
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. Met macro's kunt u functionaliteit toevoegen aan formulieren, rapporten en besturingselementen zonder code in een VBA module te schrijven. Macro's bieden een subset van de opdrachten die beschikbaar zijn in VBA, en de meeste mensen vinden het gemakkelijker om een macro te maken dan om code te schrijven VBA .
U maakt een macro met behulp van de opbouwfunctie voor macro's, die hieronder wordt weergegeven.
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 als macro's kunt VBA u automatisering en andere functionaliteit toevoegen aan uw Access-toepassing. U kunt uitbreiden VBA met behulp van besturingselementen van derden en u kunt uw eigen functies en procedures schrijven voor specifieke behoeften.
Een snelle manier om aan de slag te gaan VBA , is door eerst een Access-macro te maken en deze vervolgens te converteren naar VBA code. Instructies hiervoor zijn opgenomen in Macro's converteren naar VBA-code. Met deze functie maakt u een nieuwe VBA module waarmee de equivalente bewerkingen in de macro worden uitgevoerd. Bovendien wordt Visual Basic Editor geopend, zodat u de procedure kunt gaan wijzigen. Wanneer u in de Visual Basic Editor werkt, kunt u op trefwoorden klikken en op F1 drukken om De Help voor ontwikkelaars te openen en meer te weten te komen 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. U kunt ook globale macro's converteren die niet zijn gekoppeld aan een specifiek formulier of rapport.
Macro's converteren die zijn gekoppeld aan een formulier of rapport
Dit proces wordt geconverteerd naar VBA macro's waarnaar wordt verwezen door of ingesloten in een formulier of rapport, of een van de besturingselementen, en voegt de VBA code toe 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.
Klik in het navigatiedeelvenster met de rechtermuisknop op het formulier of rapport en klik vervolgens op Ontwerpweergave.
Klik op het tabblad Formulierontwerp in de groep Extra op Macro's van formulier converteren naar Visual Basic of Macro's van rapport converteren naar Visual Basic.
Selecteer in het dialoogvenster Formuliermacro's converteren of Rapportmacro's converteren of u wilt dat er code voor foutafhandeling moet worden toegevoegd aan de functies die worden gegenereerd. Als uw macro's opmerkingen bevatten, selecteert u ook of u deze opmerkingen wilt opnemen in 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. Access wijzigt ook de gebeurtenis-eigenschappen van het formulier of rapport, zodat de nieuwe
VBAprocedures worden uitgevoerd in plaats van de macro's.De code weergeven en bewerken
VBA:Terwijl het formulier of rapport nog steeds is geopend in de ontwerpweergave, drukt u op F4 als het eigenschappenvenster nog niet wordt weergegeven.
Klik op het tabblad Gebeurtenis van het eigenschappenvenster in een eigenschappenvak waarin wordt weergegeven
[Event Procedure]en klik vervolgens op de knop Bouwen . 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
Klik in het navigatiedeelvenster met de rechtermuisknop op de macro die u wilt converteren en klik vervolgens op Ontwerpweergave.
Klik op het tabblad Macroontwerp in de groep Extra op Macro's converteren naar Visual Basic.
Selecteer de gewenste opties in het dialoogvenster Macro converteren en klik vervolgens op Converteren. De macro wordt geconverteerd en Visual Basic Editor wordt geopend.
De code weergeven en bewerken
VBA:- Als in Visual Basic Editor het deelvenster Projectverkenner niet wordt weergegeven, klikt u in het menu Beeld op Projectverkenner.
- Vouw de boomstructuur uit onder de naam van de database waarin u werkt.
- Dubbelklik onder Modules op de
Converted Macro-<macro name>module. De module wordt geopend in Visual Basic Editor.
Een VBA-functie koppelen aan een gebeurteniseigenschap
Wanneer u een globale macro converteert naar VBA, wordt de VBA code in een standaardmodule geplaatst. In tegenstelling tot een klasmodule maakt een standaardmodule geen deel uit van een formulier of rapport. U wilt de functie waarschijnlijk koppelen aan een gebeurteniseigenschap in een formulier, rapport of besturingselement, zodat de code precies wordt uitgevoerd waar en wanneer u wilt. Hiervoor kunt u de VBA code kopiëren naar een klassemodule en deze vervolgens koppelen aan een gebeurteniseigenschap, of u kunt een speciale aanroep van de gebeurteniseigenschap naar de standaardmodule maken met behulp van de volgende procedure.
- Kijk in Visual Basic Editor wat de naam van de functie is. Als u bijvoorbeeld een macro met de naam
MyMacrohebt geconverteerd, isMyMacro()de naam van de functie . - Sluit Visual Basic Editor af.
- Klik in het navigatiedeelvenster met de rechtermuisknop op het formulier of rapport waaraan u de functie wilt koppelen en klik vervolgens op Ontwerpweergave.
- Klik op het besturingselement of de sectie waaraan u de functie wilt koppelen.
- Als het eigenschappenvenster nog niet wordt weergegeven, drukt u op F4 om het weer te geven.
- Klik op het tabblad Gebeurtenis van het eigenschappenvenster in het vak van de gebeurteniseigenschap waaraan u de functie wilt koppelen.
- Typ in het eigenschappenvak een gelijkteken (
=) gevolgd door de naam van de functie,=MyMacro()bijvoorbeeld . Vergeet de haakjes niet. - Sla het formulier of rapport op door op de werkbalk Snelle toegang te klikken op Opslaan.
- Dubbelklik in het navigatiedeelvenster op het formulier of rapport, en kijk of de code op de juiste manier wordt uitgevoerd.
U kent nu de basisstappen voor het toevoegen VBA van code aan uw database. In dit artikel worden alleen de basisbeginselen beschreven van hoe u aan de slag gaat. Veel uitstekende naslagwerken en online bronnen kunnen u helpen uw programmeervaardigheden op te bouwen.
Zie ook
Een macro voor de gebruikersinterface (UI) maken
Een Access-macro uitvoeren via een sneltoets
Opstartgebeurtenissen automatiseren met een macro
Een macro maken die wordt uitgevoerd als u een database opent
Volgorde van gebeurtenissen voor databaseobjecten
Naar boven