Listar archivos en una carpeta usando VBA en Microsoft Excel

Anonim

En este artículo, crearemos una macro para enumerar todos los archivos dentro de la carpeta.

Al ejecutar la macro, el nombre del archivo junto con la ruta del archivo se mostrarán a partir de la celda A17.

Explicación lógica

En este artículo hemos creado dos macros, "subfolder_files" y "Getting_filelist_in_folder".
La macro "subfolder_files" toma la ruta de la carpeta y el valor booleano como entradas y devuelve el nombre del archivo dentro de la carpeta.

"Getting_filelist_in_folder" se utiliza para llamar a la macro "subfolder_files". Proporciona el valor de la ruta de la carpeta a la macro, con el valor booleano establecido en 'verdadero'. Además, cuando se requieren nombres de archivo dentro de las subcarpetas, asignamos el valor booleano 'verdadero'.

Explicación del código

folder_path = Sheet1.TextBox1.Value
El código anterior se utiliza para extraer el valor de la cadena del cuadro de texto.

Llamar a subfolder_files (folder_path, True)
El código anterior se utiliza para llamar a la macro "subfolder_files". Asigna la ruta de la carpeta y establece la propiedad "include_subfolder" como verdadera.

Establecer fso = CreateObject ("scripting.filesystemobject")
El código anterior se utiliza para crear un objeto del sistema de archivos.

Establecer subcarpeta1 = fso.getfolder (ruta_carpeta)
El código anterior se utiliza para crear el objeto de la carpeta definida.

Para cada carpeta1 en subcarpeta1.subcarpetas
Llamar subfolder_files (folder1, True)
próximo
El código anterior se usa para buscar en todas las subcarpetas, dentro de la carpeta principal.

Dir (ruta de carpeta1 y "* .xlsx")
El código anterior se usa para obtener el nombre del archivo de Excel.

Mientras que el nombre de archivo ""
count1 = count1 + 1
ReDim Preserve filearray (1 para contar1)
filearray (count1) = nombre de archivo
nombre de archivo = Dir ()
Encaminarse a

El código anterior se utiliza para crear una matriz, que consta de todos los nombres de archivo presentes dentro de la carpeta.

Para i = 1 a UBound (matriz de archivos)
Celdas (lastrow, 1) .Value = folderpath1 & filearray (i)
lastrow = lastrow + 1
próximo

El código anterior se usa para asignar un nombre de archivo dentro de la matriz al libro de trabajo.

Siga a continuación para obtener el código

 Option Subfolder_files explícitos (folderpath1 como variante, opcional include_subfolder como booleano) 'Verificando si incluir subcarpeta o no If include_subfolder Then' Declarando variables Dim filename, filearray () As String Dim lastrow, count1, i As Integer 'Verificando si la ruta de la carpeta contiene barra invertida como último carácter Si es Derecha (ruta de carpeta1, 1) "\" Entonces ruta de carpeta1 = ruta de carpeta1 & "\" End If 'Obteniendo el nombre de archivo del primer archivo en la ruta de carpeta definida nombre de archivo = Dir (ruta de carpeta1 & "* .xlsx")' Obteniendo el número de fila de la última celda lastrow = ActiveCell.SpecialCells (xlCellTypeLastCell) .Row + 1 count1 = 0 'Recorriendo todos los archivos en la carpeta While filename "" count1 = count1 + 1 ReDim Preserve filearray (1 To count1) filearray ( count1) = filename filename = Dir () Wend On Error GoTo last 'Agregar nombre de archivo al libro de trabajo Para i = 1 To UBound (filearray) Cells (lastrow, 1) .Value = folderpath1 & filearray (i) lastrow = lastrow + 1 Siguiente End If last: End Sub Sub Getting_filelist_in_folder () 'Declarando variables Dim folder_path As String Dim fso As Object, folder1, subfolder1 As Object' Obteniendo la ruta de la carpeta folder_path = Sheet1.TextBox1.Value 'Verificando si la ruta de la carpeta contiene una barra invertida como último carácter If Right (folder_path, 1) " \ "Then folder_path = folder_path &" \ "End If 'Llamando subfolder_files macro Call subfolder_files (folder_path, True)' Creando objeto del objeto del sistema de archivos Establecer fso = CreateObject (" scripting.filesystemobject ") Establecer subcarpeta1 = fso.getfolder (folder_path) 'Recorriendo cada subcarpeta Para cada carpeta1 En subcarpeta1.subcarpetas Llamar subcarpeta_archivos (carpeta1, Verdadero) Siguiente Fin Sub 

Si te gustó este blog, compártelo con tus amigos en Facebook. Además, puede seguirnos en Twitter y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos al sitio de correo electrónico