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

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

Situación:

Ejemplo de archivos en un directorio

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

1. Primero, declaramos dos variables de tipo String, un objeto Worksheet y dos variables de tipo Integer.

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 admite el uso de comodines de varios caracteres (*) y de un solo carácter (?) Para buscar todos los tipos diferentes de archivos de Excel.

4. La variable fileName ahora contiene el nombre del primer archivo de Excel que se encuentra en el directorio. Agregue un bucle Do While .

Do While fileName <> ""

Loop

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

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

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

6. No existe 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 las hojas del archivo de Excel a las otras columnas de la fila i.

For Each sheet In Workbooks(fileName).Worksheets
    Workbooks("files-in-a-directory.xlsm").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 Dir nuevamente sin argumentos.

fileName = Dir()

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

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

Application.ScreenUpdating = True

11. Pruebe el programa.

Resultado:

Archivos en un directorio en Excel VBA

6/8 Completado! Más información sobre libros y hojas>
Capítulo siguiente: Objeto de rango