Hola, alguien sabe como mostrar todas las carpetas que hay en el raiz, y por
cada carpeta que encuentre que muestre las que contiene....


JUAN M AFAN DE RIBERA
=====================

he hecho una rutina que busca recursivamente dentro de la 
carpeta que le pases como argumento y devuelve todas las 
carpetas que se encuentren (aunque la manera en que lo 
devuelve está por implementar, ya que el almacenamiento de 
esa información puede cambiar según las necesidades. De 
momento la rutina imprime las carpetas encontradas en la 
ventana inmediato). Espero que te sirva. Si tienes 
dificultades, vuelve a preguntar.

Saludos,
happy

'********** Código *************
'
' Función mostrarCarpetas:

' Función que busca recursivamente en la carpeta
' que se le ha pasado en el argumento "Ruta",
' e imprime en la ventana inmediato los valores
' encontrados.
' La función Dir de VB no puede usarse en proce-
' dimientos recursivos y por tanto he usado el
' API, con las funciones FindFirstFile, FindNextFile
' y FindClose. Igualmente, en la estructura
' WIN32_FIND_DATA, puede usarse para devolver infor-
' mación sobre los archivos o carpetas encontrados.
'
' Autor: Juan M. Afán de Ribera - happy
' Fecha: Mayo 2003
'
' ¿Por qué?: Alguien lo preguntó
'
Private Declare Function FindFirstFile Lib "kernel32" _
            Alias "FindFirstFileA" _
            (ByVal lpFileName As String, _
            lpFindFileData As WIN32_FIND_DATA) As Long
            
Private Declare Function FindNextFile Lib "kernel32" _
            Alias "FindNextFileA" _
            (ByVal hFindFile As Long, _
            lpFindFileData As WIN32_FIND_DATA) As Long
            
Private Declare Function FindClose Lib "kernel32" _
            (ByVal hFindFile As Long) As Long


Private Const MAX_PATH = 255

Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
End Type

Function mostrarCarpetas(Ruta As String)
Dim WFD As WIN32_FIND_DATA
Dim hBusca As Long
Dim ret As Long
Dim nomCarpeta As String

    If Right(Ruta, 1) <> "\" Then Ruta = Ruta & "\"
    
    hBusca = FindFirstFile(Ruta & "*", WFD)
    
    If hBusca <> -1 Then
    
        ret = True
    
        While ret
            nomCarpeta = ExtraerNulos(WFD.cFileName)
            If (nomCarpeta <> ".") And (nomCarpeta _ 
                                    <> "..") Then
                If (GetAttr(Ruta & nomCarpeta) And _
                      vbDirectory) = vbDirectory Then
                    If (GetAttr(Ruta & nomCarpeta) And _
                      vbDirectory) = vbDirectory Then
                        mostrarCarpetas Ruta & _ 
                                        nomCarpeta & "\"
                        Debug.Print Ruta & nomCarpeta
                        'SysCmd acSysCmdSetStatus, _ 
                         Ruta &  nomCarpeta
                    End If
                End If
            End If
            ret = FindNextFile(hBusca, WFD)
        Wend
    
        FindClose hBusca
    
        'SysCmd acSysCmdClearStatus
        End If
        
End Function

Function ExtraerNulos(cad As String) As String
    If (InStr(cad, Chr(0)) > 0) Then
        cad = Left(cad, InStr(cad, Chr(0)) - 1)
    End If
    ExtraerNulos = cad
End Function
'************** Fin código *************

    Source: geocities.com/es/ensolva/Descargas/Documentos

               ( geocities.com/es/ensolva/Descargas)                   ( geocities.com/es/ensolva)                   ( geocities.com/es)