Juntar 500 hojas de Excel en 1 sola

Tengo 500 hojas de la siguiente forma:

Necesito juntar la información desde la celda A1 hasta la celda F188 de cada una de las 500 hojas, de forma sucesiva en 1 sola hoja de excel, y que vayan quedando una bajo la otra. De esta forma: hoja1 que va de A1 a F188 debe quedar en hoja "resumen" desde A1 hasta F188, la hoja2 que va de A1 a F188 debe quedar en la hoja "resumen" desde el A189 hasta F376, y así sucesivamente las 500 hojas en una sola.

He intentado con sus respuestas a temas similares pero no me da resultado.

2 respuestas

Respuesta
1

Prueba este código:

Sub resumen()
Dim wks As Worksheet
Set h = Sheets("resumen")
i = 1
j = 1
For Each wks In ActiveWorkbook.Worksheets
Sheets(j).Select
If wks.Name <> h.Name Then
Range("A1:F188").Copy (h.Cells(i, 1))
i = i + 188
j = j + 1
Else
Exit For
End If
Next wks
End Sub

La hoja resumen debe ser la última

Gracias gregori.

pero tengo el mismo problema, dice depurar cuando ejecuto:

¿Tienes la hoja protegida?

las 500 hojas están todas con un filtro activo.

Como puedo desactivar  el filtro de todas las hojas de una sola vez, sin tener que hacerlo de a uno para las 500, es posible?

La línea que hay que incluir para quitar los filtros es

ActiveSheet. ShowAllData

y entera quedaría

Sub resumen()
Dim wks As Worksheet
Set h = Sheets("resumen")
i = 1
j = 1
For Each wks In ActiveWorkbook.Worksheets
Sheets(j).Select
If wks.Name <> h.Name Then
ActiveSheet.ShowAllData
Range("A1:F188").Copy (h.Cells(i, 1))
i = i + 188
j = j + 1
Else
Exit For
End If
Next wks
End Sub

pero si quieres volver a poner los filtros, deberás incluir el código delante de Else con las opciones de filtro que desees.

Si te interesa, quita los filtros de una hoja, ejecuta la grabadora de macros, pones el filtro y paras la grabadora. Obtendrás el código a incluir

Respuesta
1

Utiliza la siguiente macro

Sub Juntar_Hojas()
'Por.Dante Amor
    Set h1 = Sheets("resumen")      'nombre de hoja resumen
    fila = 1
    For Each h In Sheets
        If LCase(h.Name) <> LCase(h1.Name) Then
            h.Range("A1:F188").Copy h1.Range("A" & fila)
            fila = fila + 188
        End If
    Next
    MsgBox "Proceso termiando", vbInformation, "JUNTAR HOJAS"
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu hoja "resumen", elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Juntar_Hojas
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

Dante,

Gracias por tu ayuda. pero me sale el siguiente error cuando ejecuto macro:

Agrega la siguiente línea:

H1. Cells. Clear

La macro completa

Sub Juntar_Hojas()
'Por.Dante Amor
    Set h1 = Sheets("resumen")      'nombre de hoja resumen
    h1.Cells.Clear
    fila = 1
    For Each h In Sheets
        If LCase(h.name) <> LCase(h1.name) Then
            h.Range("A1:F188").Copy h1.Range("A" & fila)
            fila = fila + 188
        End If
    Next
    MsgBox "Proceso termiando", vbInformation, "JUNTAR HOJAS"
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

Dante,

me sigue saliendo Depurar, aparece error en esta fila: 

 h.Range("A1:F188").Copy h1.Range("A" & fila)

Favor dame un correo y te envío el archivo para que lo veas. Es posible

o tu mándame un correo a esta dirección: [email protected]  y te envío el archivo.

Gracias

Envíame tu archivo con la macro

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Franco Aravena” y el título de esta pregunta.

Te anexo la macro actualizada

Sub Juntar_Hojas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("resumen")      'nombre de hoja resumen
    h1.Cells.Clear
    h1.DrawingObjects.Delete
    fila = 1
    For Each h In Sheets
        If LCase(h.Name) <> LCase(h1.Name) Then
            h.Rows(12).Hidden = False
            h.Rows(12).RowHeight = 1
            h.Range("A1:F188").Copy
            h1.Range("A" & fila).PasteSpecial Paste:=xlPasteColumnWidths
            h1.Select
            h1.Range("A" & fila).Select
            ActiveSheet.Paste
            'h1.Range("A" & fila).PasteSpecial xlAll
            fila = fila + 188
        End If
    Next
    Application.ScreenUpdating = True
    MsgBox "Proceso termiando", vbInformation, "JUNTAR HOJAS"
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas