Listar sólo los Directorios

28/06/2006 - 22:08 por javier | Informe spam
Hola amigos:

¿Se pueden listar los directorios (carpetas) que hay dento de una carpeta?
(no son necesarios los ficheros) Por ejemplo en la columna "A" ?

Por ejemplo dentro de la carpeta "Prueba" puede haber varias subcarpetas y
dentro de cada subcarpeta puede haber otras subcapetas. Algunas carpetas
estan vacías, no contienen ficheros.

podría quedar de alguna de estas formas:

C:\Prueba\cero\
C:\Prueba\cero\carpeta1\
C:\Prueba\cero\carpeta2\
C:\Prueba\cero\carpeta3\
C:\Prueba\uno\
C:\Prueba\uno\blanco\
C:\Prueba\uno\amarillo\
C:\Prueba\uno\verde\
C:\Prueba\uno\verde\juan\
C:\Prueba\uno\verde\juan\campo\





cero\
cero\carpeta1\
cero\carpeta2\
cero\carpeta3\
uno\
uno\blanco\
uno\amarillo\
uno\verde\
uno\verde\juan\
uno\verde\juan\campo\



Gracias por su apoyo.
Saludos
javier

Preguntas similare

Leer las respuestas

#6 javier
29/06/2006 - 21:21 | Informe spam
Gracias Francisco.
Este último ejemplo sí funciona muy bien.

El anterior ejemplo que parece interesante, falla algo, quizás sea fácil
corregirlo.

Saludos
Javier.





"Francisco M" escribió:

de la ayuda del msdn se puede modificar algo...

Sub TestGetFiles()
Dim dctDict As Scripting.Dictionary
Dim varItem As Variant
Dim strDirPath As String

strDirPath = "c:\prueba\"
Set dctDict = New Scripting.Dictionary
If GetFiles(strDirPath, dctDict, True) Then
fila = 1
For Each varItem In dctDict
Sheets(1).Cells(fila, 1).Value = varItem
fila = fila + 1
Next
End If
End Sub

Function GetFiles(strPath As String, dctDict As Scripting.Dictionary,
Optional blnRecursive As Boolean) As Boolean

Dim fsoSysObj As Scripting.FileSystemObject
Dim fdrFolder As Scripting.Folder
Dim fdrSubFolder As Scripting.Folder
Dim filFile As Scripting.File

Set fsoSysObj = New Scripting.FileSystemObject

On Error Resume Next
Set fdrFolder = fsoSysObj.GetFolder(strPath)
If Err <> 0 Then
GetFiles = False
GoTo GetFiles_End
End If
On Error GoTo 0

If blnRecursive Then
For Each fdrSubFolder In fdrFolder.SubFolders
dctDict.Add fdrSubFolder.Path, fdrSubFolder.Path
GetFiles fdrSubFolder.Path, dctDict, True
Next fdrSubFolder
End If

GetFiles = True

GetFiles_End:
Exit Function

End Function

sin embargo, para que funcione, debes agregar a tus referencias: Microsoft
Scripting Runtime

Saludos,
Francisco.

"Francisco M" escribió en el mensaje
news:usX2$
> lo podrías hacer, siguiendo el ejemplo de mi "tocallo" de la siguiente
> forma (es un ejemplo bien burdo y poco optimo, pero funciona):
>
> Sub directorio()
> ruta = "c:\prueba"
> x = Shell("cmd /c dir /s /w " & ruta & "\*. /b > c:\test.txt")
> Workbooks.OpenText "c:\test.txt"
> Workbooks("test.txt").Sheets(1).Columns(1).Copy
> ThisWorkbook.Sheets(1).Activate
> ThisWorkbook.Sheets(1).Range("a1").Select
> ActiveSheet.Paste
> Application.DisplayAlerts = False
> Workbooks("test.txt").Close False
> Application.DisplayAlerts = True
> End Sub
>
> sin embargo aki te dejo una ayuda (msdn), en la cual explican alguns
> ejemplos usando la función Dir, filesearch, que podrían ayudar...
>
> Saludos,
> Francisco.
>
> "javier" escribió en el mensaje
> news:
>> Muchas gracias Francisco.
>>
>> El archivo txt creo que sí lo podría importar a Excel con alguna macro.
>> Eso
>> sí lo podría hacer. Pero la línea de código que me has dejado no sé cómo
>> debe
>> ir dentro del código completo. Se me da mal VBA. Si me dejas algún
>> ejemplo te
>> lo agradecería.
>>
>>
>> Yo tengo la Carpeta C:\Prueba\ y se trataba de obtener todas las
>> subcarpetas que estén contenidas.
>>
>> Saludos
>> javier
>>
>>
>>
>> "Francisco MTY" escribió:
>>
>>> ejecuta esta instruccion en la linea de comando:
>>>
>>> c:\dir /s /w *. /b > test.txt <-- si lo quieres en un archivo
>>>
>>> ese archivo lo puedes abrir y editalo en excel con la importacion o si
>>> quieres una macro graba los pasos que realizas desde la apertura del
>>> mismo y
>>> la importacion y orbserva el codigo :)
>>>
>>> Saludos
>>>
>>>
>>>
>>>
>
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida