Quiero copiar datos usando una macro desde un libro, estando los datos en otro libro

Necesito usar una macro desde una hoja de un libro para que me copie los datos que están en otra hoja de otro libro.

Respuesta
1

Sub Extraerdato()
'
' Extrae los datos de la celda D3, D4, D5, y los copia en la celda C6, D6, D7,
'
'
ActiveCell.FormulaR1C1 = "=[Libro2.xlsm]Hoja1!R3C4"
Range("C6").Select
ActiveCell.FormulaR1C1 = "=[Libro2.xlsm]Hoja1!R4C4"
Range("D6").Select
ActiveCell.FormulaR1C1 = "=[Libro2.xlsm]Hoja1!R5C4"
Range("D7").Select
End Sub

Lo hide esta forma por que no me dijiste de que celdas quieres que traiga los datos

Muchas gracias!

Querría copiar un rango que está en otro libro,que es variable, comenzando siempre en la celda E6, abarcando hasta la columna O6 pero siendo variable el número de filas.

El proceso sería invocar esa macro desde otro libro y traer los datos al libro desde donde llamo a la macro comenzando desde la celda A1.

Muchas gracias de nuevo.

¿Las celdas E6 y la O6 están combinadas?

Sub Concatenar()
Range("A1").Select
ActiveCell.FormulaR1C1 = _
"=CONCATENATE([Libro2.xlsm]Hoja1!R6C5, "" "",[Libro2.xlsm]Hoja1!R6C6, "" "",[Libro2.xlsm]Hoja1!R6C7,"" "",[Libro2.xlsm]Hoja1!R6C8,"" "",[Libro2.xlsm]Hoja1!R6C9,"" "")"
ActiveCell.FormulaR1C1 = _
"=CONCATENATE([Libro2.xlsm]Hoja1!R6C5, "" "",[Libro2.xlsm]Hoja1!R6C6, "" "",[Libro2.xlsm]Hoja1!R6C7,"" "",[Libro2.xlsm]Hoja1!R6C8,"" "",[Libro2.xlsm]Hoja1!R6C9,"" "",[Libro2.xlsm]Hoja1!R6C10,"" "",[Libro2.xlsm]Hoja1!R6C11,"" "",[Libro2.xlsm]Hoja1!R6C12,"" "",[Libro2.xlsm]Hoja1!R6C13,"" "",[Libro2.xlsm]Hoja1!R6C14,"" "",[Libro2.xlsm]Hoja1!R6C15)"
Range("A2").Select
Windows("Libro1.xlsm").Activate
Range("A1").Select
End Sub

Creo que esto te servirá, prueba y me avisas

Buenos días,

Primero de todo, gracias por su atención y su tiempo.

Segundo, he probado su código y no me funciona, voy a intentar ser más exacto y explicar mejor lo que necesito.

Desde un libro que se llama LibroDestino.xlsm quiero llamar a una macro con un botón y que en la Hoja1 de este libro se copie la información que está en Origen.xlsm ,HojaOrigen1, cuyos datos están desde las columnas E6,F6,G6,H6,I6,J6,K6,L6,M6,N6,O6 para abajo , ejemplo del contenido dé las dos primeras filas, el resto seguirían la misma estructura:

E6 F6 G6 H6 I6 J6 L6 M6 N6 O6

Coche EUR 12,5 BMW 126cv 1800 12/2/2011 Madrid 2 Jorge

E7 F7 G7 H7 I7 J7 L7 M7 N7 O7

Moto EUR 3,2 SUZUKI 90cv 950 7/7/2013 Barceöna 1 Luis

Siendo el número de filas alrededor de 90000, todas con la misma estructura para cada columna.

Me gustaría que se llamase al otro libro (Origen) sin la necesidad de que esté abierto, sería posible?

Siento no haberme expresado mejor anteriormente.

Muchas gracias, le agradezco mucho su tiempo y ayuda.

Como puntualización, los datos se deberían copiar a partir de la celda A1 pero sin combinarse, me gustaría mantener el mismo orden, es decir que la celda A1 del LibroDestino correspondería a la E6 del libro Origen, la A2 a G6.... así sucesivamente.

Muchas gracias.

Ya lo he conseguido.

Su trabajo y dedicación es encomiable.

Muchas gracias.

Nogue84 para solucionar esto cree un libro llamado "LibroOrigen" debes cambiar ese nombre por el nombre del libro al cual le vas a extraer los datos

También cree una tabla y un rango para la información contenida en las celdas E6 hasta la columna 06, de esta manera aunque aumente el numero de filas las copiara pues lo que copia es el rango de la tabla.

No olvides finalizar si soluciona tu problema

Private Sub CommandButton1_Click()
'abrir el libro donde estan los datos
Workbooks.Open Filename:="C:\Users\Usuario\Desktop\LibroOrigen.xlsx"
'seleciona el rango que deseas copiar
Application.Goto Reference:="Rango3"
Selection.Copy
'lo pega en la hoja donde se ejecuto la macro
Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'aumenta el tamaño de las celdas segun lo que se necesite
Range("A:A"). EntireColumn. AutoFit
Range("B:B"). EntireColumn. AutoFit
Range("C:C"). EntireColumn. AutoFit
Range("D:D"). EntireColumn. AutoFit
Range("E:E"). EntireColumn. AutoFit
Range("F:F"). EntireColumn. AutoFit
Range("G:G"). EntireColumn. AutoFit
Range("H:H"). EntireColumn. AutoFit
Range("I:I"). EntireColumn. AutoFit
Range("J:J"). EntireColumn. AutoFit
Range("K:K"). EntireColumn. AutoFit
Range("L:L"). EntireColumn. AutoFit
'cierra el libro de origen
Windows("LibroOrigen.xlsx").Activate
ActiveWindow. Close
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas