Macro para importar nombres de archivos a Excel

¿Alguna vez has tenido la necesidad de importar los nombres de archivos de una carpeta a Excel? No me refiero al contenido de los archivos, sino a una lista con los nombres de los archivos que están ubicados en alguna carpeta del equipo.

Aunque existen varios métodos para lograr este objetivo, en esta ocasión te mostraré como hacer una macro para realizar esta tarea en Excel.

Macro para importar nombres de archivo a Excel

A continuación puedes ver el código de la macro que explicaré a detalle a lo largo de este artículo.

Macro para importar nombres de archivos a Excel

El código de la macro lo he colocado dentro de un módulo y he llamado a la subrutina Contenido_Carpeta.

Definición de variables en macro

En la sección 1 del código tenemos dos líneas donde definimos las variables que utilizaremos en la macro.

  • carpeta: almacena la ruta de la carpeta que deseamos consultar para obtener los nombres de archivos.
  • archivos: contendrá el nombre archivo.
  • contador: nos ayudará a avanzar la fila de la celda  activa donde colocaremos el nombre del archivo.

Solicitar la ruta de la carpeta

La sección 2 del código hace uso de la función InputBox que nos ayuda a mostrar un cuadro de diálogo al usuario de manera que pueda proporcionar la ruta de la carpeta de la cual importaremos los nombres de los archivos contenidos.

Después de pedir la ruta de la carpeta hacemos una validación del contenido de la variable carpeta. Si no se ha proporcionado la ruta, es decir si la variable carpeta está vacía, saldremos por completo de la subrutina con la instrucción Exit Sub.

Por el contrario, si se ha proporcionado la ruta solamente debemos validar que la cadena de texto termine con una diagonal inversa y para ello utilizamos la función Right que obtiene el último carácter de la cadena. En caso de que la variable carpeta no termine con una diagonal invertida simplemente la concatenaremos.

Preparación de las variables

En la sección 3 inicializamos la variable contador que nos ayudará a avanzar a la siguiente fila de nuestra hoja conforme vayamos encontrando nuevos nombres de archivo. Le damos el valor inicial 1 para indicar que iniciaremos en la primera fila.

Finalmente hacemos una primera lectura de la carpeta definida por el usuario utilizando la función Dir la cual nos devuelve el nombre del primero de los archivos contenidos en la carpeta.

Recorrido por la carpeta

Ya con el primer nombre de archivo en la variable archivos haremos un recorrido por la carpeta pata obtener todos los demás nombres y nos detendremos cuando la variables archivos esté vacía lo cual indicará que ya no hay más archivos. Es por esta razón que el bucle Do While tiene la condición Len(archivos) > 0 porque estamos validando que la longitud de la variable archivos sea mayor a cero.

Una vez dentro del bucle hacemos que el valor de la celda seleccionada sea igual al nombre del archivo contenido en la variable archivos. Después volvemos a llamar a la función Dir para leer el siguiente nombre de archivo. En esta ocasión ya no proporcionamos la ruta como argumento porque la función Dir toma de manera predeterminada la ruta definida previamente.

Por último aumentamos el valor del contador para poder avanzar de fila en caso de encontrar otro nombre de archivo.

Demostración de la macro

Finalmente mostraré cómo funciona esta macro. En la parte superior puedes observar el contenido de la carpeta C:Temp la cual leeré con la macro recién creada para enlistar sus archivos en la hoja de Excel.

Importar una lista de archivos de una carpeta a Excel

Puedes descargar el libro de trabajo de Excel que contiene la macro para poder realizar pruebas. Recuerda utilizar esta macro para importar nombres de archivos a Excel ubicados en alguna carpeta de tu equipo.

Artículos relacionados
Introducción a las macros en Excel

17 pensamientos en “Macro para importar nombres de archivos a Excel

  1. Ignacio

    Francamente útil, lo llevaba buscando hace mucho tiempo.

    ¿Existe la posibilidad de hacer exactamente lo mismo pero incluyendo subdirectorios que pudiera haber en la carpeta?

    Responder
    1. Moisés Ortíz Autor

      Hola Ignacio, es totalmente posible leer los subdirectorios y sus contenidos. Pero eso será otro artículo que estoy planeando escribir.
      Mantente en contacto. Saludos.

      Responder
      1. Ignacio

        Estaré a la espera, ojalá sea pronto¡¡¡

        Muchas gracias por todo.

        Responder
  2. Elias Lujano

    Excelente información..Gracias

    Responder
  3. Hery Marcelo

    Muchas Gracias esta Información es muy útil, también esperare el próximo articulo.

    Responder
  4. Luis Valderrama

    Francamente útil, lo llevaba buscando hace mucho tiempo.

    ¿Existe la posibilidad de hacer exactamente lo mismo pero incluyendo subdirectorios que pudiera haber en la carpeta?

    Comento lo mismo, si existiera alguna macro para subcarpetas , seria sumamente estupendo.
    Gracias

    Responder
    1. Moisés Ortíz Autor

      Hola Luis, claro que es posible incluir subdirectorios. Prometo publicar pronto un artículo con la solución. Mantente en contacto.

      Responder
  5. Guilllermo Rodriguez

    Muchas gracias por compartir tales conocimientos.

    Responder
  6. Jorge Aguero Picon

    Hola,
    Se puede hacer ese mismo proceso pero para obtener el nombre de las carpetas que esten dentro de otra.
    Por ejemplo que en la carpeta Temp, en lugar de archivos, hubiesen carpetas vacias y obtener el nombre de dichas carpetas.
    Gracias.

    Responder
    1. Moisés Ortíz Autor

      Hola Jorge, eso se puede hacer utilizando el objeto FileSystemObject y su propiedad Subfolders.
      Espero escribir un ejemplo de esto en el futuro cercano.

      Responder
  7. Jordi Cadena

    Gran aportación, felicidades!

    Responder
  8. DAVID

    Muchas, muchas gracias por la aportación! Realmente me fue útil y me salvó de mucha tarea…

    Responder
  9. oscar

    Te lo agradezco me fue de mucha utilidad. gracias, gracias.

    Responder
  10. Salvador

    Muy agradecido. Buscando en google precisamente esto y lo encontré. Lo que estaría increíble es que pudiera listar tambien los archivos de subcarpetas, como han indicado mas arriba.
    Salu2.

    Responder
  11. Franklyn Garcia

    Excelente macro. Gracias

    Responder
  12. ElioSanchezG

    He tenido poco tiempo viendo estas notas de Excel, todas han sido bien buenas, pero esta es mi favorita y me parece increíble. Muchísimas gracias.

    Responder
  13. FABIAN GONZALEZ

    Excelente!! Muchas gracias, este macro me ha ahorrado mucho tiempo. Saludos!!

    Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>