Pegar varias hojas en una

Si me pueden ayudar con una macro, tengo un archivo donde todas las hojas (total 25 hojas)son iguales, pero debo copiarlas todas en una sola hoja, pero en orden consecutivo osea que donde pego la primera hoja y la segunda hoja se pegue en la fila siguiente vacía y así sucesivamente hacia abajo, adicionalmente cada mes varia la cantidad de celdas por tal motivo el rango no es fijo, no se si aploca un formulario para escoger las celdas a copiar.

1 Respuesta

Respuesta
1

Puedes usar este código:

Advertencia: Para que funcione correctamente tienen que cumplirse estas condiciones:

-- El rango a copiar en cada hoja debe tener datos en todas las celdas de la columna "A"

-- En el rango a copiar no pueden haber columnas vacías

Sub copiarhojas()
Sheets(1).Activate
For i = 2 To Worksheets.Count
Ufila = Sheets(1).Rows(Rows.Count).End(xlUp).Row
sigFila = Ufila + 1
If Sheets(1).Cells(1, 1) = "" Then sigFila = 1
Sheets(i).Cells(1, 1).CurrentRegion.Copy Sheets(1).Cells(sigFila, 1)

Next
End Sub

hola,

Gracias por responder,

funciona muy bien la macro, pero si es posible que todo lo copie en una hoja llamada plano y segundo que a partir de la segunda hoja no copie la fila 1 que es el mismo titulo en todas las hojas

Gracias

Por supuesto que se puede hacer.

Se puede resolver de varias formas, pero quizá lo más fácil es copiarlo todo y a continuación eliminar la primera línea.

La hoja en la que quieres copiar debe estar la primera, o sea ser la primera pestaña por la izquierda.

Esto sería añadir al código actual una línea y quedaría así.

Sub copiarhojas()
Sheets(1).Activate
For i = 2 To Worksheets.Count
Ufila = Sheets(1).Rows(Rows.Count).End(xlUp).Row
sigFila = Ufila + 1
If Sheets(1).Cells(1, 1) = "" Then sigFila = 1
Sheets(i).Cells(1, 1).CurrentRegion.Copy Sheets(1).Cells(sigFila, 1)

If sigFila > 1 Then Rows(sigFila).EntireRow.Delete     

Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas