Inicio > Microsoft Excel > valedor > Copiar hojas mediante macros

Copiar hojas mediante macros

Experto:
Usuario:
Fecha: 14/10/2008
Valoración: (4,00 sobre 5) Categoría: Microsoft Excel
14/10/2008
maudom, usuario preguntando en Microsoft Excel
Usuario
Valedor
Te molesto porque hace varios días estoy tratando de crear una macro, pero
no pueda hacerlo ni con la grabadora ni
tampoco con filtros avanzado.
El tema es que tengo un planilla de excel que consta de 4 hojas las mismas tenien igual formato pero corresponden a diferentes dias. Lo que intento hacer con la macro es que me copie los datos de cada una de las hojas (el rango seria el mismo) en una hoja nueva sin incluir las filas vacias.

Te agredeceria de podés verlo.
Desde ya, muchas gracias y perdón por la molestia.

Mauricio Domínguez
14/10/2008
maudom, experto respondiendo en Microsoft Excel
Experto
Hola, "normalmente" filas vacias NO deberian de existir en nuestros datos, es decir, conforme se captura se agregan a la siguiente fila o cuando se elimina uno, se elimina la fila sin dejarla en blanco, por fila vacia entiendo un registro que no tenga ningun campo, las filas vacias complican el codigo innecesariamente, procura no dejarlas, la macro que te anexo hace lo siguiente...

Agrega una hoja nueva
Selecciona la Hoja1
Selecciona el rango de datos, aqui es muy importante que selecciones, incluyendo TODOS los datos, hasta tu ultimo datos, incluyendo las filas vacias
Ordeno por el primer campo, de hecho puede ser por el que sea, la finalidad de este ordenamiento es que deja las filas vacias al final
Seleciono la region actual, de esta forma ya NO selecciona las filas vacias
Copio esta selecciona a la nueva hoja
Hago lo mismo con las restantes hojas...

TU TAREA ES:
Ser mucho mas explicito en tus exposiciones
Cambiar los nombres de las hojas que yo uso Hoja1, Hoja2. etc, por los tuyos
Cambiar el rango que yo uso A1:A20 por el correcto que tu uses
Consultar la ayuda de Excel para dudas de alguna instruccion
Si no sabes incorporar esta macro a tu archivo, consultar mi pagina en donde explico como hacerlo...

Esta es la macro

Option Explicit

Public Sub CopiarDatos()
Dim HojaNueva As Worksheet

'Agregamos una nueva hoja
Set HojaNueva = Sheets.Add

'Seleccionamos la hoja 1
Sheets("Hoja1").Select
'Seleccionamos el rango de datos
Range("A1:C20").Select
'Ordeno por el primer campo
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Copio la region actual a la nueva hoja
Range("A1").CurrentRegion.Copy HojaNueva.Range("A1")

'Seleccionamos la hoja 2
Sheets("Hoja2").Select
'Seleccionamos el rango de datos
Range("A1:C20").Select
'Ordenamos por el primer campo
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Copiamos los datos de la fila 2 y hasta el ultimo dato y lo copiamos
'despues de la ultima fila en la hoja nueva
Range(Range("A2"), Range("A2").End(xlToRight).End(xlDown)).Copy HojaNueva.Range("A1").End(xlDown).Offset(1, 0)

'En La hoja 3 y 4 es el mismo procedimiento
Sheets("Hoja3").Select
Range("A1:C20").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range(Range("A2"), Range("A2").End(xlToRight).End(xlDown)).Copy HojaNueva.Range("A1").End(xlDown).Offset(1, 0)

Sheets("Hoja4").Select
Range("A1:C20").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range(Range("A2"), Range("A2").End(xlToRight).End(xlDown)).Copy HojaNueva.Range("A1").End(xlDown).Offset(1, 0)

Application.CutCopyMode = False
Set HojaNueva = Nothing

End Sub
14/10/2008
maudom, usuario preguntando en Microsoft Excel
Usuario
Te agredezco, realmente me sirvo.
Disculpame por no haber sido mas explicito, nervios de novato. A pesar de los pocos datos me captaste el mensaje.
Nuevamente muchas gracias.
Enlaces patrocinados