Menu Sluiten

Bestand en folder acties uitvoeren met een macro

macro excel vba bestand folder acties

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

Heeft dit artikel je geholpen?

3 reacties

  1. Pingback:Bestand openen met een macro - Macro Excel Advies

    • MartinR

      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”

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *