Wist je dat de mogelijkheden die je hebt met het uitvoeren macro’s ook verder reiken dan het bewerken van Excel ( Office) bestanden? Je zult verbaast zijn hoe krachtig deze programmeertaal kan zijn! Één van de mogelijkheden is het uitvoeren van acties met betrekking tot bestanden en folders. In dit artikel laat ik je zien welke functies je allemaal kunt toepassen. Door middel van praktijkvoorbeelden laat ik zien in welke situaties je welke bestand en folder acties kunt uitvoeren met een macro.
Open een bestand met een macro
Indien je exact weet wat de naam van het bestand is dat je wilt openen en de folder waar het bestand zich bevindt dan is de code af te vangen met één regel code. Je schrijft simpelweg Workbooks.Open gevolgd door je bestandsnaam plus volledige pad tussen aanhalingstekens.
Sub OpenBestand()
Workbooks.Open "D:\OpenDitBestand.xlsx"
End Sub
Kopieer een bestand met een macro
Het kopieren van het bestand doen we met de FileCopy functie. Bij deze functie heb je twee parameters. De eerste parameter is het bestand dat je wilt kopieren inclusief folder. De tweede parameter geeft aan waar het bestand heen gekopieerd gaat worden. Hierbij dien je ook het gehele pad te plaatsen. Het maakt ook niet uit of de nieuwe bestandsnaam gelijk is aan de oude of dat je hem meteen hernoemt. Beide opties zijn mogelijk.
Sub KopieerBestand()
FileCopy "D:\TeKopierenBestand.xlsb", "D:\Hierheen\TeKopierenBestand.xlsb"
End Sub
Hernoem of/en verplaats een bestand met een macro
Hernoemen van een bestand doen we met de Name as functie. Achter Name schrijf je tussen dubbele aanhalingstekens het bestand dat je wilt hernoemen. Vervolgens schrijf je het woord ‘as’ gevolgd door het de nieuwe bestandnaam inclusief folder. Hierbij maakt het ook niet uit als je ook de folder wijzigt naast de bestandnaam.
Sub HernoemOfenVerplaatsBestand()
Name "D:\Hierheen\TeKopierenBestand.xlsb" As "D:\Hierheen\TeKopierenBestandNIEUW.xlsb"
End Sub
Verwijder een bestand met een macro
Verwijderen van een bestand is ook vrij eenvoudig. Je schrijft het te verwijderen bestand inclusief volledige pad tussen dubbele aanhalingstekens en zet daar het woord ‘Kill’ voor. Kijk goed uit of je wel het juiste bestand neerzet voordat je het verkeerde bestand verwijdert ;).
Sub VerwijderBestand()
Kill "D:\Hierheen\TeKopierenBestand.xlsb"
End Sub
Je kunt met behulp van de Kill functie ook meerdere bestanden verwijderen of zelfs de gehele inhoud van de folder. Dit doe je door te werken met een wildcard in de vorm van een ‘*’ teken.
Stel je wilt alle bestanden met de extensie ‘xlsx’ verwijderen uit een folder. Dan ziet je code er zo uit:
Sub VerwijderBestand()
Kill "D:\VBA testen\Verwijderen\*xlsx*"
End Sub
Of je wilt simpelweg alles verwijderen uit een folder. Je code wordt dan:
Sub VerwijderBestand()
Kill "D:\VBA testen\Verwijderen\*.*"
End Sub
Controleer of een bestand of folder bestaat met een macro
Om te controleren of een bestand bestaat maken wij gebruik van de Dir functie. De Dir functie geeft de bestandsnaam terug indien het bestand bestaat. Als het bestand niet bestaat geeft hij niets terug. Dus je kunt stellen dat als de controle ‘iets’ teruggeeft dat het bestand dan bestaat. Het is handig om deze functie dus samen te gebruiken met een If statement.
Sub BestaatDitBestand()
If Dir("D:\Hierheen\TeKopierenBestand.xlsb") <> "" Then
MsgBox "Bestand gevonden"
Else
MsgBox "Bestand niet gevonden!"
End If
End Sub
Loop door alle bestanden in een folder heen met een macro
Deze bestand en folder actie vereist wat meer code om uit te voeren dan de andere acties die beschreven staan in dit artikel. Je kunt deze actie op 2 manieren uitvoeren. Ik behandel nu de optie waarbij je gebruik maakt van de dir functie ic.m. een Do Loop. Eerst stop je de folderlocatie in een folder variabele. Vervolgens pas je de hierboven behandelde Dir functie toe i.c.m. met een sterretje (Wildcard) op de myfile (bestandsnaam) variabele. Dat betekent simpelweg dat als er één bestand in die folder staat dat hij daarvan de bestandsnaam opslaat.
Vervolgens gebruik je de loop om de Dir functie te blijven herhalen totdat hij geen bestanden meer in de folder ziet. De Do Loop eindigt dan doordat de lengte van de bestandsnaam gelijk is aan nul.
Sub LoopDoorBestandenHeenInEenFolder()
myfolder = "D:\Hierheen"
myfile = Dir(myfolder & "\*")
Do While Len(myfile) > 0
myfile = Dir
Loop
End Sub
Maak een nieuwe folder aan met een macro
Een nieuwe folder aanmaken doe je met behulp van de MkDir functie Je hoeft na MkDir alleen het nieuwe pad tussen dubbele aanhalingstekens te plaatsen en je bent klaar.
Sub MaakDezeFolder()
MkDir "D:\Hierheen2"
End Sub
Pingback:Bestand openen met een macro - Macro Excel Advies
Magnifiek!
Alleen zou ik nu nog willen weten hoe ik het ge-opende excel-bestand ook nog, aansluitend kan afdrukken, en daarna weer sluiten.
Hoi Jan,
Indien je een heel tabblad wilt printen kun je dit op de onderstaande manier doen. Eerst activeren en vervolgens printen:
ThisWorkbook.Sheets(“Blad1”).Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Je kunt binnen een tabblad ook een range bepalen die je wilt uitprinten.
Dan voeg je een derde regel toe:
ThisWorkbook.Sheets(“Blad1”).PageSetup.PrintArea = “$D$5:$D$8”
ThisWorkbook.Sheets(“Blad1”).Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
Sluiten van een bestand doe je zo
Workbooks.Close “D:\SluitDitBestand.xlsx”