Intercambio de datos en excel con macros
Hola, en mi trabajo tengo una información que se genera día adía, parte de ella debo llevarla a una única hoja y consolidarla, de manera que seria transferir datos de por lo menos 25 archivos diferentes en un única hoja. He utilizado un código que salio en esta web, pero este solo se puede hacer dentro del mismo archivo en la hoja 1. Como podría hacer para que cada vez que lo utilice se transfiera automáticamente a la fila 4, luego el siguiente a la 5 hasta el final, los campos son alrededor de 10. No se como se puede leer un archivo diferente cada vez, esta es mi maor dificultad, no se mucho de esto. Te incluyo el código que tengo para un único archivo. Gracias
Sub copiados()
Dim HojaOrigen As Worksheet, HojaDestino As Worksheet
Dim i As Integer
'con el If compruebo las condiciones previas a la ejecución del copiado y pegado
'If HojaOrigen.Cells(2, 1).Value <> Empty And _'
'HojaOrigen.Cells(3, 1).Value <> Empty Then'
'Application.ScreenUpdating = False '
'una forma empleando el método .Paste, con dos parámetros incompatibles
'o bien definimos Destination o bien Link
Set HojaOrigen = Sheets(1)
Set HojaDestino = Sheets(2)
HojaOrigen.Range("d18").Copy
ActiveSheet.Paste HojaDestino.Range("M4")
HojaOrigen.Range("d19").Copy
ActiveSheet.Paste HojaDestino.Range("n4")
HojaOrigen.Range("d20").Copy
ActiveSheet.Paste HojaDestino.Range("b4")
HojaOrigen.Range("d21").Copy
ActiveSheet.Paste HojaDestino.Range("j4")
HojaOrigen.Range("d22").Copy
ActiveSheet.Paste HojaDestino.Range("k4")
HojaOrigen.Range("d23").Copy
ActiveSheet.Paste HojaDestino.Range("c4")
HojaOrigen.Range("j18").Copy
ActiveSheet.Paste HojaDestino.Range("e4")
HojaOrigen.Range("j19").Copy
ActiveSheet.Paste HojaDestino.Range("f4")
HojaOrigen.Range("j20").Copy
ActiveSheet.Paste HojaDestino.Range("g4")
HojaOrigen.Range("j21").Copy
ActiveSheet.Paste HojaDestino.Range("h4")
'con Link realiza un Pegar vínculo
'HojaOrigen.Cells(3, 1).Copy'
'HojaDestino.Range("A3").Activate'
'ActiveSheet.Paste link:=True'
'Realizamos un Pegado especial, en este caso como Pegar valores y Pegar fórmulas
'HojaOrigen.Cells(2, 2).Copy'
'HojaDestino.Cells(2, 2).PasteSpecial Paste:=xlValues'
HojaOrigen.Cells(3, 2).Copy
HojaDestino.Cells(3, 2).PasteSpecial Paste:=xlFormulas
'Con el método .Copy podemos indicar dónde deseamos nos copie el rango seleccionado
'realiza un copiado exacto (con formatos, fórmulas, etc)
HojaOrigen.Cells(2, 3).Copy Destination:=HojaDestino.Cells(6, 3)
HojaOrigen.Cells(3, 3).Copy Destination:=HojaDestino.Cells(3, 3)
'También podemos vincular valores o fórmulas relacionando diferentes celdas.
HojaDestino.Range("D2").Value = HojaOrigen.Range("D2").Value
HojaDestino.Range("D3").Formula = HojaOrigen.Range("D3").Formula
Application.ScreenUpdating = True
Application.CutCopyMode = False
Set HojaDestino = Nothing
Set HojaOrigen = Nothing
End Sub
Gracias por su colaboración, Saludos
Sub copiados()
Dim HojaOrigen As Worksheet, HojaDestino As Worksheet
Dim i As Integer
'con el If compruebo las condiciones previas a la ejecución del copiado y pegado
'If HojaOrigen.Cells(2, 1).Value <> Empty And _'
'HojaOrigen.Cells(3, 1).Value <> Empty Then'
'Application.ScreenUpdating = False '
'una forma empleando el método .Paste, con dos parámetros incompatibles
'o bien definimos Destination o bien Link
Set HojaOrigen = Sheets(1)
Set HojaDestino = Sheets(2)
HojaOrigen.Range("d18").Copy
ActiveSheet.Paste HojaDestino.Range("M4")
HojaOrigen.Range("d19").Copy
ActiveSheet.Paste HojaDestino.Range("n4")
HojaOrigen.Range("d20").Copy
ActiveSheet.Paste HojaDestino.Range("b4")
HojaOrigen.Range("d21").Copy
ActiveSheet.Paste HojaDestino.Range("j4")
HojaOrigen.Range("d22").Copy
ActiveSheet.Paste HojaDestino.Range("k4")
HojaOrigen.Range("d23").Copy
ActiveSheet.Paste HojaDestino.Range("c4")
HojaOrigen.Range("j18").Copy
ActiveSheet.Paste HojaDestino.Range("e4")
HojaOrigen.Range("j19").Copy
ActiveSheet.Paste HojaDestino.Range("f4")
HojaOrigen.Range("j20").Copy
ActiveSheet.Paste HojaDestino.Range("g4")
HojaOrigen.Range("j21").Copy
ActiveSheet.Paste HojaDestino.Range("h4")
'con Link realiza un Pegar vínculo
'HojaOrigen.Cells(3, 1).Copy'
'HojaDestino.Range("A3").Activate'
'ActiveSheet.Paste link:=True'
'Realizamos un Pegado especial, en este caso como Pegar valores y Pegar fórmulas
'HojaOrigen.Cells(2, 2).Copy'
'HojaDestino.Cells(2, 2).PasteSpecial Paste:=xlValues'
HojaOrigen.Cells(3, 2).Copy
HojaDestino.Cells(3, 2).PasteSpecial Paste:=xlFormulas
'Con el método .Copy podemos indicar dónde deseamos nos copie el rango seleccionado
'realiza un copiado exacto (con formatos, fórmulas, etc)
HojaOrigen.Cells(2, 3).Copy Destination:=HojaDestino.Cells(6, 3)
HojaOrigen.Cells(3, 3).Copy Destination:=HojaDestino.Cells(3, 3)
'También podemos vincular valores o fórmulas relacionando diferentes celdas.
HojaDestino.Range("D2").Value = HojaOrigen.Range("D2").Value
HojaDestino.Range("D3").Formula = HojaOrigen.Range("D3").Formula
Application.ScreenUpdating = True
Application.CutCopyMode = False
Set HojaDestino = Nothing
Set HojaOrigen = Nothing
End Sub
Gracias por su colaboración, Saludos
Respuesta de calvuch
1