Re: Listar Archivos De Una Carpeta En Excel

2 views
Skip to first unread message
Message has been deleted

Elbio Gottlieb

unread,
Jul 16, 2024, 8:48:40 PM7/16/24
to liradenlo

En un artculo pasado creamos una macro para listar los archivos de una carpeta y colocar sus nombres en las celdas de una columna de Excel. Sin embargo es posible mejorar dicha macro para incluir todos los archivos contenidos en las subcarpetas y eso ser precisamente lo que haremos en esta ocasin.

listar archivos de una carpeta en excel


DESCARGAR https://vbooc.com/2yP4W4



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 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 informacin del sistema de archivos. Para crear este tipo de objeto en VBA utilizamos la siguiente instruccin:

Con esta instruccin habremos creado un objeto FileSystemObject el cual podremos acceder a travs de la variable fs. A lo largo del cdigo de nuestra macro utilizar algunos mtodos del objeto FileSystemObject y para cada uno dar una breve explicacin que te permita comprender su funcionamiento.

En la seccin 1 de cdigo observars la declaracin de las variables utilizadas en la macro as como la creacin del objeto FilsSystemObject y su asignacin a la variable fs. La seccin 2 analiza el parmetro ruta de la subrutina para saber si dicha cadena de texto est vaca 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 concatenacin de dicho carcter.

En la seccin 4 utilizamos la instruccin For Each para recorrer todos los archivos devueltos por el mtodo Files y que estn 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 seleccin quede lista para el siguiente archivo.

La seccin 5 obtiene las subcarpetas con el mtodo 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 seccin 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 instruccin Exit Sub para salir del procedimiento.

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 botn y se mostrar el cuadro de dilogo solicitando la ruta de la carpeta.

Si comparas el contenido de las celdas de la columna A con los archivos mostrados en la imagen al inicio de este artculo podrs comprobar que se han listado todos los archivos de la carpeta principal y de sus subcarpetas.

A continuacin dejo el vnculo de descarga que contiene el libro de trabajo con la macro recin creada. Adems encontrars la carpeta de ejemplo con los archivos y subcarpetas de manera que puedas realizar las pruebas por ti mismo.

Esta sentencia hace que se genere una lista sin atributos de los archivos existentes en la ubicacin actual y que sea la entrada de un archivo llamado lista.txt, esto es que sea escrita la lista en el archivo el cual sino existe lo va a generar.

Nota: Para seleccionar todo el contenido de una archivo lo podemos hacer de manera muy cmoda con la combinacin de teclas Ctrl + A si es ingls y Ctrl + B si est en espaol el programa con el que lo tienes abierto. O bien: Editar > Seleccin > Seleccionar todo.

Esta segunda manera es un poco ms sencilla que la anterior. He realizado un pequeo script que est escrito en un archivo que al hacer doble clic con el ratn sobre l se ejecuta y de manera automtica te crea un archivo cuyo contenido es el listado de los nombres de los archivos de la carpeta donde est este script.

Hola Moix: Puedes comprobar que archivo tendra que haber escrito despus o sea a continuacin del ltimo que te ha escrito y verificar que no tenga nada extrao (caracteres raros). Lo que est claro es que por alguna razn la ejecucin se te rompe en ese punto. Te aconsejo que pruebes.
Un saludo

Hola muchas gracias por tu dedicacin y entrega.
Una pregunta relacionada, el caso que necesito resolver es similar y se agrega la variable que dentro de una primer carpeta, est contiene 1001 carpetas dentro y en cada una de ellas entonces si hay una serie de canciones.
Espero se entienda, muchas gracias nuevamente!

Hola, se me ocurre que puedes cambiar la sentencia y desde CMD Ejecuta en el directorio raiz:
dir /s /b > lista.txt
Como ves tan solo he aadido el modificador /s a la sentencia, este modificador /s hace que se ejecute de manera recursiva, esto es, que si lo ejecutas en un directorio y este a su vez contiene otros directorios ira entrando en cado uno de ellos y te crear el listado de todo tu arbol de carpetas partiendo de la que ejecutes la sentencia.

la mejor opcion es ir a la carpeta donde estan tus archivos y copiar la ruta.
ir al comando cmd teclea CD y pegas la ruta previamente copiada.
ya estando en la carpeta deseada teclear lo siguiente:
DIR/B>LISTA.TXT y oprime la tecla enter y listo.
tendras un archivo llamado LISTA.TXT donde apareceran el nombre y extension de los archivos de esa carpeta.

