¿Cómo hago una macro en excel para copiar todos los datos d varias hojas a una nueva?

Tengo 5 hojas en un libro de excel 2003, necesito pasar con una macro todos los datos de 3 de las hojas a una nueva hoja, pero poniendo todos los datos uno debajo del otro a partir de la fila 2 porque la fila 1 son los títulos de las columnas. (Las tres hojas que necesito pasar tienen las mismas columnas y no hay filas en blanco entre medio) ademas los datos que necesito pasar a la hoja nueva son variables xq son resultados de una consulta sql.

Necesito que se copien los datos de la hoja1 a la hoja nueva, al final de todos esos datos, copiar los datos de la hoja2 y al final de todos esos datos copiar los datos de la hoja3.

¿Se entiende?

Necesito de su ayuda amigos.

2 respuestas

Respuesta
4

Crea una pestaña nueva llamada RESUMEN y después ejecuta esta macro y listo:

Sub resumen()
For Each hoja In ActiveWorkbook.Sheets
If hoja.Name <> "resumen" Then
hoja.Select
columna = Range("mm1").End(xlToLeft).Column
ultima = Range("a65000").End(xlUp).Row
Range(Cells(2, 1), Cells(ultima, columna)).Copy
Sheets("resumen").Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
End If
Next
End Sub

recuerda finalizar y puntuar

Hola...

Te consulto algo porque me da el siguiente. error: error 1004 en tiempo de ejecución. Error en el método 'Range' del objeto '_Global'

columna = Range("mm1").End(xlToLeft).Column.

Otra cosa: según me parece el código recorre todas las hojas comparando si son distintas a la llamada "resumen";

For Each hoja In ActiveWorkbook.Sheets
If hoja.Name <> "resumen" Then

xxxxxxxxx

como hago para que no me pase todas las hojas distintas de "resumen"? porque tengo 5 hojas en el libro y solo necesito que me pase los datos de las hojas 1, 2 y 3...

Se podría modificar el if por algo asi?

If (hoja.Name <> "resumen" and ( hoja.Name = "hoja 1" or hoja.Name = "hoja3" or hoja.Name ="hoja5") )Then


Espero su ayuda...

Igualmente muchas gracias!!!

En cuanto al error te comento: mediante esa sentencia consigo saber el ancho te tu tabla y a mi me ha funcionado perfectamente.

Si quieres que solo examine las hojas 1, 2 y 3 puedes hacer lo siguiente:

Coloca esas hojas las primeras empezando por la izquierda y seguidas y la macro quedaría así:

Sub resumen()
For x=1 to 3
sheets(x).Select
columna = Range("mm1").End(xlToLeft).Column
ultima = Range("a65000").End(xlUp).Row
Range(Cells(2, 1), Cells(ultima, columna)).Copy
Sheets("resumen").Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
Next
End Sub

Maestro me funciono de 10..

Para agregar un botón en una hoja distinta a cualquiera de las usadas y que ejecute la macro como hago?

Luis Mondelo "EXPERTO"

MUCHAS GRACIAS!!!!

Me sirvió muchísimo tu ayuda, muy buena predisposición sos un PRO.


Ggracias Totales!!!

Respuesta

Sub Resumen()
For Each hoja In ActiveWorkbook.Sheets
If hoja.Name <> "resumen" Then
hoja.Select
columna = Range("mm26").End(xlToLeft).Column
ultima = Range("a65000").End(xlUp).Row
Range(Cells(2, 1), Cells(ultima, columna)).Copy
Sheets("resumen").Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
End If
Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas