Vba: bestanden in een map weergeven
U kunt de volgende methoden in VBA gebruiken om bestanden in een map weer te geven:
Methode 1: Maak een lijst van alle bestanden in de map
SubListFiles ()
Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")
For Each objFile In oFolder.Files
Cells(i + 1, 1) = objFile.Name
i = i + 1
Next objFile
End Sub
Methode 2: Geef alleen .xlsx-bestanden in de map weer
SubListFiles ()
Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")
For Each objFile In oFolder.Files
If Right(objFile.Name, 4) = "xlsx" Then
Cells(i + 1, 1) = objFile.Name
i = i + 1
End If
Next objFile
End Sub
De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken met een map met het volgende bestandspad:
- C:\Gebruikers\bob\Documenten\huidige_data
De map bevat twee .xlsx- bestanden en drie .csv- bestanden:
Voorbeeld 1: Lijst van alle bestanden in de map
We kunnen de volgende macro maken om alle bestanden in de map weer te geven:
SubListFiles ()
Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")
For Each objFile In oFolder.Files
Cells(i + 1, 1) = objFile.Name
i = i + 1
Next objFile
End Sub
Wanneer we deze macro uitvoeren, ontvangen we de volgende uitvoer:
We kunnen zien dat de namen van alle bestanden in de map (ongeacht hun extensie) nu worden vermeld in kolom A van ons Excel-blad.
Voorbeeld 2: Toon alleen .xlsx-bestanden in de map
We kunnen de volgende macro maken om alleen bestanden met de extensie .xlsx in de map weer te geven:
SubListFiles ()
Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")
For Each objFile In oFolder.Files
If Right(objFile.Name, 4) = "xlsx" Then
Cells(i + 1, 1) = objFile.Name
i = i + 1
End If
Next objFile
End Sub
Wanneer we deze macro uitvoeren, ontvangen we de volgende uitvoer:
We kunnen zien dat de namen van alleen de bestanden met de extensie .xlsx in de map nu in kolom A van ons Excel-blad worden vermeld.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in VBA kunt uitvoeren:
Mappen maken met VBA
Hoe mappen te verwijderen met VBA
Hoe een bestand te hernoemen met VBA
Hoe u kunt controleren of een bestand bestaat met VBA