Macro para mover o copiar datos entre libros de Excel
Este artículo le enseñará cómo copiar o transferir datos entre hojas de cálculo en Microsoft Excel usando VBA. En este ejemplo en particular, también le enseñaremos cómo combinar datos mediante una consulta adjunta. Esta combinación de tareas le permitirá combinar datos en hojas de trabajo existentes para un análisis más fácil.
Macro para mover o copiar datos en Excel
Tomemos un caso en el que necesita copiar datos de un libro y luego enmendar el contenido a otro libro. En este ejemplo, el libro de trabajo uno (el libro de trabajo de origen) tiene 1 2 3 4 5 y el libro de trabajo dos tiene 6 7 8 9 0 .Después de ejecutar la macro, el libro de trabajo dos debe tener 6 7 8 9 0 1 2 3 4 5 . Los formatos de ambos libros de trabajo son los mismos.
Aquí hay una macro que podría transferir y agregar sus datos. (Asegúrese de leer la NOTA en el código):
Sub CopyData ()Dim sBook_t como cadena
Dim sBook_s como cadena
Dim sSheet_t As String
Dim sSheet_s As String
Dim lMaxRows_t tan largo
Dim lMaxRows_s como largo
Dim sMaxCol_s As String
Dim sRange_t como cadena
Dim sRange_s como cadena
sBook_t = "Target Data WB- Copia los datos a WB.xls"
sBook_s = "Fuente de datos WB - Copie datos a WB.xls"
sSheet_t = "Target WB"
sSheet_s = "Fuente"
lMaxRows_t = Libros de trabajo (sBook_t). Hojas de trabajo (sSheet_t) .Cells (Rows.Count, "A"). End (xlUp) .Row
lMaxRows_s = Libros de trabajo (sBook_s). Hojas (sSheet_s) .Cells (Rows.Count, "A"). End (xlUp) .Row
sMaxCol_s = Libros de trabajo (sBook_s). Hojas (sSheet_s) .Cells (1, Columns.Count) .End (xlToLeft) .Address
sMaxCol_s = Mid (sMaxCol_s, 2, InStr (2, sMaxCol_s, "$") - 2)
Si (lMaxRows_t = 1) entonces
sRange_t = "A1:" & sMaxCol_s & lMaxRows_s
sRange_s = "A1:" & sMaxCol_s & lMaxRows_s
Libros de trabajo (sBook_t). Hojas (sSheet_t). Rango (sRange_t) = Libros de trabajo (sBook_s). Hojas (sSheet_s). Rango (sRange_s) .Value
Más
sRange_t = "A" & (lMaxRows_t + 1) & ":" & sMaxCol_s & (lMaxRows_t + lMaxRows_s - 1)
sRange_s = "A2:" & sMaxCol_s & lMaxRows_s
Libros de trabajo (sBook_t). Hojas (sSheet_t). Rango (sRange_t) = Libros de trabajo (sBook_s). Hojas (sSheet_s). Rango (sRange_s) .Value
' ###################### NOTA #################
'las siguientes líneas se deben usar para que el número de serie se arregle también, en lugar de copiarse
'Si no hay necesidad, borre la línea de abajo
Libros de trabajo (sBook_t). Hojas (sSheet_t). Rango ("A" & lMaxRows_t) .AutoFill Destino: = Libros de trabajo (sBook_t) .Sheets (sSheet_t) .Range (+ A) - 1)), Tipo: = xlFillSeries
Terminara si
End Sub