domingo, 23 de enero de 2011

Listar Carpetas, Archivos, SubCarpetas y Archivos de las SubCarpetas

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 "Ruta", "Nombre", "Tamaño", "Modificado", "Tipo"
3) a partir de la fila 3, vacia los nombres de los archivos que se encuentren (y sus atributos)

En un modulo de codigo 'normal'=> Lista carpetas, subcarpetas y archivos
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
Este otro macro lista todos los atributos de los archivos de una sola carpeta creando otro modulo de código 'normal'=> archivos todos sus atributos
Sub TodosLosAtributos()
Application.FileDialog(msoFileDialogFolderPicker).Show
Directorio = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
Set oShell = CreateObject("Shell.Application")
Set oDir = oShell.Namespace(Directorio)

Application.ScreenUpdating = False
Cells.ClearContents
For y = 0 To 40
   Cells(1, y + 1) = oDir.GetDetailsOf(oDir.Items, y)
Next
x = 2
For Each sFile In oDir.Items
   For y = 0 To 40
      Cells(x, y + 1) = oDir.GetDetailsOf(sFile, y)
   Next
   x = x + 1
Next
Cells.EntireColumn.AutoFit
End Sub


archivo
https://www.dropbox.com/s/pal0y6nn8g7eeur/20140808_lista_archivos.xlsm

1 comentario:

  1. amigo, como puedo hacer para que no se listen los archivos de base de datos del sistema, me explico:
    tengo una carpeta con canciones (mp3, la macro las lista pero tambien lista los archivos inherentes al sistema como thumbs.db y fotos de las portadas de los albumes del artista al que pertenece la cancion.
    hace un tiempo escuché de un código que evitaba esto
    ojala puedas ayudarme

    ResponderEliminar

Visualizador de windows predefinido para abrir imagenes

 abrir regedit Equipo\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations nuevas entrada valor de todas...