Is it possible?
Yes.
For my opinion the code must be decomposed to several. 1. main code , 2 Subfolders enumeratre that must be recursive and 3 file processing
For subfolders you can use
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\Program Files")
For Each SubFolder In Folder.SubFolders
    debug.print SubFolder.Name
Next