In deze zelfstudie leert u hoe u VBA kunt gebruiken om Excel-werkmap op verschillende manieren te openen en te sluiten.
Met VBA kunt u bestanden openen of sluiten met behulp van de standaardmethoden .Open en .Dichtbij.
Als u wilt leren hoe u kunt controleren of een bestand bestaat voordat u probeert het bestand te openen, kunt u op deze link klikken: VBA-bestand bestaat
Open een werkmap in VBA
Werkmap openen vanuit pad
Als u weet welk bestand u wilt openen, kunt u de volledige padnaam in de functie opgeven. Hier is de code:
1 | Werkmappen.Open "C:\VBA-map\Voorbeeldbestand 1.xlsx" |
Deze regel van de code opent het bestand "Voorbeeldbestand 1" uit de "VBA-map".
Werkmap openen - ActiveWorkbook
Wanneer u een werkmap opent, wordt deze automatisch de ActiveWorkbook. U kunt als volgt naar de nieuw geopende werkmap verwijzen:
1 | ActiveWorkbook.Opslaan |
Wanneer u naar een blad of bereik verwijst en de naam van de werkmap weglaat, gaat VBA ervan uit dat u verwijst naar de ActiveWorkbook:
1 | Spreadsheets ("Blad1").Naam = "Invoer" |
Werkmap openen en toewijzen aan een variabele
U kunt ook een werkmap openen en deze rechtstreeks aan een objectvariabele toewijzen. Deze procedure opent een werkmap voor de wb variabele en sla vervolgens de werkmap op.
123456 | Sub OpenWerkboekNaarVariable()Dim wb als werkboekStel wb = Workbooks.Open("C:\VBA Folder\Voorbeeldbestand 1.xlsx") inwb.OpslaanEinde sub |
Werkmappen toewijzen aan variabelen wanneer ze worden geopend, is de beste manier om uw werkmappen bij te houden
Dialoogvenster Werkmap openen
U kunt ook het dialoogvenster Bestand openen van de werkmap activeren. Hierdoor kan de gebruiker naar een bestand navigeren en het openen:
12345678 | Sub Open Werkboek ()Dim strFile As StringstrFile = Application.GetOpenFilename()Werkmappen.Open (strFile)Einde sub |
Zoals je kunt zien in afbeelding 1, kunnen gebruikers met deze aanpak kiezen welk bestand ze willen openen. De Open File Dialog Box kan sterk worden aangepast. U kunt standaard naar een bepaalde map gaan, kiezen welke typen bestanden zichtbaar zijn (ex… alleen xlsx), en meer. Lees onze tutorial over de Open File Dialog Box voor gedetailleerde voorbeelden.
Nieuwe werkmap openen
Deze regel code opent een nieuwe werkmap:
1 | Werkmappen.Toevoegen |
Open nieuwe werkmap naar variabele
Deze procedure opent een nieuwe werkmap en wijst deze toe aan variabele wb:
1234 | Sub OpenNieuweWerkmap()Dim wb als werkboekStel wb = Werkmappen in.ToevoegenEinde sub |
Syntaxis van werkmap openen
Wanneer u Workbooks.Open gebruikt, merkt u misschien dat er veel opties beschikbaar zijn bij het openen van de werkmap:
De bestandsnaam is vereist. Alle andere argumenten zijn optioneel - en u hoeft waarschijnlijk de meeste andere argumenten niet te kennen. Dit zijn de twee meest voorkomende:
Werkmap alleen-lezen openen
Wanneer de werkmap alleen-lezen is geopend, kunt u niet opslaan over het oorspronkelijke bestand. Dit voorkomt dat het bestand door de gebruiker wordt bewerkt.
1 | Werkmappen.Open "C:\VBA-map\Voorbeeldbestand 1.xlsx", , True |
Met wachtwoord beveiligde werkmap openen
Een werkmap is mogelijk beveiligd met een wachtwoord. Gebruik deze code om de met een wachtwoord beveiligde werkmap te openen:
1 | Werkmappen.Open "C:\VBA-map\Voorbeeldbestand 1.xlsx", , , "wachtwoord" |
Syntaxisnotities van werkmap openen
Merk op dat we in de bovenstaande afbeelding een haakje "(" hebben opgenomen om de syntaxis weer te geven. Als u haakjes gebruikt bij het werken met Workbooks.Open, moet u de werkmap toewijzen aan een variabele:
1234 | Sub-OpenWB()Dim wb als werkboekSet wb = Workbooks.Open("C:\VBA Folder\Voorbeeldbestand 1.xlsx", True, True)Einde sub |
Sluit een werkmap in VBA
Specifieke werkmap sluiten
Net als bij het openen van een werkmap, zijn er verschillende manieren om een bestand te sluiten. Als je weet welk bestand je wilt sluiten, kun je de volgende code gebruiken:
1 | Workbooks.Close ("C:\VBA-map\Voorbeeldbestand 1.xlsx") |
Deze regel code sluit het bestand "Voorbeeldbestand 1" als het is geopend. Als dit niet het geval is, wordt er een fout geretourneerd, dus u moet zorgen voor foutafhandeling.
Actieve werkmap sluiten
Als u de werkmap die momenteel actief is, wilt sluiten, kunt u dat met deze regel code doen:
1 | ActiveWorkbook.Sluiten |
Sluit alle geopende werkmappen
Om alle geopende werkmappen te sluiten, kunt u eenvoudig deze code gebruiken:
1 | Werkmappen.Sluiten |
Sluit eerst geopende werkmap
Hiermee wordt de eerste geopende/gemaakte werkmap gesloten:
1 | Werkmappen(1).Sluiten |
Vervang 1 door 2 om de tweede geopende / gemaakte werkmap te sluiten, enzovoort.
Sluiten zonder op te slaan
Hiermee wordt een werkmap gesloten zonder op te slaan en zonder de prompt voor opslaan weer te geven:
1 | ActiveWorkbook.Sluit savechanges:=False |
Opslaan en sluiten zonder prompt
Op dezelfde manier zal dit een werkmap opslaan en sluiten zonder de opslagprompt weer te geven:
1 | ActiveWorkbook.Sluit savechanges:=True |
Opmerking: er zijn verschillende andere manieren om aan te geven of u een werkmap wilt opslaan of niet, en ook of u prompts wilt weergeven of niet. Hier wordt hier nader op ingegaan.
Andere open voorbeelden van werkmappen
Meerdere nieuwe werkmappen openen
Met deze procedure worden meerdere nieuwe werkmappen geopend, waarbij de nieuwe werkmappen aan een array worden toegewezen:
12345678 | Sub OpenMultipleNewWorkbooks()Dim arrWb(3) als werkboekDim ik als geheel getalVoor i = 1 tot 3Stel arrWb(i) = Werkmappen in.Toevoegenvolgende iEinde sub |
Alle Excel-werkmappen in een map openen
Deze procedure opent alle Excel-werkmappen in een map met behulp van de Open File Dialog-kiezer.
12345678910111213141516 | Sub OpenMultipleWorkbooksInFolder()Dim wb als werkboekDim dlgFD As FileDialogDim strFolder As StringDim strBestandsnaam As StringStel dlgFD = Application.FileDialog (msoFileDialogFolderPicker) inAls dlgFD.Toon = -1 DanstrFolder = dlgFD.SelectedItems(1) & Application.PathSeparatorstrFileName = Dir(strFolder & "*.xls*")Do While strFileName ""Stel wb = Workbooks.Open (strFolder & strFileName) instrFileName = mapLusStop alsEinde sub |
Controleer of een werkmap is geopend
Deze procedure test of een werkmap geopend is:
1234567891011 | Sub TestByWerkboekNaam()Dim wb als werkboekVoor elke wb In WerkmappenAls wb.Name = "Nieuw Microsoft Excel-werkblad.xls" DanMsgBox "Gevonden"Exit Sub 'belcode hier, we sluiten nu gewoon afStop alsVolgendeEinde sub |
Werkboek_Open gebeurtenis
VBA-gebeurtenissen zijn "triggers" die VBA vertellen om bepaalde code uit te voeren. U kunt werkmapgebeurtenissen instellen voor openen, sluiten, vóór opslaan, na opslaan en meer.
Lees onze Workbook_Open Event-tutorial voor meer informatie over het automatisch uitvoeren van macro's wanneer een werkmap wordt geopend.