Copia de datos con macro a otra hoja con rango

Hola buen día Señores y Srtas.
Mi duda es la siguiente, y tengo una idea, pero no es el total clara, lo que quiero hacer es lo siguiente:
Tengo una archivo de excel con 5 pestañas, lo que quiero es una macro que de esas 5 pestañas me de la información a un libro nuevo, desconozco si le puedo dar el rango yo a la macro, osea decirle ctrl+Shift tope derecha, ctrl+shift tope abajo (esto con la finalidad de que solo agarre los datos llenos y no toda la hoja) y los copie a otro libro uno tras otro.
Se que existe la fncion copy:
Sheets("prueba").Select
Range("A1:L2000").Select
Selection.Copy
Sheets("copiados").Select
Range("a1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("prueba").Select
Range("a4").Select
Application.CutCopyMode = False
(Esto lo tenia para copiarlo de una sheet a otra, pero no me sirve ya. Y quiero juntarlo con que copie la 1-2 3-4-5 en una sola como una base de datos que posteriormente utilizare para otra cosa.
Agradecería la ayuda del grupo, espero sus respuestas.
Saludos
ING. Julio Sauceda

1 Respuesta

Respuesta
1
Aquí adjunto rutina para esto.
Sub armaBase()
'desarrollada por Elsamatilde
For Each sh In Sheets
'excluimos alguna hoja
If sh.Name <> "copiados" Then
'buscamos la primer fila libre para pegar
filaini = Sheets("copiados").Range("A65536").End(xlUp).Row + 1
sh.Range("A1").CurrentRegion.Copy    'ver*
Sheets("copiados").Cells(filaini, 1).Select
ActiveSheet.Paste
End If
Next sh
End Sub
* CurrentRegion tomará el total de celdas con datos, hasta encontrar una intersección de fila y col vacías. Podés reemplazar por un rango fijo (A1:L2000) o buscando el fin con :
Cells(fila, col) donde fila y col se habrán obtenido siguiendo el ejemplo de la variable filaini (ver otros ejemplos en mi página de macros)
No me da bien la función, me puedes aclarar la parte de agregado de pestañas.
Hola Elsa, ya utilice tu macro pero me copia 2 veces los datos de las pestañas, ¿me puedes explicar el porque?
Private Sub CommandButton1_Click()
' Copiado de Datos
For Each sh In Sheets
' Excluimos alguna hoja
If sh. Name <> "4" Then
' Primer fila libre para pegar
filaini = Sheets("copia"). Range("A65536"). End(xlUp). Row + 1
sh. Range("A3"). CurrentRegion. Copy
Sheets("copia"). Cells(filaini, 1). Select
ActiveSheet. Paste
End If
Next sh
End Sub
Elsa, ya solucione el problema:
Solo cambie el <> por < dado que repetia 2 veces la opcion.
' Excluimos alguna hoja
    If sh.Name < "4" Then
Solamente me copia datos de más de la ultima, no me respeta el rango de la A1 final.
El bucle dice que 'para cada hoja... copiar en hoja llamada 'copia' con excepción de la hoja llamada 4, es decir que también estás ejecutando la hoja copia.
Esta es la primera que yo hubiese excluido. No confundas nro de hoja con nombre de hoja.
Sh. Name se refiere al nbre
Private Sub CommandButton1_Click()
' Copiado de Datos
For Each sh In Sheets
' Excluimos alguna hoja. En este caso la llamada 'copia'
If sh. Name <> "copia" Then

' Primer fila libre para pegar
filaini = Sheets("copia"). Range("A65536"). End(xlUp). Row + 1
sh. Range("A3"). CurrentRegion. Copy
Sheets("copia"). Cells(filaini, 1). Select
ActiveSheet. Paste
End If
Next sh
End Sub
Probala así. Si además tenés una hoja llamada 4 y también la querés excluir será:
If sh. Name <> "copia" and sh.name <> "4" Then

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas