Listar todos los ficheros de un directorio

08/06/2006 - 23:26 por javier | Informe spam
Listar todos los ficheros de un directorio


Buenos dias:

Estaba intentando usar éste código que nos dejaron KL y Manuel Romero


'-Inicio Codigo--
Const sRuta = "C:\Documents and Settings\juan\Mis documentos\prueba\" 'ruta
hacia la carpeta
Const sFiltro = "*.*"

Sub ExtraerNombres()
Dim sBusc As String, lCont As Long

Application.ScreenUpdating = False
lCont=1
sBusc=Dir(sRuta & sFiltro)
Do While sBusc<>""
Worksheets(1).Cells(lCont + 1, "A") = sBusc
lCont=lCont+1
sBusc=Dir()
Loop
End Sub
'-Fin Codigo--



El código funciona bien pero yo necesitaba incluir la ruta completa (junto
con el nombre de los archivos)que hay en dicha carpeta ( \prueba\ ) y en
todas las subcarpetas contenidas. O sea todos los archivos. También
necesitaba indicar el tamaño y la fecha de modificación, por ejemplo en
columnas contiguas "B" y "C", de cada archivo.

PD.:
Donde pone Const sFiltro = "*.xls" yo lo he dejado así: Const sFiltro =
"*.*" porque necesito listar cualquier archivo

Muchas gracias,
djavier

Preguntas similare

Leer las respuestas

#1 KL
09/06/2006 - 14:16 | Informe spam
Hola Javier,

Listar todos los ficheros de un directorio
incluir la ruta completa
todas las subcarpetas contenidas
indicar el tamaño y la fecha de modificación



Yo haria algo asi:

'--Inicio Codigo--
Sub test()
Dim miRuta As String
Dim Fila As Long
Dim i As Long
Dim miHoja As Worksheet

miRuta = "C:\Documents and Settings\juan\Mis documentos\prueba\"
Set miHoja = Worksheets(1)

With Application.FileSearch
.NewSearch
.LookIn = miRuta
.SearchSubFolders = True
.FileType = msoFileTypeAllFiles
If .Execute > 1 Then
If .FoundFiles.Count = 0 Then
MsgBox "No se ha encontrado ningun archivo", vbInformation
Exit Sub
End If
Fila = 1
With miHoja.Range("A1:C1")
.Value = Array("Archivo", "Tamano", "Fecha Modificacion")
.Font.Bold = True
End With
For i = 1 To .FoundFiles.Count
Fila = Fila + 1
miHoja.Cells(Fila, 1) = .FoundFiles(i)
miHoja.Cells(Fila, 2) = FileLen(.FoundFiles(i))
miHoja.Cells(Fila, 3) = FileDateTime(.FoundFiles(i))
Next i
End If
End With
End Sub
'--Final Codigo--
Respuesta Responder a este mensaje
#2 javier
09/06/2006 - 22:09 | Informe spam
Hola KL,
Muchas gracias.

En general funciona bien, pero lo estaba probando para obtener los archivos
de Favoritos ( C:\Documents and Settings\juan\Favoritos\ ), son de tipo
acceso directo (accesos directo a internet), y no sé por qué razón, algunos
archivos el código no los encuentra (digamos que aproximadamente un 20% no
los encuentra).


Por ejemplo, estos cuatro archivos (accesos directos):

Ruta completa







C:\Documents and Settings\juan\Favoritos\Anuncios gratis en segundamano.es
anuncios gratuitos clasificados de pisos, coches, motos, empleo, muebles
C:\Documents and Settings\juan\Favoritos\AltaVista - Babel Fish Traducción
C:\Documents and Settings\juan\Favoritos\Subir-Imagenes.com - subir
imagenes, alojar fotos, hosting imagenes, banco de imagenes, subir fotos,
publicar fotos
C:\Documents and Settings\juan\Favoritos\Diarios\elmundo.es - Hemeroteca


Nombre del Archivo







Anuncios gratis en segundamano.es anuncios gratuitos clasificados de pisos,
coches, motos, empleo, muebles
AltaVista - Babel Fish Traducción
Subir-Imagenes.com - subir imagenes, alojar fotos, hosting imagenes, banco
de imagenes, subir fotos, publicar fotos
elmundo.es - Hemeroteca


Dirección URL.







http://www.segundamano.es/
http://babelfish.altavista.com/
http://www.subir-imagenes.com/
http://www.elmundo.es/elmundo/hemeroteca/


No me salen en el listado.

Estoy comprobando que todos los archivos que tienen una URL que finaliza con
éste caracter "/", no los detecta.




En esta parte del codigo:

.Value = Array("Archivo", "Tamano", "Fecha Modificacion")
.Font.Bold = True
End With
For i = 1 To .FoundFiles.Count
Fila = Fila + 1
miHoja.Cells(Fila, 1) = .FoundFiles(i)
miHoja.Cells(Fila, 2) = FileLen(.FoundFiles(i))
miHoja.Cells(Fila, 3) = FileDateTime(.FoundFiles(i))
Next i



¿se podría incluir también el Tipo de Archivo y la Dirección URL, por
ejemplo en las columnas "D" y "E"?.


Mil gracias.
Saludos

javier.



"KL" escribió:

Hola Javier,

> Listar todos los ficheros de un directorio
> incluir la ruta completa
> todas las subcarpetas contenidas
> indicar el tamaño y la fecha de modificación

Yo haria algo asi:

'--Inicio Codigo--
Sub test()
Dim miRuta As String
Dim Fila As Long
Dim i As Long
Dim miHoja As Worksheet

miRuta = "C:\Documents and Settings\juan\Mis documentos\prueba\"
Set miHoja = Worksheets(1)

With Application.FileSearch
.NewSearch
.LookIn = miRuta
.SearchSubFolders = True
.FileType = msoFileTypeAllFiles
If .Execute > 1 Then
If .FoundFiles.Count = 0 Then
MsgBox "No se ha encontrado ningun archivo", vbInformation
Exit Sub
End If
Fila = 1
With miHoja.Range("A1:C1")
.Value = Array("Archivo", "Tamano", "Fecha Modificacion")
.Font.Bold = True
End With
For i = 1 To .FoundFiles.Count
Fila = Fila + 1
miHoja.Cells(Fila, 1) = .FoundFiles(i)
miHoja.Cells(Fila, 2) = FileLen(.FoundFiles(i))
miHoja.Cells(Fila, 3) = FileDateTime(.FoundFiles(i))
Next i
End If
End With
End Sub
'--Final Codigo--

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