In deze gids maakt u kennis met het werken met de Werkmapobject in VBA.
Het werkboekobject
Ten eerste moet u, om te kunnen werken met werkmappen in VBA, de Werkmapobject.
Met het werkmapobject kunt u als volgt naar werkmappen verwijzen met hun naam:
1 | Werkmappen ("Book2.xlsm").Activeren |
Deze code werkt echter alleen als de werkmap is geopend. Als de werkmap is gesloten, moet u het volledige werkmappad opgeven:
1 | Workbooks.Open ("C:\Users\StevePC2\Downloads\book2.xlsm") |
In plaats van het volledige pad in te typen, als uw gewenste werkmap zich in dezelfde map bevindt als de werkmap waar uw code is opgeslagen, kunt u deze regelcode gebruiken om de werkmap te openen:
1 | Workbooks.Open (ThisWorkbook.Path & "\book2.xlsm") |
Dit maakt gebruik van het ThisWorkbook-object dat we in de volgende sectie zullen bespreken.
Indexnummer werkmap
Als laatste kunt u naar werkmappen verwijzen op basis van hun "indexnummer". Het indexnummer van een werkmap komt overeen met de volgorde waarin de werkmap is geopend (technisch gezien is dit de positie van de werkmap in de Workbooks Collection).
1 | Werkmappen(1).Activeren |
Dit is handig als u bijvoorbeeld de eerste (of laatst geopende) werkmap wilt sluiten.
Activeer Workbook, ActiveWorkbook en ThisWorkbook
Als een werkmap is NIET ACTIEF, hebt u als volgt toegang tot de objecten van de werkmap:
1 | Werkmappen ("Boek2.xlsm"). Bladen ("Blad1"). Bereik ("A1"). waarde = 1 |
Als de werkmap echter Actief is, kunt u het werkmapobject weglaten:
1 | Sheets("Blad1").Bereik("A1").waarde = 1 |
En als u wilt communiceren met het actieve werkblad van de werkmap, kunt u ook het werkbladobject weglaten:
1 | Bereik ("A1").waarde = 1 |
Werkboek activeren
Gebruik de om een werkmap te activeren Methode activeren.
1 | Werkmappen ("Book2.xlsm").Activeren |
Nu kunt u communiceren met de objecten van Book2 zonder expliciet de naam van de werkmap te vermelden.
ActiefWerkboek
De ActiefWerkboek object verwijzen altijd naar de actieve werkmap. Dit is handig als u het ActiveWorkbook aan een variabele wilt toewijzen om later te gebruiken.
12 | Dim wb als werkboekStel wb = ActiveWorkbook in |
Dit Werkboek
De Dit Werkboek object verwijst altijd naar de werkmap waarin de actieve code is opgeslagen. Gebruik deze regel code om ThisWorkbook te activeren:
1 | Dit Werkboek.Activeren |
Werkmap openen
Gebruik de om een werkmap te openen Open methode:
1 | Workbooks.Open ("C:\Users\StevePC2\Downloads\book2.xlsm") |
De nieuw geopende werkmap wordt altijd de ActiefWerkboek, zodat u er gemakkelijk mee kunt communiceren.
1 | ActiveWorkbook.Opslaan |
De Open-methode heeft verschillende andere argumenten, waardoor u alleen-lezen kunt openen, een met een wachtwoord beveiligde werkmap kunt openen en meer. Het wordt hier behandeld in ons artikel over het openen / sluiten van werkboeken.
Openen en toewijzen aan variabele
U kunt ook een werkmap openen en deze tegelijkertijd aan een variabele toewijzen:
12 | Dim wb als werkboekStel wb = Workbooks.Open("C:\Users\StevePC2\Downloads\book2.xlsm") in |
Dialoogvenster Bestand openen
U kunt het dialoogvenster Bestand openen ook als volgt activeren:
12345678 | Sub Open Werkboek ()Dim strFile As StringstrFile = Application.GetOpenFilename()Werkmappen.Open (strFile)Einde sub |
Nieuwe (toevoegen) werkmap maken
Met deze regel code wordt een nieuwe werkmap gemaakt:
1 | Werkmappen.Toevoegen |
De nieuwe werkmap wordt nu de ActiefWerkboek, zodat u ermee kunt werken (bijvoorbeeld de nieuwe werkmap opslaan).
Nieuwe werkmap toevoegen aan variabele
U kunt een nieuwe werkmap ook rechtstreeks aan een variabele toevoegen:
12 | Dim wb als werkboekStel wb = Werkmappen in.Toevoegen |
Werkmap sluiten
Sluiten & Opslaan
Om een werkmap te sluiten met opslaan, gebruik de Sluit methode met Wijzigingen opslaan ingesteld op WAAR:
1 | ActiveWorkbook.Close SaveChanges:=True |
Sluiten zonder Opslaan
Om te sluiten zonder op te slaan, stelt u in Wijzigingen opslaan gelijk aan ONWAAR:
1 | ActiveWorkbook.Close SaveChanges:=False |
Werkmap Opslaan als
De Opslaan als methode wordt gebruikt om een werkmap op te slaan als.
Om een werkmap met een nieuwe naam in dezelfde map op te slaan, kunt u dit impliceren:
1 | ActiveWorkbook.OpslaanAls "nieuw" |
waarbij "new" de nieuwe bestandsnaam is.
Om een werkmap op te slaan in een nieuwe map met een specifieke bestandsextensie, geeft u eenvoudig de nieuwe map en bestandsnaam op:
1 | ActiveWorkbook.SaveAs "C:\Users\StevePC2\Downloads\new.xlsm" |
Andere werkmap VBA-voorbeelden
Naam werkmap
De naam van een werkmap ophalen:
1 | MsgBox ActiveWorkbook.Name |
Werkmap beveiligen
Om de werkmapstructuur te beschermen tegen bewerken, kunt u de Bescherm methode (wachtwoord optioneel):
1 | Werkmappen ("book1.xlsm"). Bescherm "wachtwoord" |
Gebruik de om de beveiliging van een werkmap op te heffen UnProtect-methode:
1 | Werkmappen ("book1.xlsm"). Beveiliging "wachtwoord" opheffen |
Loop door alle geopende werkmappen
Om door alle geopende werkmappen te bladeren:
123456789 | Sub LoopThroughWBs()Dim wb als werkboekVoor elke wb In WerkmappenMsgBox wb.NaamVolgende wbEinde sub |
Werkboek Evenement activeren
U kunt code uitvoeren wanneer een specifieke werkmap wordt geopend met de Werkboek open evenement.
Plaats deze procedure in de ThisWorkbook-module van uw werkmap:
123 | Privé subwerkboek_Open()Spreadsheets ("sheet1"). ActiverenEinde sub |
Deze procedure wordt geactiveerd Blad1 elke keer dat de werkmap wordt geopend.