LISTAR ARCHIVOS DE CARPETAS Y SUBCARPETAS CON MACRO VBA

0
302
Slider

Es bastante frecuenta tener que listar los archivos y subcarptetas de un directorio, también es común listar archivos en un combobox; con el objeto de ser usado en una macro, este ejemplo precisamente hace eso Lista los archivos y subcarpetas de Windows, presionando el botón que se encuentra en el ejemplo, que se puede descargar desde el link del final, se corre una macro que lo que hace es listar todas las carpetas y subcarpetas que se encuentran en el directorio seleccionado, en este caso el listado se copia en una hoja de Excel, no obstante también se podría agregar la lista de archivos y subcarptetas a un combobox.

ARCHIVOS DE CARPETA Y SUBCARPETAS

Como ejemplo utilizaremos una estructura de archivos como la siguiente:

Se ha colocado la carpeta principal directamente en la unidad C: de mi equipo de manera que la ruta para dicha carpeta será C:\Carpeta.

La carpeta principal contiene 5 archivos y 2 subcarpetas. Cada una de las subcarpetas contiene 5 archivos a la vez por lo que en total tenemos 15 archivos entre la carpeta principal y las  subcarpetas. Nuestro objetivo será crear una macro para listar todos los archivos tanto de la carpeta principal como de sus subcarpetas.

EL OBJETO FILESYSTEMOBJECT

El objeto FilsSystemObject es de gran utilidad para tener acceso al sistema de archivos de cualquier equipo. Este objeto nos permite manipular archivos, carpetas, sus rutas de acceso e inclusive podemos obtener información del sistema de archivos. Para crear este tipo de objeto en VBA utilizamos la siguiente instrucción:

Set fs = CreateObject("Scripting.FileSystemObject")

Con esta instrucción habremos creado un objeto FileSystemObject el cual podremos acceder a  través de la variable fs. A lo largo del código de nuestra macro utilizaré algunos métodos del objeto FileSystemObject y para cada uno daré una breve explicación que te permita comprender su funcionamiento.

MACRO PARA LISTAR ARCHIVOS DE CARPETAS Y SUBCARPETAS

A continuación se encuentra el código de la macro que crea un listado de los archivos contenidos en la carpeta y subcarpetas.

En la sección 1 de código observarás la declaración de las variables utilizadas en la macro así como la creación del objeto FilsSystemObject y su asignación a la variable fs. La sección 2 analiza el parámetro ruta de la subrutina para saber si dicha cadena de texto está vacía y en tal caso salir del procedimiento. De lo contrario se revisa que dicha ruta termine con una diagonal invertida y de no ser así se hace una concatenación de dicho carácter.

previous arrow
next arrow
Slider

El objetivo del código de la sección 3 es el de crear un objeto de tipo Folder que nos permita analizar el contenido de la carpeta. Esto se logra utilizando el método GetFolder del objeto FileSystemObject y el resultado es guardado en la variable carpeta. Es con el uso del método GetFolder que podemos obtener un error en VBA en caso de que la ruta indicada sea inválida por lo que he agregado la instrucción On Error GoTo para que en caso de obtener un error, la macro ejecute el código de la etiqueta ErrHandler que se encuentra al final del código y que imprimirá el mensaje “Ruta inexistente”.

En la sección 4 utilizamos la instrucción For Each para recorrer todos los archivos devueltos por el método Files y que están contenidos en la carpeta principal. Para cada archivo encontrado se concatena su ruta y su nombre y se asigna al valor de la celda activa. Posteriormente activamos la celda inferior a la celda activa de manera que la selección quede lista para el siguiente archivo.

La sección 5 obtiene las subcarpetas con el método SubFolders y para cada una de ellas se vuelve a ejecutar la macro Mostrar_Archivos lo cual ocasionará que se repita todo el proceso hasta imprimir todos los archivos contenidos en cada una de ellas.

Finalmente la sección 6 se encarga de auto ajustar el ancho de la columna de la celda activa de manera que se puedan visualizar correctamente todos los nombres de archivos. Finalmente se ejecuta la instrucción Exit Sub para salir del procedimiento.

EJECUTANDO LA MACRO

Para probar esta macro se agrego un botón ActiveX a la hoja y colocaré el siguiente código en su evento Click:

Listar archivos en Excel de carpetas y subcarpetas

Utilizamos la función InputBox para permitir al usuario que ingrese la ruta de la carpeta de la cual se desean mostrar los archivos.

Para iniciar la prueba debo seleccionar la celda donde deseo que se listen los archivos ya que la macro comenzará a insertar los nombres a partir de la celda activa. Posteriormente hago clic en el botón y se mostrará el cuadro de diálogo solicitando la ruta de la carpeta.

Ingreso la ruta de la carpeta que contiene los archivos y al hacer clic en el botón Aceptar se ejecutará la macro y obtendremos el siguiente resultado.

Listar archivos en Excel de carpetas y subcarpetas

Si se compara el contenido de las celdas de la columna A con los archivos mostrados en la imagen al inicio de este blog podrás comprobar que se han listado todos los archivos de la carpeta principal y de sus subcarpetas.

Artículo que te recomendamos leer:
IMPRIMIR PÁGINAS PARES O IMPARES EN EXCEL

¿Qué te pareció nuestra blog? Coméntanos.



CURSO DE ESPECIALIZACIÓN: EXCEL EMPRESARIAL INTERMEDIO

📆 Fechas: Martes y jueves: 21/09, 23/09, 28/09, 30/09 de setiembre, 05/10, 07/10, 12/10 y 14/10 de octubre.
⏰ Horario: 7:00 pm – 10:00 pm
Duración: 8 sesiones,1 mes.

Mayor información: https://wa.link/wnukin

Comentarios
Slider