UN EJEMPLO
'el siguiente ejemplo [que puedes adaptar para otras necesidades]...
' 1) 'toma' la carpeta predeterminada que pongas en 'A1' [p.e. -> c:
uta ysub-carpeta]
' nota: puedes omitir el separador de rutas final ->
' 2) 'toma' los criterios [EXTensiones] que pongas en algun rango [p.e. 'A2:B2'] del tipo: *.doc y/o *.xls
' nota: el asterisco es necesario... es UNO por celda, y... si NO pones ninguno... no devuelve nada !!!
'3) pone en el rango 'A3:G3' los titulos de 'algunos' atributos de los archivos en 'esa' carpeta
'4) a partir de la fila 4, vacia los nombres [y sus atributos] que se encuentran en la carpeta 'solicitada' ;)
Sub ListarArchivosEnCarpeta()
Application.ScreenUpdating = False
Dim Carpeta As String, Fila As Long, Archivo, RutaCorta As String, Criterios As String, Tmp As Range
Carpeta = Range("a1"): Range("a1,e1").ClearContents
Fila = 4
Criterios = "a2:b2" ' si necesitas mas 'criterios'... amplia las columnas de este rango :)) '
Set Tmp = Cells.Find(Empty)
Range("a3:g3") = Array( _
"Nombre", "Tamaño", "Tipo", "Creado", "Acceso", "Modificado", "Nombre corto")
With CreateObject("Scripting.FileSystemObject")
With .GetFolder(Carpeta): RutaCorta = .ShortPath
For Each Archivo In .Files
With Archivo: Tmp = .Name
If Application.SumProduct(Application.CountIf(Tmp, Range(Criterios))) Then
Range("a" & Fila & ":g" & Fila) = Array( _
.Name, .Size, .Type, .DateCreated, .DateLastAccessed, .DateLastModified, .ShortName)
Fila = Fila + 1
End If
End With
Next
End With
End With
Tmp.ClearContents: Set Tmp = Nothing
Range("a1:g1").EntireColumn.AutoFit: Range("a1") = Carpeta: Range("e1") = RutaCorta
End Sub