¿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.

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!!!

1 respuesta más de otro experto

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