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.

9 respuestas a “Trucos Excel. Archivos de un directorio con una macro”

  1. Jorge dice:

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

  2. Chemocoso dice:

    A webo, sín rodeos.

  3. andres beretta dice:

    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

  4. andres beretta dice:

    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?

  5. rvaquerizo dice:

    Hola,

    Te has cargado una parte:

    directorio = directorio &

    directorio = directorio & “\*.” &

    Prueba a reemplazar

  6. joxean dice:

    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?

  7. Hugo Serrano dice:

    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.

  8. Patricio dice:

    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…

  9. Alfredo dice:

    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,

Deja un comentario