LISTAR LAS PROPIEDADES DE TODOS LOS ARCHIVOS DE UNA CARPETA Y SUBCARPETAS

Hola a todos!

Hace varios meses publiqué un post en el que trataba la forma de listar todos los archivos contenidos en una carpeta y subcarpetas: LISTAR TODOS LOS ARCHIVOS DE UNA CARPETA Y SUS SUBCARPETAS CON VBA

Hoy un lector me preguntaba la posibilidad de añadir a esta información la fecha de la última modificación en cada archivo listado. En realidad podemos obtener muchas más propiedades que nos pueden ser de utilidad según el tipo de necesidad que tengamos.

Para obtener lo que nos indica el lector, tan solo vamos a tener que realizar una pequeña modificación en la función original:

Function CARPETA(ByVal nCarpeta)
'Declaramos variables
Dim j As Long, Subcarpeta As Object
With ActiveSheet
'Iniciamos dos loop, uno que recorre las carpetas
For Each Subcarpeta In nCarpeta.SubFolders
CARPETA Subcarpeta
Next
j = Application.CountA(.Range("A:A")) + 1
'y otro que recorre los archivos y extrae propiedades
For Each file In nCarpeta.Files
.Cells(j, 1).Select
'fecha de creación
.Cells(j, 2) = file.DateCreated
'fecha de última modificación
.Cells(j, 3) = file.DateLastModified
'fecha del último acceso
.Cells(j, 4) = file.DateLastAccessed
'tipo de archivo
.Cells(j, 5) = file.Type
'tamaño
.Cells(j, 6) = file.Size
'por último activamos hipervínculo en el path del archivo
.Hyperlinks.Add Anchor:=Selection, Address:=file.Path, TextToDisplay:=file.Path
j = j + 1
Next
End With
End Function

Como podéis observar, utilizando el objeto file con el que anteriormente obtenemos su ruta, también podemos obtener una serie de propiedades, entre ellas la fecha de la última modificación DateLastModified

Pero también otras como el tipo de archivo, su tamaño, la fecha de creación y la del último acceso.

El resultado sería este:

LISTAR LAS PROPIEDADES DE TODOS LOS ARCHIVOS DE UNA CARPETA Y SUBCARPETAS

Así la consulta quedaría contestada y el lector ya tiene toda la información que necesita.

Y esto es todo!

Descarga el archivo de ejemplo pulsando en: LISTAR LAS PROPIEDADES DE TODOS LOS ARCHIVOS DE UNA CARPETA Y SUBCARPETAS

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

