Le dejo una función recursiva más completa, es posible deba hacer referencia a la librería Microsoft Scripting Runtime.
Public Function ArchivosCarpetas(rutaCarpeta As String, Optional archivocarpeta As Byte)
'Función para recorrer archivos y carpetas
'Parámetros:
' Si no se pasa muestra archivos de la carpeta principal
' y subcarpetas con archivos
' 1= Muestra solo los archivo de la carpeta principal
' 2= Muestra Solo las carpetas de la carpeta principal
'Elaborado por:
' EDUARDO PÉREZ FERNÁNDEZ
'Fecha : 04/02/2023
Dim objFSO As Object
Dim objFolder As Object
Dim objSubFolder As Object
Dim objFile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(rutaCarpeta)
If archivocarpeta = 0 Then
' Mostramos los archivos de la carpeta principal
For Each objFile In objFolder.Files
Debug.Print objFile.Path
Next objFile
' Recorremos las subcarpetas y mostramos sus archivos
For Each objSubFolder In objFolder.SubFolders
ArchivosCarpetas objSubFolder.Path
For Each objFile In objSubFolder.Files
Debug.Print objFile.Path
Next objFile
Next objSubFolder
End If
If archivocarpeta = 1 Then 'Mostrar solo archivos de la carpeta principal
' Mostramos los archivos de la carpeta principal
For Each objFile In objFolder.Files
Debug.Print objFile.Path
Next objFile
End If
If archivocarpeta = 2 Then
' Recorremos las subcarpetas y mostramos sus archivos
For Each objSubFolder In objFolder.SubFolders
ArchivosCarpetas objSubFolder.Path
For Each objFile In objSubFolder.Files
Debug.Print objFile.Path
Next objFile
Next objSubFolder
End If
Set objFSO = Nothing
Set objFolder = Nothing
Set objSubFolder = Nothing
Set objFile = Nothing
End Function
Observe que la función tiene 2 parámetros, ruta y nombre de la carpeta, y un segundo parámetro que permite se indique si quiere ver solo archivos de la carpeta o las subcarpetas y archivos. Si no se pasa el parámetro muestra todo.
Ejemplos de llamada en la ventana de inmediato
¿
? ArchivosCarpetas("D:\TodoExpertos") - Muestra todo, archivos carpeta ppal y subcarpetas con archivos
? ArchivosCarpetas("D:\TodoExpertos", 1) - Muestra solo los archivos de la carpeta principal
? ArchivosCarpetas("D:\TodoExpertos", 2) - Muestra solo las carpetas de la carpeta principal