Jump to content
Jose BN

ANSWERED Copiar datos Libro activo a otro Libro

Recommended Posts

Hola! amig@s del foro, quisiera solicitarles el apoyo con la siguiente macro que intento realizar con la intención de copiar los datos que inician en la celda 5 de las columnas("B,D,E,F,G,H,I) de mi libro activo ("Libro1") a copiarlas a un "libro2" a partir de la celda "A1" de la hoja1 de este ultimo, lo cual no he logrado tener éxito:

Sub copiarDatosDeArchivo1A2()
Dim x As Workbook
Dim y As Workbook

'## Abrimos ambos ficheros:
Set x = ActiveWorkbook
Set y = Workbooks.Open("C:\Users\jballadares\Desktop\CSV\JBLibro4.xlsx")

'Copiamos los datos que queramos del primer libro de excel:
x.Sheets("RV").ActiveSheet.Range("B65536").End(xlUp).Copy

'Pegamos en el otro libro:
y.Sheets("Hoja1").Range("A1").PasteSpecial

'Cerramos el fichero:
x.Close

End Sub

Agradezco la ayuda que me puedan brindar.

Saludos

JB

 

Share this post


Link to post
Share on other sites

Hola @Jose BN

A ver si te sirve esta modificación.

Por favor, la próxima consulta recuerda que hay que subir los archivos para pruebas.

Suerte!
 

Sub copiarDatosDeArchivo1A2()
Dim x As Workbook
Dim y As Workbook

'## Abrimos ambos ficheros

cruta01 = ThisWorkbook.Path & "\"
cruta02 = "C:\Users\jballadares\Desktop\CSV\"
carch01 = ThisWorkbook.Name
carch02 = "JBLibro4.xlsx"

Set x = ActiveWorkbook
Set y = Workbooks.Open(cruta02 & carch02)

'Copiamos los datos que queramos del primer libro de excel:
ufila1 = 0: ufila1 = Hoja1.Cells(Rows.Count, 2).End(xlUp).Row
x.Sheets("RV").Range("B1:B" & ufila1).Copy

'Pegamos en el otro libro:
y.Sheets("Hoja1").Range("A1").PasteSpecial

'Cerramos el fichero:
'x.Close
y.Save
y.Close

End Sub

 

Share this post


Link to post
Share on other sites

Muchas gracias! tierra_pampa promesa que la próxima incluiré el archivo.

La modificación trabaja bien, solo que esta copia únicamente los datos de la columna B, dejando por fuera:B,D,E,F,G,H,I será abusivo si me ayudas con esta parte.

Saludos

JB

 

Share this post


Link to post
Share on other sites

Tanto te cuesta intentar entender el código, basta con poner un poco de interés, se trata de repetir estas 2 líneas para cada una de las columnas que desees:

x.Sheets("RV").Range("B1:B" & ufila1).Copy
y.Sheets("Hoja1").Range("A1").PasteSpecial

Y no, no voy a modificarte la macro a menos que subas un archivo con un ejemplo práctico de lo que quieres.

Share this post


Link to post
Share on other sites
Hace 1 hora, Gerson Pineda dijo:

Hola Jose

Revisa el adjunto con una solución [solo debes poner las variables de la ruta]

 

Saludos

Copiar Columnas Intercaladas_GP.zip 45 kB · 3 descargas

Gersón ha queda muy bien.

Sub CopiarColumnasIntercaladas_GP()

'************ by Gerson Pineda ************
'************ 31/Oct/2019 ************

Application.ScreenUpdating = False

ruta = ("C:\Users\jcarce\Desktop\Libro1JB.xlsx")
vuf = Range("A" & Rows.Count).End(xlUp).Row
Workbooks.Open ruta: ThisWorkbook.Activate
Union(Range("B5:B" & vuf), Range("D5:I" & vuf)).Copy _
Workbooks("Libro1JB.xlsx").Worksheets(1).Range("A1")
Workbooks("Libro1JB.xlsx").Close 1

Application.ScreenUpdating = True

End Sub

Me podrías explicar esta parte: a qué se debe el _ del copy?

Puedo interpretar que B está de intercalada de las columnas D hasta I (estas ultimas son continuas)siendo esta la forma de unir los datos  al estar intercalados. 

Union(Range("B5:B" & vuf), Range("D5:I" & vuf)).Copy _

Por ultimo para aprendizaje: porqué se debe contar A? hubiera muerto pensado que los datos siempre deberían haber partido de B y posiblemente no lo hubiera solucionado nunca!!!!, a pesar de haber sido adoptado por tu familia(tú y tú abuelo). Pero llegamos donde grandes personas como: tierra_pampa , Antoni , Gerson Pineda EXISTEN EN EL EXCEL AYUDA!

vuf = Range("A" & Rows.Count).End(xlUp).Row

Saludos

Share this post


Link to post
Share on other sites
Hace 2 horas, Jose BN dijo:

Me podrías explicar esta parte: a qué se debe el _ del copy?

Es simplemente escribir una linea en partes, lo uso para mejorar la lectura y no estar leyendo de extremo a extremo

Hace 2 horas, Jose BN dijo:

Puedo interpretar que B está de intercalada de las columnas D hasta I (estas ultimas son continuas)siendo esta la forma de unir los datos  al estar intercalados. 

Union(Range("B5:B" & vuf), Range("D5:I" & vuf)).Copy _

La opción de Union, es muy útil para casos como el tuyo, pues te ahorra mucho trabajo, es como seleccionar manualmente rangos con la tecla Ctrl, puedes probarlo con tu mismo libro

Hace 2 horas, Jose BN dijo:

Por ultimo para aprendizaje: porqué se debe contar A? hubiera muerto pensado que los datos siempre deberían haber partido de B y posiblemente no lo hubiera solucionado nunca!!!!

Que va no digas eso!, la idea es poder obtener la ultima fila con datos, puede ser A, B o cualquiera, pues al fin al cabo solo necesitamos esa variable, pues en tu tabla ademas se asume que todas las columnas están llenas

Hace 2 horas, Jose BN dijo:

a pesar de haber sido adoptado por tu familia(tú y tú abuelo). Pero llegamos donde grandes personas

Mira ya que mencionas al abuelo @avalencia jaja es oportuno mencionar que nos puede salir con algo diferente, ya tu sabes como en los años 1800 se hacían las cosas :lol:

 

Saludos a todos!

Share this post


Link to post
Share on other sites

Hola @Jose BN

Perdón amigo, hice el código y no caí en cuenta que el pedido original incluía otras columnas. Perdón!

La mejor manera de aprender es bajar un archivo cualquiera e ir viendo (paso a paso) que es lo hace Excel tras cada línea de código.

Mientras tanto, siempre tendrás el foro para evacuar posibles dudas.

Qué tengas una buena jornada!

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.



×
×
  • Create New...

Important Information

Privacy Policy