Macro para copiar datos de un libro a la ultima fila de otro libro

Queria consultar si alguien puede ayudarme, estoy escribiendo una macro para copiar datos de ciertas celdas del libro origen, a la ultima fila del libro destino, y que esta macro recorra todas las hojas del libro origen y vaya copiando los datos a una sola solapa del libro destino.

Copio parte del codigo para ver si me pueden ayudar.

Desde ya muchas gracias por su tiempo.

Saludos.

Dim LibroDestino As Workbook

Application.ScreenUpdating = False

Set LibroOrigen = Workbooks.Open("\\Consignatria 2020.xlsx")
Set LibroDestino = Workbooks.Open("C:\PruebaCarga.xlsx") 'Abre libro destino

On Error Resume Next
BuscarHoja = (LibroDestino.Worksheets("Vencimientos").Name <> "") 'Busca en el libro destino si existe la solapa

If BuscarHoja = False Then 'si no existe la solapa, la crea
Sheets.Add before:=Sheets(1)
End If

ActiveSheet.Name = "Vencimientos" 'Selecciona la solapa

Sheets("Vencimientos").Activate

Sheets("Vencimientos").Cells.Select

Selection.ClearContents 'Borra todo el contenido de la Solapa

LibroOrigen.Activate

For i = 1 To Sheets.Count
If LibroOrigen.Sheets(i).Cells(105, "D").Value = 2020 Then
LibroDestino.Sheets("Vencimientos").Range("A" & i).Value = LibroOrigen.Sheets(i).Range("D4").Value 'Fecha del negocio
LibroDestino.Sheets("Vencimientos").Range("B" & i).Value = LibroOrigen.Sheets(i).Range("S48").Value 'Liquidacion
LibroDestino.Sheets("Vencimientos").Range("C" & i).Value = LibroOrigen.Sheets(i).Range("K4").Value 'Cliente
LibroDestino.Sheets("Vencimientos").Range("D" & i).Value = LibroOrigen.Sheets(i).Range("G4").Value 'Frigorifico
LibroDestino.Sheets("Vencimientos").Range("E" & i).Value = LibroOrigen.Sheets(i).Range("D16").Value 'Cabezas
LibroDestino.Sheets("Vencimientos").Range("F" & i).Value = LibroOrigen.Sheets(i).Range("W16").Value 'Monto del negocio total
LibroDestino.Sheets("Vencimientos").Range("G" & i).Value = LibroOrigen.Sheets(i).Range("V58").Value 'Monto Negocio
LibroDestino.Sheets("Vencimientos").Range("H" & i).Value = LibroOrigen.Sheets(i).Range("V61").Value 'Comision 
LibroDestino.Sheets("Vencimientos").Range("I" & i).Value = LibroOrigen.Sheets(i).Range("V62").Value 'Fondo de garantia 
LibroDestino.Sheets("Vencimientos").Range("J" & i).Value = LibroOrigen.Sheets(i).Range("V68").Value 'REt. IIBB
LibroDestino.Sheets("Vencimientos").Range("K" & i).Value = LibroOrigen.Sheets(i).Range("Q82").Value 'Retencion Ganancias
LibroDestino.Sheets("Vencimientos").Range("L" & i).Value = LibroOrigen.Sheets(i).Range("Q84").Value 'A depositar 
LibroDestino.Sheets("Vencimientos").Range("P" & i).Value = LibroOrigen.Sheets(i).Range("Q21").Value 'Vto
LibroDestino.Sheets("Vencimientos").Range("Q" & i).Value = LibroOrigen.Sheets(i).Range("T96").Value 'Saldo
LibroDestino.Sheets("Vencimientos").Range("R" & i).Value = LibroOrigen.Sheets(i).Range("D108").Value 'Codigo
End If
Next i

4 Respuestas

Respuesta
Respuesta
2

Podemos simplificar un poco la macro de esta manera:

Sub CopiaCeldas()
  Dim l1 As Workbook, l2 As Workbook, sh1 As Worksheet, sh2 As Worksheet
  Dim c1 As Variant, c2 As Variant, i As Long, j As Long
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  '
  Set l1 = Workbooks.Open("\\Consignatria 2020.xlsx")    'origen
  Set l2 = Workbooks.Open("C:\PruebaCarga.xlsx")          'Destino
  c1 = Array("D4", "S48", "K4", "G4", "D16", "W16", "V58", "V61", "V62", "V68", "Q82", "Q84", "Q21", "T96", "D108")
  c2 = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "P", "Q", "R")
  '
  On Error Resume Next
  l2.Sheets("Vencimientos").Delete
  l2.Sheets.Add(l2.Sheets(1)).Name = "Vencimientos"
  Set sh2 = l2.Sheets("Vencimientos")
  On Error GoTo 0
  '
  j = 2
  For Each sh1 In l1.Sheets
    For i = 0 To UBound(c1)
      sh2.Range(c2(i) & j).Value = sh1.Range(c1(i)).Value
    Next
    j = j + 1
  Next
  l2.Save
End Sub
Respuesta
1

Gracias Adriel y Dante por sus respuestas entre los dos lo pude solucionar.

No se si complique mas la macro pero lo que hice fue en cada una de las liqnes que busque la ultima fila y se vaya moviendo para los costados. Desde ya muchas gracias por sus repuestas!

LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = LibroOrigen.Sheets(i).Range("D4").Value 'Fecha del negocio

LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 1).Value = LibroOrigen.Sheets(i).Range("S48").Value 'Liquidacion
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 2).Value = LibroOrigen.Sheets(i).Range("K4").Value 'Cliente
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 3).Value = LibroOrigen.Sheets(i).Range("G4").Value 'Frigorifico
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 4).Value = LibroOrigen.Sheets(i).Range("D16").Value 'Cabezas
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 5).Value = LibroOrigen.Sheets(i).Range("W16").Value 'Monto del negocio total
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 6).Value = LibroOrigen.Sheets(i).Range("V58").Value 'Monto Negocio 1
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 7).Value = LibroOrigen.Sheets(i).Range("V61").Value 'Comision 1
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 8).Value = LibroOrigen.Sheets(i).Range("V62").Value 'Fondo de garantia 1
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 9).Value = LibroOrigen.Sheets(i).Range("V68").Value 'REt. IIBB
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 10).Value = LibroOrigen.Sheets(i).Range("Q82").Value 'Retencion Ganancias
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 11).Value = LibroOrigen.Sheets(i).Range("Q84").Value 'A depositar 1
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 12).Value = LibroOrigen.Sheets(i).Range("Q92").Value 'Total gastos
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 13).Value = LibroOrigen.Sheets(i).Range("W27").Value 'Comision en 2
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 14).Value = LibroOrigen.Sheets(i).Range("Q96").Value 'Negocio en 2
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 15).Value = LibroOrigen.Sheets(i).Range("Q21").Value 'Vto
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 16).Value = LibroOrigen.Sheets(i).Range("T96").Value 'Saldo
LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(xlUp).Offset(0, 17).Value = LibroOrigen.Sheets(i).Range("D108").Value 'Codigo

Respuesta
1

Prueba y comentas

Macro


Sub copiar()
Dim LibroDestino As Workbook
Application.ScreenUpdating = False
Set LibroOrigen = Workbooks.Open("\\Consignatria 2020.xlsx")
Set LibroDestino = Workbooks.Open("C:\PruebaCarga.xlsx") 'Abre libro destino
On Error Resume Next
BuscarHoja = (LibroDestino.Worksheets("Vencimientos").Name <> "") 'Busca en el libro destino si existe la solapa
If BuscarHoja = False Then 'si no existe la solapa, la crea
Sheets.Add before:=Sheets(1)
End If
ActiveSheet.Name = "Vencimientos" 'Selecciona la solapa
Sheets("Vencimientos").Activate
Sheets("Vencimientos").Cells.Select
Selection.ClearContents 'Borra todo el contenido de la Solapa
LibroOrigen.Activate
f = LibroDestino.Sheets("Vencimientos").Range("A" & Rows.Count).End(3).Row + 1
For i = 1 To Sheets.Count
If LibroOrigen.Sheets(i).Cells(105, "D").Value = 2020 Then
LibroDestino.Sheets("Vencimientos").Range("A" & f).Value = LibroOrigen.Sheets(i).Range("D4").Value 'Fecha del negocio
LibroDestino.Sheets("Vencimientos").Range("B" & f).Value = LibroOrigen.Sheets(i).Range("S48").Value 'Liquidacion
LibroDestino.Sheets("Vencimientos").Range("C" & f).Value = LibroOrigen.Sheets(i).Range("K4").Value 'Cliente
LibroDestino.Sheets("Vencimientos").Range("D" & f).Value = LibroOrigen.Sheets(i).Range("G4").Value 'Frigorifico
LibroDestino.Sheets("Vencimientos").Range("E" & f).Value = LibroOrigen.Sheets(i).Range("D16").Value 'Cabezas
LibroDestino.Sheets("Vencimientos").Range("F" & f).Value = LibroOrigen.Sheets(i).Range("W16").Value 'Monto del negocio total
LibroDestino.Sheets("Vencimientos").Range("G" & f).Value = LibroOrigen.Sheets(i).Range("V58").Value 'Monto Negocio
LibroDestino.Sheets("Vencimientos").Range("H" & f).Value = LibroOrigen.Sheets(i).Range("V61").Value 'Comision
LibroDestino.Sheets("Vencimientos").Range("I" & f).Value = LibroOrigen.Sheets(i).Range("V62").Value 'Fondo de garantia
LibroDestino.Sheets("Vencimientos").Range("J" & f).Value = LibroOrigen.Sheets(i).Range("V68").Value 'REt. IIBB
LibroDestino.Sheets("Vencimientos").Range("K" & f).Value = LibroOrigen.Sheets(i).Range("Q82").Value 'Retencion Ganancias
LibroDestino.Sheets("Vencimientos").Range("L" & f).Value = LibroOrigen.Sheets(i).Range("Q84").Value 'A depositar
LibroDestino.Sheets("Vencimientos").Range("P" & f).Value = LibroOrigen.Sheets(i).Range("Q21").Value 'Vto
LibroDestino.Sheets("Vencimientos").Range("Q" & f).Value = LibroOrigen.Sheets(i).Range("T96").Value 'Saldo
LibroDestino.Sheets("Vencimientos").Range("R" & f).Value = LibroOrigen.Sheets(i).Range("D108").Value 'Codigo
End If
Next i
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas