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