Listado de ficheros en un directorio - extensiones

25/01/2010 - 18:21 por Miguel | Informe spam
Muy buenas:
Tengo hace bastante timepo una macro que copié de este foro, para listar los
archivos de un directorio y me gustaría saber si hay algún parámetro que me
dé el tipo de extensión que tiene el archivo.
Es decir si termina en .xls - archivo de excell, .doc - archivo de word
, etc. etc.
Un saludo y gracias.
 

Leer las respuestas

#1 Héctor Miguel
26/01/2010 - 00:55 | Informe spam
hola, Miguel !

Tengo hace bastante timepo una macro que copie de este foro, para listar los archivos de un directorio
y me gustaria saber si hay algun parametro que me de el tipo de extension que tiene el archivo.
Es decir si termina en .xls - archivo de excel, .doc - archivo de word, etc. etc.



(si transtribes "la macro"... seria mas facil sugerir algun cambio o adaptacion) :-(( en via de mientras...

el siguiente ejemplo (que puedes adaptar para otras necesidades)...
1) toma la carpeta predeterminada que pongas en 'A1' (p.e. -> c:uta y\sub-carpeta)
2) pone en el rango 'A2:E2' los titulos para los atributos de los archivos
3) a partir de la fila 3, vacia los nombres de los archivos que se encuentren (y sus atributos)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

' en un modulo de codigo 'normal' ==
Sub Lista_de_archivos()
Application.ScreenUpdating = False
Dim Carpeta As String: Carpeta = Range("a1"): Cells.Clear
Range("a2:e2") = Array("Ruta", "Nombre", "Tamaño", "Modificado", "Tipo")
Listar_archivos_en Carpeta, True
End Sub

Sub Listar_archivos_en(Carpeta As String, Completo As Boolean)
Dim Archivo, SubCarpeta, Fila As Long
Fila = Range("a65536").End(xlUp).Row + 1
With CreateObject("scripting.filesystemobject")
With .GetFolder(Carpeta)
For Each Archivo In .Files
With Archivo
Range("a" & Fila & ":e" & Fila) = Array( _
Application.Substitute(.Path, .Name, ""), .Name, .Size, .DateLastModified, .Type)
End With
Fila = Fila + 1
Next
If Completo Then
For Each SubCarpeta In .SubFolders
Listar_archivos_en SubCarpeta.Path, True
Next
End If
End With
End With
Range("a1:e1").EntireColumn.AutoFit
Range("a1") = Carpeta
Debug.Print ActiveSheet.UsedRange.Address
End Sub

Preguntas similares