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

#1 javier
29/06/2006 - 11:55 | Informe spam
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




Respuesta Responder a este mensaje
#2 Francisco MTY
29/06/2006 - 12:12 | Informe spam
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
Respuesta Responder a este mensaje
#3 Francisco M
29/06/2006 - 15:43 | Informe spam
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




Respuesta Responder a este mensaje
#4 Francisco M
29/06/2006 - 16:07 | Informe spam
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










Respuesta Responder a este mensaje
#5 javier
29/06/2006 - 17:03 | Informe spam
Hola Francisco,

En principio el procedimiento corre bien, no me da erores, pero te comento:

x = Shell("cmd /c dir /s /w " & ruta & "\*. /b > c:\test.txt")

Workbooks.OpenText "c:\test.txt"

Luego copia la columna "A" de test (de excel) que está en blanco (sin datos)
Y la pega en el libro de Excel que estoy probando también en blanco.

es decir: funciona casi todo pero al final no consigo ningún dato.

Si sabes que puede faltar... ???

saludos, gracias.
javier




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



-

"Francisco M" escribió:

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
>>
>>
>>
>>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida