Consejo: Otros idiomas son traducidos por Google. Puedes visitar el English versión de este enlace.
Iniciar sesión
x
or
x
x
Suscríbete
x

or

¿Cómo recorrer los archivos en un directorio y copiar datos en una hoja maestra en Excel?

Supongamos que hay varios libros de Excel en una carpeta y desea recorrer todos estos archivos de Excel y copiar los datos del rango especificado de hojas de trabajo del mismo nombre en una hoja de trabajo maestra en Excel, ¿qué puede hacer? Este artículo presenta un método para lograrlo en detalle.

Pasa el cursor por los archivos en un directorio y copia los datos en una hoja maestra con código VBA


Copie / importe fácilmente datos de un libro cerrado en una hoja de trabajo maestra:

Con la Insertar archivo en el cursor utilidad de Kutools for Excel, puede copiar fácilmente datos de una hoja de trabajo especificada de un libro cerrado en un libro abierto. Ver captura de pantalla:

Kutools for Excel: con más de 200 útiles complementos de Excel, de prueba sin límite en días 60. Descargar y prueba gratis ahora!

Ficha Office Habilite la edición y navegación con pestañas en Office y haga su trabajo mucho más fácil ...
Kutools for Excel trae las características avanzadas de 300 a Excel y aumenta su productividad en 80%
  • Super Formula Bar (edite fácilmente múltiples líneas de texto y fórmulas); Diseño de lectura (lea y edite fácilmente un gran número de celdas); Pegar en rango filtrado ...
  • Combinar celdas / filas / columnas y mantener datos; Contenido de celdas divididas; Combine filas duplicadas y suma / promedio ... Prevenga celdas duplicadas; Comparar rangos ...
  • Seleccione Filas duplicadas o únicas; Seleccione Filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta de varias celdas sin cambiar la referencia de fórmula; Crear referencias automáticamente a varias hojas; Insertar viñetas, casillas de verificación y más ...
  • Favorito e inserte rápidamente fórmulas, rangos, gráficos e imágenes; Cifrar celdas con contraseña; Crear lista de correo y enviar correos electrónicos ...
  • Extraer texto, Agregar texto, Eliminar por posición, Eliminar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios ...
  • Super filtro (guardar y aplicar esquemas de filtro a otras hojas); Avanzado Ordenar por mes / semana / día, frecuencia y más; Filtro especial por negrita, cursiva ...
  • Combinar libros de trabajo y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes xls, xlsx y PDF ...
  • Funciona con Office 2007-2019 y 365, y es compatible con todos los idiomas. Es fácil de implementar en su empresa. Funciones completas de prueba gratuita de 60-day.

Pasa el cursor por los archivos en un directorio y copia los datos en una hoja maestra con código VBA


Si desea copiar datos especificados en el rango A1: D4 de todos los sheet1 de los libros en una carpeta determinada a una hoja maestra, haga lo siguiente.

1. En el libro de trabajo creará una hoja de trabajo maestra, presione otro + F11 teclas para abrir el Microsoft Visual Basic para aplicaciones ventana.

2. En el Microsoft Visual Basic para aplicaciones ventana, haga clic recuadro > Módulo. Luego copia debajo del código VBA en la ventana de código.

Código de VBA: recorre los archivos en una carpeta y copia los datos en una hoja maestra

