/ / Archivos en un directorio en Excel VBA

Archivos en un directorio en Excel VBA

A continuación veremos un programa en Excel VBA ese recorre todos los libros cerrados y hojas de trabajo en un directorio, y muestra todos los nombres.

Descargue Book1.xls, Book2.xls, Book3.xls, Book4.xls y Book5.xls y agréguelos a "C: test"

Situación:

Archivos en un ejemplo de directorio

Agregue las siguientes líneas de código al botón de comando:

1. Primero, declaramos dos variables de tipo Cadena, un objeto de hoja de trabajo y dos variables de tipo Entero.

Dim directory As String, fileName As String, sheet As Worksheet, i As Integer, j As Integer

2. Para evitar el parpadeo de la pantalla, desactive la actualización de la pantalla.

Application.ScreenUpdating = False

3. Inicialice el directorio de variables. Usamos la función Dir para encontrar el primer * .xl ?? Archivo almacenado en este directorio.

directory = "c:test"
fileName = Dir(directory & "*.xl??")

Nota: la función Dir es compatible con el uso de comodines de varios caracteres (*) y de un solo carácter (?) Para buscar todos los diferentes tipos de archivos de Excel.

4. La variable fileName ahora contiene el nombre del primer archivo de Excel encontrado en el directorio. Añadir un Do While Loop.

Do While fileName <> ""

Loop

Agregue las siguientes líneas de código (en 5, 6, 7, 8 y 9) al bucle.

5. Inicialice las variables de tipo Integer y agregue el nombre del archivo Excel a la primera columna de la fila i.

i = i + 1
j = 2
Cells(i, 1) = fileName

6. No hay una forma sencilla de extraer datos (o nombres de hojas) de archivos de Excel cerrados. Por lo tanto, abrimos el archivo de Excel.

Workbooks.Open (directory & fileName)

7. Agregue todos los nombres de hoja del archivo Excel a las otras columnas de la fila i.

For Each sheet In Workbooks(fileName).Worksheets
    Workbooks("files-in-a-directory.xls").Worksheets(1).Cells(i, j).Value = sheet.Name
    j = j + 1
Next sheet

8. Cierre el archivo de Excel.

Workbooks(fileName).Close

9. La función Dir es una función especial. Para obtener los otros archivos de Excel, puede usar la función Dirigir nuevamente sin argumentos.

fileName = Dir()

Nota: cuando no hay más nombres de archivos que coincidan, la función Dir devuelve una cadena de longitud cero (""). Como resultado, Excel VBA dejará el bucle Do While.

10. Vuelva a activar la actualización de la pantalla (fuera del bucle).

Application.ScreenUpdating = True

11. Probar el programa.

Resultado:

Archivos en un directorio en Excel VBA

Lea también: