A continuación vamos a ver un programa en Excel VBA que importa hojas de otros archivos de Excel en un archivo de Excel.

Descargar Book4.xlsx, Book5.xlsx y añadirlos a «C: \ test \»

Situación:

Import Sheets using Excel VBA

Añadir las siguientes líneas de código en el botón de comando:

  1. En primer lugar, declaramos dos variables de tipo String, un objeto de hoja y una variable de tipo entero.

Dim directory As String, fileName As String, sheet As Worksheet, total As Integer
  1. Activar la actualización de pantalla y alertas que muestran.

Application.ScreenUpdating = False

Application.DisplayAlerts = False
  1. Inicializar el directorio variable. Utilizamos la función Dir para encontrar la primera .xl ?? archivo almacenado en este directorio.

directory = "c:\test\"

fileName = Dir(directory & ".xl??")

Nota: (?) La función Dir apoya el uso de múltiples caracteres (*) y el carácter único comodines para buscar todos los diferentes tipos de archivos de Excel.

  1. La variable nomArchivo ahora tiene el nombre del primer archivo de Excel que se encuentra en el directorio. Añadir un bucle Do While.

Do While fileName <> ""

Loop

Añadir las siguientes líneas de código (a los 5, 6, 7 y 8) para el bucle.

  1. No existe una forma sencilla de copiar hojas de cálculo de Excel cerradas.

Por lo tanto, abrimos el archivo de Excel.

Workbooks.Open (directory & fileName)
  1. Importe las hojas del archivo de Excel en la importación-sheet.xlsm.

For Each sheet In Workbooks(fileName).Worksheets

total = Workbooks("import-sheets.xlsm").Worksheets.count

Workbooks(fileName).Worksheets(sheet.Name).Copy _

after:=Workbooks("import-sheets.xlsm").Worksheets(total)

Next sheet

Explicación: del total variable guarda un registro del número total de hojas de trabajo de importación-sheet.xlsm. Utilizamos el método de copia del objeto de hoja para copiar cada hoja de trabajo y pegarlo después de la última hoja de la importación-sheets.xlsm.

  1. Cierre el archivo de Excel.

Workbooks(fileName).Close
  1. La función Dir es una función especial. Para obtener los otros archivos de Excel, puede utilizar la función Dir de nuevo sin argumentos.

fileName = Dir()

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

  1. Encienda la actualización de pantalla y la visualización de alertas de nuevo (fuera del bucle).

Application.ScreenUpdating = True

Application.DisplayAlerts = True

Prueba 10. el programa.

Resultado:

Import Sheets Result