Sub Merge2MultiSheets()
    Dim xRg As Range
    Dim xSelItem As Variant
    Dim xFileDlg As FileDialog
    Dim xFileName, xSheetName, xRgStr As String
    Dim xBook, xWorkBook As Workbook
    Dim xSheet As Worksheet
    On Error Resume Next
    Application.DisplayAlerts = False
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    xSheetName = "Sheet1"
    xRgStr = "A1:D4"
    Set xFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
    With xFileDlg
        If .Show = -1 Then
            xSelItem = .SelectedItems.Item(1)
            Set xWorkBook = ThisWorkbook
            Set xSheet = xWorkBook.Sheets("New Sheet")
            If xSheet Is Nothing Then
                xWorkBook.Sheets.Add(after:=xWorkBook.Worksheets(xWorkBook.Worksheets.Count)).Name = "New Sheet"
                Set xSheet = xWorkBook.Sheets("New Sheet")
            End If
            xFileName = Dir(xSelItem & "\*.xlsx", vbNormal)
            If xFileName = "" Then Exit Sub
            Do Until xFileName = ""
               Set xBook = Workbooks.Open(xSelItem & "\" & xFileName)
                Set xRg = xBook.Worksheets(xSheetName).Range(xRgStr)
                xRg.Copy xSheet.Range("A65536").End(xlUp).Offset(1, 0)
                xFileName = Dir()
                xBook.Close
            Loop
        End If
    End With
    Application.DisplayAlerts = True
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Nota:

1. En el código, "A1: D4"Y"Sheet1"Significa que los datos en el rango A1: D4 de todo Sheet1 se copiarán en la hoja maestra. Y "Hoja nueva"Es el nombre de la nueva hoja maestra creada.

2. Los archivos de Excel en la carpeta específica no deberían abrirse.

3. presione el F5 clave para ejecutar el código.

4. En la apertura Buscar ventana, seleccione la carpeta que contiene los archivos que recorrerá y luego haga clic en OK botón. Ver captura de pantalla:

Luego, se crea una hoja de trabajo maestra llamada "Nueva hoja" al final del libro actual. Y los datos en el rango A1: D4 de todo Sheet1 en la carpeta seleccionada se enumeran dentro de la hoja de trabajo.


Artículos relacionados:


Kutools for Excel: la mejor herramienta de productividad de Office aumenta su productividad en un 80%

  • Super Formula Bar (edite fácilmente varias líneas de texto y fórmula); Diseño de lectura (lee y edita fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas y mantener datos; Contenido de celdas divididas; Combinar filas duplicadas y suma / promedio... Prevenir células duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Celdas múltiples sin cambiar la referencia de fórmula; Crear referencias automáticamente a múltiples hojas; Insertar viñetas, Casillas de verificación y más ...
  • Fórmulas favoritas e insertadas rápidamente, Gamas, cuadros y cuadros; Cifrar celdas con contraseña Crear una lista de correo y enviar correos electrónicos ...
  • Extracto del texto, Agregar texto, Eliminar por posición, Eliminar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtro a otras hojas); Clasificación avanzada por mes / semana / día, frecuencia y más; Filtro especial por negrita, cursiva ...
  • Combinar libros de trabajo y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes xls, xlsx y PDF...
  • Funciona con Office 2007-2019 y 365, y es compatible con todos los idiomas. Es fácil de implementar en su empresa. Funciones completas de prueba gratuita de 60-day.
pestaña kte 201905

Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Habilitar la edición y lectura con pestañas en Word, Excel, PowerPoint, Editor, Acceso, Visio y Proyecto.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta tu productividad en un 50% y reduce cientos de clics de ratón por ti todos los días!
fondo officetab
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Trish · 2 months ago
    Hi there, This works great. Is there a way to change to just pull over the values and not the formula?
    Thanks!!
  • To post as a guest, your comment is unpublished.
    Robertson · 3 months ago
    Hello,

    Thank you for the tutorial.

    How would I: Only copy the row in "Sheet1" with values from the "total" row and paste with [filename] in master worksheet named “New Sheet”. Noting the row with Total can be different in each worksheet.

    For example:
    File1: Sheet1
    Col1,Col2,Colx
    1,2,15
    Result,10,50

    File2: Sheet1
    Col1,Col2,Colx
    1,5,10
    2,4,16
    3,3,6
    4,5,6
    5,7,10
    Result,300,500

    MasterFile: "New Sheet":
    file1, 10, 50
    file2, 300, 500
  • To post as a guest, your comment is unpublished.
    Paul Gill · 4 months ago
    Hi, thanks for the code. Please can you let me know how I can include the Excel file name from which the data range was copied? This would be a great help!

    Thank you.
  • To post as a guest, your comment is unpublished.
    Lai Ling · 7 months ago
    thank you for the vba code! It works perfectly! Would like to know what is the code if i need to PASTE AS VALUE instead? Thx in advance!
    • To post as a guest, your comment is unpublished.
      crystal · 6 months ago
      Hi Lai Ling,
      The following code can help you solve the problem. Thank you for your comment.

      Sub Merge2MultiSheets()
      Dim xRg As Range
      Dim xSelItem As Variant
      Dim xFileDlg As FileDialog
      Dim xFileName, xSheetName, xRgStr As String
      Dim xBook, xWorkBook As Workbook
      Dim xSheet As Worksheet
      On Error Resume Next
      Application.DisplayAlerts = False
      Application.EnableEvents = False
      Application.ScreenUpdating = False
      xSheetName = "Sheet1"
      xRgStr = "A1:D4"
      Set xFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
      With xFileDlg
      If .Show = -1 Then
      xSelItem = .SelectedItems.Item(1)
      Set xWorkBook = ThisWorkbook
      Set xSheet = xWorkBook.Sheets("New Sheet")
      If xSheet Is Nothing Then
      xWorkBook.Sheets.Add(after:=xWorkBook.Worksheets(xWorkBook.Worksheets.count)).Name = "New Sheet"
      Set xSheet = xWorkBook.Sheets("New Sheet")
      End If
      xFileName = Dir(xSelItem & "\*.xlsx", vbNormal)
      If xFileName = "" Then Exit Sub
      Do Until xFileName = ""
      Set xBook = Workbooks.Open(xSelItem & "\" & xFileName)
      Set xRg = xBook.Worksheets(xSheetName).Range(xRgStr)
      xRg.Copy xSheet.Range("A65536").End(xlUp).Offset(1, 0)
      xFileName = Dir()
      xBook.Close
      Loop
      End If
      End With
      Set xRg = xSheet.UsedRange
      xRg.ClearFormats
      xRg.UseStandardHeight = True
      xRg.UseStandardWidth = True
      Application.DisplayAlerts = True
      Application.EnableEvents = True
      Application.ScreenUpdating = True
      End Sub