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

Anuncios

21 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.

      Me gusta

  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

Responder a Segu 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

This site uses Akismet to reduce spam. Learn how your comment data is processed.