Listar archivos y subcarpetas con macro VBA



En este post te voy a mostrar una macro para listar los archivos o ficheros y subcarpetas de una carpeta determinada de Windows, estando vinculado con el presentado anteriormente Macro que abre explorador de archivo de Windows e inserta foto, con la variante que se abre el explorador para seleccionar el archivo; también se muestra en abre explorador de archivo o ficheros de windows como se puede usar el explorador de archivos de Windows para seleccionar un archivo y usarlo en una macro.

Si quieres profundizar tu manejo de Excel o en el caso que no tengas conocimiento suficiente sobre el manejo de hojas de Excel, te recomiendo antes de introducirte en el mundo de las macros, que leas un excelente libro sobre Excel el que te ayudará manejar las planillas de cálculo, debes hacer click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá.
MASTERCARD PAYONEER


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 se puede agregar la lista de archivos y subcarptetas a un combobox, tema que será explicado más adelante.

Desde el link del final se puede descargar el archivo de ejemplo de esta manera podrás ver su funcionamiento en forma más detallada. El código de VBA o Macro de Excel no tiene ningún tipo de restricciones por lo que puedes bajar el archivo y adaptarlo y manipular el código como desees.


Código que se debe insertar en Worksheet de la hoja donde haremos correr la macro



Sub ListaArchivos()
On Error Resume Next
DisplayAlerts = True
Application.ScreenUpdating = True
Dim Path As String
Dim fila As Integer
fila = 2
'Se crea FileSystemObject que da acceso al sistema de archivos del sistema
Set fso = CreateObject("Scripting.FileSystemObject")
'Indicamos la ruta de donde vamos a obtener
Path = CreateObject("shell.application").browseforfolder(0, "Seleccione Carpeta", 0).Items.Item.Path
 If Path = "" Then
 MsgBox "No has seleccionado ningún directorio, selecciona un directorio .", , "AVISO"
 Exit Sub
 End If
'También podemos indicarla en forma fija si siempre es la misma
'Path = "C:\Users\MyNotebook\Documents\Fotos Productos"

'Definimos variables para determinar nombre de archivos y subcarpetas
Set carpeta = fso.getfolder(Path)
Set SubCarp = carpeta.subfolders
Set ficheros = carpeta.Files

Sheets("hoja1").Range("A2:d1000").ClearContents





     

'Subcarpetas
For Each SubCarp In SubCarp
a = SubCarp.Name
Sheets("Hoja1").Cells(fila, 1) = Path
Sheets("Hoja1").Cells(fila, 2) = a
fila = fila + 1
Next SubCarp

'Archivos
For Each ficheros In ficheros
 
    b = ficheros.Name
    Sheets("Hoja1").Cells(fila, 1) = Path
    Sheets("Hoja1").Cells(fila, 3) = b
    fila = fila + 1
Next ficheros

'Cells("A:Z").EntireColumn.AutoFit
DisplayAlerts = True
Application.ScreenUpdating = True
End Sub






Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.



If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends