RE:contar archivos en una carpeta y subcarpetas
utiliza la orden DIR
sub encontrar_carpetas ()
MiNombre = Dir(MiRuta, vbDirectory) ' Recupera la primera entrada.
Do While MiNombre <> "" ' Inicia el bucle.
' Ignora el directorio actual y el que lo abarca.
If MiNombre <> "." And MiNombre <> ".." Then
' Usa comparación a nivel de bits para asegurarse de que MiNombre
' es un directorio.
If (GetAttr(MiRuta & MiNombre) And vbDirectory) = vbDirectory Then
list1.AddItem miruta & minombre ' Muestra la entrada solamente si
End If ' representa un directorio.
End If
MiNombre = Dir ' Obtiene siguiente entrada.
Loop
end sub
Con estas líneas capturas las carpetas que estén en C:\, lo guardas en listbox y ahora vuelves a llamar a la función anterior con el contenido del listbox, me explico:
crea un formulario y añádele un commandbutton y un listbox, haz la variable miruta pública, para que se conserve al llamar a la rutina anterior, copia el texto que sigue en el commandbutton, y el que está anteriormente escrito lo colocas en un procedimiento.
miruta="c:\"
encontrar_carpetas
y=0
do
z=list1.listcount-1
for x=y to z
miruta=list1.list(x)+"\"
encontrar_carpetas
next
y=z+1
z=list1.listcount-1
if y>z then exit do
loop
dentro del listbox tendrás todas las carpetas que cuelgan de la que elegistes en miruta.
El resto de lo que quieres hacer es cosa tuya.
saludos