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 *************
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)