Trucos Excel. Archivos de un directorio con una macro

Noviembre 2nd, 2010 | por rvaquerizo |

Puede resultarnos útil tener todos los archivos de un directorio en una tabla de excel. Si estamos documentando un proceso, si nos dan un gran número de ficheros y tenemos que realizar procesos repetitivos sobre ellos, si queremos tener inventariados nuestros programas,... Para esto os planteo una macro bien sencilla que recorre un directorio y nos escribe los elementos que encuentra en él. El código visual basic para la macro en Excel no puede ser más sencillo:


Sub explora()
'Macro para poner los archivos de un directorio en una hoja Excel
Dim directorio, nombre_completo, tipo_fichero As String
Dim tam As Long
directorio = "C:\temp"
'Si deseamos especificar el tipo de fichero
tipo_fichero = "*"
'ChDir directorio
directorio = directorio & "\*." & tipo_fichero
'Recorre el directorio hasta que no hay elementos
fichero = Dir(directorio, vb)
i = 1
Do While fichero <> ""
'Pone en un excel vacío los elementos que encuentra
Cells(i, 1) = fichero
i = i + 1
fichero = Dir
Loop
'
End Sub

El "talento" está en el uso de Dir y en la realización del bucle. Como añadido tenemos una variable tipo_fichero que nos permite acotar la extensión de los ficheros a listar. Un truco sencillo y que puede ayudarnos a automatizar mucho código. Yo la cree porque un proceso de SQL SERVER me devolvía un gran número de ficheros de texto distintos cada vez y necesitaba automatizar su lectura. Espero que os sea de utilidad. Saludos.

  1. 9 Respuestas en “Trucos Excel. Archivos de un directorio con una macro”

  2. Por Jorge, May 6, 2011 | Responder

    Chingón ;). Muy sencillo y muy práctico.

  3. Por Chemocoso, Ene 9, 2013 | Responder

    A webo, sín rodeos.

  4. Por andres beretta, Feb 20, 2013 | Responder

    Hola, no tengo conocimiento ni formacion en programacion, por lo que no entiedo como utilizar el VB. Probe la macro que usted publica aqui y se detiene el proceso. Yo quiero enlistar, para luego unir, archivos de un directorio. Podría usted explicarme como debo hacerlo?… en la misma forma que pone la macro aqui, le egradecería si me indica donde debo escribir el directorio donde buscar los archivos a unir y la extension de los archivos a buscar. O sea, le pido que me explique paso a paso porque esto esta fuera de mis capacidades.
    Gracias pos su tiempo, pueda o no pueda dedicarse a contestarme

  5. Por andres beretta, Feb 20, 2013 | Responder

    Lo que yo pongo en la macro que usted expone es:
    Sub explora()
    ‘Macro para poner los archivos de un directorio en una hoja Excel
    Dim directorio, nombre_completo, tipo_fichero As String
    Dim tam As Long
    directorio = “C:\Users\inia\Documents\INIA\Antecedentes Laboratorio\Análisis en Proceso CON Enviados al 19-12-12\Análisis en proceso\ENVIADOS\ENVIADOS 2001″
    ‘Si deseamos especificar el tipo de fichero
    tipo_fichero = “.xls”
    ‘ChDir directorio
    directorio = directorio & “C:\Users\inia\Documents\INIA\Antecedentes Laboratorio\Análisis en Proceso CON Enviados al 19-12-12\Análisis en proceso\ENVIADOS\ENVIADOS 2001.xls” & tipo_fichero
    ‘Recorre el directorio hasta que no hay elementos
    fichero = Dir(directorio, vb)
    i = 1
    Do While fichero “”
    ‘Pone en un excel vacío los elementos que encuentra
    Cells(i, 1) = fichero
    i = i + 1
    fichero = Dir
    Loop

    End Sub

    y el proceso se detiene en “fichero = Dir(directorio, vb)”… como debo modificar esto y continuar?

  6. Por rvaquerizo, Feb 20, 2013 | Responder

    Hola,

    Te has cargado una parte:

    directorio = directorio &

    directorio = directorio & “\*.” &

    Prueba a reemplazar

  7. Por joxean, Abr 28, 2013 | Responder

    Hola, yo utilizo la orden dir *.slddrw, para listar los archivos de dibujos de solidworks de una carpeta.
    Hay alguna forma de extraer tambien la caracteristica “descripción” de la pestaña de propiedades de esos archivos?

  8. Por Hugo Serrano, Jun 12, 2013 | Responder

    Saludos.

    Muchas gracias por la macro.

    Funcionó a las mil maravillas, solo cambié el directorio que necesitaba yo escanear y sin problemas me listó 940 archivos que estaban ahí almacenados.

    De nuevo muchas gracias.

  9. Por Patricio, Ago 29, 2013 | Responder

    Mi Amigo,

    Es lo que andaba buscando hace tiempo… esta rutina la estaba haciendo con otra instrucción pero leía muy lento los archivos… ahora anda rapidísimo… Gracias por publicar…
    Saludos de Chile…

  10. Por Alfredo, Oct 16, 2013 | Responder

    Hola,
    No entiendo mucho como generar la macro para unir varios archivos en uno solo.
    Mis archivos originales están en:

    C: ARCHIVOS ATLANTIS

    y se llaman Directorio1, Directorio2

    los quiero resguardar en:

    C: ARCHIVOS UNIDOS DE ATLANTIS

    Gracias por ayudarme,

Publica un Comentario