In dit voorbeeld wordt met recursief programmeren in VBA een overzicht in Excel gegenereerd met alle bestandsnamen uit de geselecteerde hoofdmap. De mappen, submappen en bestandsnamen worden tevens hiërarchisch weergegeven.
Recursief staat voor zichzelf herhalend. In deze context betekent dat de functie Recursief telkens opnieuw wordt aangeroepen.

In de rechter afbeelding (PSD) is te zien hoe de functie Recursief werkt. In deze functie bevindt zich als eerste een [For-each loop]. Binnen deze loop zal als eerste de naam van de map - [Naam map] - worden afgedrukt. De volgende stap is om opnieuw de functie Recursief aan te roepen om te kijken of deze map een supmap heeft, [Submap?]. Wanneer er geen submappen meer zijn wordt de bestandsnaam - [Naam bestand] - afgedrukt en gekeken of er nog meer bestanden zijn, [Nog een bestand?]. Dit laatste gebeurd wederom met een [For-each loop].
Download hier de toepassing.
'-----------------------------------------------------------------------------------------------------------------------
' Auteur : pascalterheege.nl
' Datum : 6-10-2016
' Object : modRecursief
' Doel : alle bestandsnamen uit map uitlezen inclusief submappen
' Opmerking : FileSystemObject: late binding
'-----------------------------------------------------------------------------------------------------------------------
Option Explicit
Dim r As Long 'rij
Dim k As Long 'kolom
Sub Start()
' Hoofdmap selecteren m.b.v. ingebouwde dialoogvenster
Dim objFSO As Object
Dim objHoofdMap As Object
Dim fdVenster As FileDialog
Set fdVenster = Application.FileDialog(msoFileDialogFolderPicker)
fdVenster.Show
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objHoofdMap = objFSO.GetFolder(fdVenster.SelectedItems(1))
Recursief objHoofdMap
End Sub
Sub Recursief(objHoofdMap As Object)
' Itereren door alle mappen, submappen en bestanden en
' in dezelfde hierarchie in Excel plaatsen
Dim objSubMap As Object
Dim objBestand As Object
r = r + 1
For Each objSubMap In objHoofdMap.SubFolders
k = k + 1
Cells(r, k) = objSubMap.Name
Recursief objSubMap
k = k + 1
If r = 1 Then r = k
For Each objBestand In objSubMap.Files
Cells(r, k) = objBestand.Name
r = r + 1
Next
k = k - 2
Next
End Sub
“Here are the 2 Rules of Miyagi-Ryu Karate. Rule Number 1: ‘Karate for defense only.’ Rule Number 2: ‘First learn rule number 1.’” :)
Mr. Miyagi