35 pensamientos en “LISTAR LAS PROPIEDADES DE TODOS LOS ARCHIVOS DE UNA CARPETA Y SUBCARPETAS

  1. Estimado,

    Supongamos que todos los archivos excel listados en A tienen la misma estructura y deseo extraer lo que contiene la celda M3, J5 y G4 por ejemplo y pegarlos al lado de la ruta que esta en A,

    me podría ayudar con esta duda?

    de ante mano gracias

    Me gusta

    • Hola Alejandro:

      Perdona por no haber contestado antes, estaba de vacaciones.

      Para obtener lo que indicas, es necesarios que incluyas en el código las siguientes líneas de código:

      Lo nuevo a incluir es a partir del “Set milibro”, hasta el “false”:

      .Hyperlinks.Add Anchor:=Selection, Address:=file.Path, TextToDisplay:=file.Path
      Set milibro = Workbooks.Open(file.Path)
      .Cells(j, 7) = milibro.Sheets("Hoja1").Range("M3")
      .Cells(j, 8) = milibro.Sheets("Hoja1").Range("J5")
      .Cells(j, 9) = milibro.Sheets("Hoja1").Range("G4")
      milibro.Close Savechanges:=False
      j = j + 1

      Me gusta

  2. Pingback: LISTAR TODAS LAS PALABRAS CONTENIDAS EN UNO O VARIOS ARCHIVOS | EXCEL SIGNUM

  3. buen dia , hago una nueva consulta relacionada con la anterior:

    Soy administrador de un contrato de traducciones y manejo un gran volumen de archivos en su mayoria Word pero hay algunos Excel y pdf , la consulta es si hay alguna forma de poder contar las palabras de esos archivos sin abrirlos y volcar esos datos en un Excel, muchas gracias.

    Me gusta

  4. Hola Alejandro:

    Lo desconozco, en esta web todo lo que programo está relacionado con Excel y VBA. Por ejemplo el listar todas las palabras de archivos Excel (que me habías preguntado) te lo publiqué como un post. Siento no poder ayudarte con esto, pero intenta buscar en la red si existe algún tipo de programa específico que sea capaz de leer el contenido de archivos Excel y PDF y listar palabras o contarlas.

    Un saludo y de nuevo, siento no poder ayudarte.

    Me gusta

  5. Hola! Me podrías ayudar para que en el listado también se registre el tamaño (dimensiones, alto y ancho) de cada archivo de imágen…. cambio los títulos por éstas propiedades pero no me las reconoce… Muchas gracias!

    Me gusta

    • Hola Glass:

      Ninguna de las propiedades el objecto file permite extraer el ancho y algo de la imagen. Eso solo lo podremos hacer si tenemos la imagen en la hoja Excel, a la que podremos acceder a través de las propiedades del objeto shape.

      No obstante, revisaré con detalle la documentación a ver si existe alguna forma o método alternativo que no sea con file.

      Saludos.

      Le gusta a 1 persona

  6. buen dia Segu, la macro la corro en Excel 2016 el cual tiene 1 millon de celdas, pero cuando la ejecuto solo llega hasta la fila 65533 y se detiene con error en la línea .Hyperlinks.Add Anchor:=Selection, Address:=file.Path, TextToDisplay:=file.Path

    tienes la macro diseñada para Excel 2016? mil gracias.

    Me gusta

    • Hola la Esperanza la macro dsta diseñada para cualquier versión. La hoja de descarga es .xls por eso te ocurre el error. Descarga el archivo, abrelo y guardarlo como xlsm.

      Así funcionará como indicas.

      Saludos

      Me gusta

        • oK, Sí tienes razón. El error no es por la versión ni por las filas, es el límite que microsoft tiene para cuantos hipervínculos se pueden indicar en un archivo Excel. Por lo que he podido investigar es así desde 2003 en adelante (2019).

          tendría que ver si existe una solución, aunque creo que no la hay.

          tendrías que utilizar varias archivos.

          Saludos.

          Me gusta

            • Entonces solo tienes que eliminar la parte que agrega un hipervínculo y añadir el path: .Cells(j, 1) = file.Path

              Es decir en la macro, eliminas la línea del hipervínculo y añades .Cells(j, 1) = file.Path

              For Each file In nCarpeta.Files
              .Cells(j, 1).Select
              'fecha de creación
              .Cells(j, 2) = file.DateCreated
              'fecha de última modificación
              .Cells(j, 3) = file.DateLastModified
              'fecha del último acceso
              .Cells(j, 4) = file.DateLastAccessed
              'tipo de archivo
              .Cells(j, 5) = file.Type
              'tamaño
              .Cells(j, 6) = file.Size
              'añadir esto!!!!!!!!!!!!
              .Cells(j, 1) = file.Path
              j = j + 1

              ‘———
              Saludos.

              Me gusta

  7. Buenos días Segu,

    Primeramente, agradecerte el aporte. Es excelente.
    En segundo lugar, agradecería mucho que me ayudaras a crear una macro que permita seleccionar un archivo en concreto y listar todas sus propiedades (hipervínculo, fecha de creación, fecha de última modificación, etc.), agregando dicha información en la primera fila sin datos.

    Muchas gracias de antemano.
    Saludos,

    Me gusta

  8. Hola N:

    Es muy sencillo hacerlo, con esta macro lo podrás realizar.

    Solo te he indicado dos propiedades: fecha de creación y último acceso:

    Sub LISTAR_ARCHIVOS()
    'Definimos variables
    Dim i As Long, j As Long
    Dim nArchivo As String, dir_Archivo As Variant
    'Creamos ventana de diálogo para seleccionar los archivos que queremos listar
    dir_Archivo = Application.GetOpenFilename(Title:="SELECCIONA ARCHIVOS", MultiSelect:=True)
    'Si no seleccionamos archivos, salimos del proceso
    If Not IsArray(dir_Archivo) Then
    Exit Sub
    End If
    With ActiveSheet
    'Iniciamos un for con para identificar los archivos seleccionados
    Set SFSO = CreateObject("Scripting.FileSystemObject")
    If IsArray(dir_Archivo) Then
    For j = LBound(dir_Archivo) To UBound(dir_Archivo)
    i = Application.CountA(Range("A:A")) + 1
    nArchivo = dir_Archivo(j)
    'pasamos el link de cada archivo seleccionado a la hoja
    .Cells(i, 1).Select
    .Hyperlinks.Add Anchor:=Selection, Address:=nArchivo, TextToDisplay:=nArchivo
    .Cells(i, 2) = SFSO.GetFile(nArchivo).DateCreated
    .Cells(i, 3) = SFSO.GetFile(nArchivo).DateLastAccessed
    Next j
    End If
    End With
    End Sub

    Saludos!!

    Me gusta

  9. Pingback: MOSTRAR PROPIEDADES DE ARCHIVOS SELECCIONADOS | EXCEL SIGNUM

  10. Buen día Segu,

    Excelente aporte, muchas gracias.

    Disculpa hay una forma de listar solo una parte del nombre del archivo con la macro?

    Me explico mis archivos suelen ser XX-11-28-2019-D123.pdf y quisiera poder extraer solo el D123, de antemano gracias,

    Saludos

    Me gusta

    • Hola Raul:

      Hay una parte de la macro con el siguiente código:

      TextToDisplay:=file.Path
      Debes sustituirlo por esto:
      TextToDisplay:=Split(file.Path, “-“)(UBound(Split(file.Path, “-“)) – 1)

      Me gusta

  11. Hola Segu
    me gustaria saber si se puede listar las coordenadas de una carpeta que contiene archivos de fotografías que contienen metadatos con las coordenadas gps de donde se realizo las fotografías

    Muchas gracias por tu trabajo

    Me gusta

    • Hola Luis:

      Perdona por al demora en responder. Se podría listar si el dato es una propiedad del archivo. Tendría que ver un ejemplo de lo que quieres realizar o un ejemplo de uno de esos archivos y lo que esperas poder extraer.

      Saludos.

      Me gusta

      • Hola
        Muchas gracias por tu rápida respuesta
        Las coordenadas gps de los archivos jpg no están en las propiedades están dentro de los metadatos
        Lo que pretendo hacer es listas en Excel los nombres de los archivos de una carpeta y en otra columna las coordenadas GPS que están en todas las fotografías que se toman con teléfono que tenga activado el GPS
        Saludos

        Me gusta

        • Ok Luis, Sí creo que es posible hacerlo. Si tienes una foto o imagen con coordenadas que me puedas pasar, lo intento. Solo que estos días lo voy a tener complicado. Pero creo que se puede hacer.

          Saludos.

          Me gusta

  12. Hola Segu buen dia
    personalmente quisiera agradecer todos tus aportes me ha sacado de verios apuros
    quisiera hacerte una consulta espero me pudieras ayudar

    el archivo esta perfecto solo requiero unas modificaciones

    en la columna a en lugar de que pregunte la carpeta yo necesito poner las direcciones (N candidad de direcciones) y que a la derecha me ponga la nombre archivo, fecha modificacion (solo del arvhico modificado mas recientemente y el mas antiguo)

    ejemplo
    *************************************************************************************************************
    A:A / B:B / C:C / D:D / E:E /
    Direccion / Archivo 1 / Modificacion mas vieja / Archivo 2 /Modificacion mas reciente /
    agrego manual / arch.xlsx / 20.01.2019 / arch2.pdf / 04.01.2020 /
    *************************************************************************************************************

    espero me puedas ayudar con este problema que tengo ya que ahora lo hago manual solo que las direcciones son cientos obviamente es desgastante hacerlo asi

    NOTA: me debe poner dar el archivo mas reciente y mas antiguo que se encuentre en la direccion de la columna A (debe considerar todos los archivos que se encuentren dentro incluyendo subcarpetas, pero al final solo mostrar el ultimo y el primero de todos)

    espero que se entienda mi peticion

    desde ya muchas gracias

    Atte: Jerry

    Me gusta

    • Hola Jerry,

      Me alegro que te resulten de interés los post. Sobre tu consulta, indicarte que no es una simple modificación lo que indicas, sino reprogramar completamente el código.

      En estos momentos tengo varias consultas pendientes de responder, en cuanto tenga tiempo te responderé. Saludos.

      Le gusta a 1 persona

  13. Hola Segu, gran trabajo y no solo inicial, si no ademas contestando y mejorandolo con todas las preguntas.
    Yo te quisiera hacer otra: Dentro de las propiedadas de ficheros TIFF, jpg y pdf tambien tenemos las propiedades de Resolucion Horizontal y Resolucion Vertical (son propiedades como las de fecha de ultima modificacion o tamaño) ¿Como se podrian extraer?.
    Muchas gracias de antemano.

    Me gusta

  14. Pingback: LISTAR LAS PROPIEDADES DE TODOS LOS ARCHIVOS DE UNA CARPETA Y SUBCARPETAS CON EL OBJETO SHELL | EXCEL SIGNUM

Responder a alejandro Cancelar respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .