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

Artículo Anterior Artículo Siguiente

Los Mejores Consejos