quiero crear un .bat para respaldos pero el que tengo respalda toda la carpeta solo quiero los archivos con extencion .xls ya que los otros archivos que estan en la carpeta ya estan respaldados y no tienen movimientos como puedo hacer para hacer el . bat con una extencion en especifico

Hola Paco, muchas gracias por tu script, funciona fantstico. Solo veo un pequeo problema, las tildes de los archivos dan error y los sustituye por otro carcter Esto se puede solucionar en una futura versin del script?

Hola Juanjo, muy buena la pregunta! Pero te comento algo: existe una especie de norma que debemos cumplir para nombrar archivos y evitar problemas sobre todo fuera de Windows y cuando realizamos algn tipo de procesado con los nombres de los archivos como es el caso. Esta regla o ms bien esta recomendacin no escrita podra decir:
Qu debemos evitar para nombrar nuestros archivos:
1 caracteres que no se encuentren en el ingls como la etc.
2 acentos y / o caracteres extraos.
3 no usar interrogantes, comas u otros signos de puntuacin como + o como parntesis.
4 no usar espacios en blanco en cambi usar guiones medios o bajos.
Pero esta regla te puede ser til a partir de ahora, pero si quieres solucionar tu problema del listado de archivos, siempre puedes reemplazar con algn editor de textos de una manera automtica los caracteres que se repitan por la letra con tilde que veas que puede ser y cambiar los textos.
Espero que te haya servido, un saludo Juanjo.

Hola Paco, muchas gracias. Comprendo la regla, como diseador web la empleo para evitar desastres. Pero como usuario de Windows hay que ser muy metdico para tenerla en mente y cumplirla. El problema sern los archivos de terceros, nunca la van a cumplir.
Gracias por el consejo de sustituir caracteres usar Notepad++.

Gracias Jos:
Esta pregunta la contest antes, pero te copio la respuesta ?
Hola, se me ocurre que puedes cambiar la sentencia y desde CMD Ejecuta en el directorio raiz:
dir /s /b > lista.txt
Como ves tan solo he aadido el modificador /s a la sentencia, este modificador /s hace que se ejecute de manera recursiva, esto es, que si lo ejecutas en un directorio y este a su vez contiene otros directorios ira entrando en cado uno de ellos y te crear el listado de todo tu arbol de carpetas partiendo de la que ejecutes la sentencia.

Muchas gracias por su aporte hermano me ha sido de mucha utilidad aunque le agradecera de corazn que realizara un script para automatizar esta va que incluya todos los subdirectorios que es la que ms uso. Muchas gracias

Es muy probable que alguna vez hayas necesitado imprimir un listado de los archivos de una carpeta en Mac. Por ejemplo, una carpeta donde tienes 40 pelculas, una carpeta donde tienes 300 libros o una carpeta donde tienes 700 canciones y te gustara imprimir un listado de sus ttulos o, simplemente, guardarte un PDF con el contenido en forma de lista de ttulos.

Si eres usuario de Mac desde hace bastantes aos recordars aquella funcin que vino por defecto hasta Mac OS, llamada "Imprimir ventana", opcin que desapareci con la llegada de OS X y que nos permita conseguir imprimir un listado del contenido de una carpeta con apenas 2 clics de ratn.

Una vez desaparecida esta opcin la cosa se complic un poco, aunque no demasiado. Hoy os vamos a explicar 3 formas fciles para conseguir listar el contenido de una carpeta en Mac sin necesidad de tener que recurrir a aplicaciones de terceros, que las tambin las hay.

Si abres una carpeta de tu Mac que contenga los archivos que quieres listar puedes seleccionarlos todos (cmd + A) y pulsar el botn derecho + copiar (o cmd + C)
Una vez los hayas copiado podrs abrir un nuevo documento de Text Edit y pegar el contenido del portapapeles en l. Pero cuidado, previamente debers marcar la opcin de Text Edit llamada "Convertir a texto sin formato" yendo a Formato / Convertir a texto sin formato o con la combinacin de teclas maysculas + cmd + T. De no hacerlo, en lugar de pegar el contenido en forma de listado lo hars con formato. Si, por ejemplo, se trata de un listado de imgenes se copiarn las imgenes y no su nombre.

Si prefieres imprimir un listado a travs de tu impresora existe la posibilidad de usar lo que se conoce como "impresora de escritorio", que no es otra cosa que un acceso directo a tu impresora ubicado en tu escritorio o dock.

Para ello debers arrastrar la carpeta que deseas imprimir al acceso directo de tu impresora . Una vez lo hayas hecho te aparecer la ventana de impresin, donde podrs escoger entre "imprimir" o "guardar como PDF"

d3342ee215
Reply all
Reply to author
Forward
0 new messages