Copiar una hoja de un libro en otro libro a partir de una celda determinada. Ejemplo en c1

Tengo un libro llamado hoja ppal con varias hojas en total 6 y lo que quiero hacer es, que en la primera hoja de este libro en la intentar c1, me copie los datos del libro ELCHE, que empiezan en a1 hasta xx

1 Respuesta

Respuesta
2

H o l a:

Pon la siguiente macro en tu libro "ppal"

Cambia en la macro "HojaDestino" por el nombre de la hoja donde quieres pegar los datos.

Cambia en la macro "HojaOrigen" por el nombre de la hoja que tiene los datos que se van a copiar.


Sub CopiarDatos()
'Por.Dante Amor
    Set l1 = ThisWorkbook               'libro ppal
    Set h1 = l1.Sheets("HojaDestino")   'primera hoja
    '
    Set l2 = Workbooks("ELCHE.xlsx")    'libro con datos
    Set h2 = l2.Sheets("HojaOrigen")    'hoja con datos
    '
    h2.Range("A1:A" & h2.Range("A" & Rows.Count).End(xlUp).Row).Copy
    h1.Range("C1").PasteSpecial xlValues
    MsgBox "Datos copiados"
End Sub

Sigue las Instrucciones para ejecutar la macro

  1. Abre tu archivo de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Para ejecutarla presiona F5

':)
':)

Buenas, dante

Me funciona, pero tengo 2 problemas con ella, para poder ejecutarla me obliga a tener las hojas abiertas y me gustaría que lo hiciera sin tener que abrir las hojas, y después el pegado no lo hace igual, tengo celdas pintadas de colores y se lleva solo el dato.

Saludos y gracias

H o l a:

No sé qué te refieres con "hojas abiertas", querrás decir libro abierto, y sí, es necesario que los 2 libros estén abiertos.

Cambia esta línea :

 H2.Range("A1:A" & h2.Range("A" & Rows. Count).End(xlUp). Row). Copy
 h1. Range("C1"). PasteSpecial xlValues

Por esta:

 H2.Range("A1:A" & h2.Range("A" & Rows. Count).End(xlUp). Row). Copy h1. Range("C1")

':)
':)

Buenas noches dante,  al tener celdas en la hoja que copio combinadas , cuando pego me da problemas . Que puedo hacer ?

Esta sería una opción:

Que la macro quite las celdas combinadas, se pegue la información, y después si quieres, vuelvas a combinar las celdas, cambia "C1:D5", por el rango de celdas que tengas combinadas.

Si ya no quieres que se combinen las celdas, entonces quita esta línea de la macro:

H1. Range("C1:D5"). Merge

La macro:

Sub CopiarDatos()
'Por.Dante Amor
    Set l1 = ThisWorkbook               'libro ppal
    Set h1 = l1.Sheets("HojaDestino")   'primera hoja
    '
    Set l2 = Workbooks("ELCHE.xlsx")    'libro con datos
    Set h2 = l2.Sheets("HojaOrigen")    'hoja con datos
    '
    h1.Range("C1:D5").UnMerge
    h2.Range("A1:A" & h2.Range("A" & Rows.Count).End(xlUp).Row).Copy h1.Range("C1")
    h1.Range("C1:D5").Merge
    MsgBox "Datos copiados"
End Sub

Si no es la solución, en la otra pregunta que creaste, modificamos la macro para pasar celda por celda.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas