Macro Excel para copiar rango de datos entre libros abiertos

Compatibilidad: Truco compatible con Excel 365Truco compatible con Excel 2019Truco compatible con Excel 2016Truco compatible con Excel 2013Truco compatible con Excel 2010

En el trabajo diario podemos necesitar crear una macro Excel para copiar rango de datos entre libros abiertos.

Macro Excel para copiar rango de datos entre libros abiertos
  • CREAR MACRO
  1. Abrir el libro que contiene los datos ("Origen.xlsm").

  2. Pulsar la tecla Alt y mantener pulsada / Pulsar la tecla F11. Mostrará el editor de Visual Basic.

  3. Ir a: Barra de Menú / Insertar / Módulo. Mostrará la ventana del módulo donde escribimos la macro.

    Explorador de Proyectos con módulo1 seleccionado
  4. Escribir el código de la macro:

    Sub CopiarRango()

    ' Indicar el libro origen desde donde copiar
    Windows("Origen.xlsm").Activate

    ' Indicar la hoja de origen desde donde copiar
    Set wsOrigen = Worksheets("Hoja1")

    ' Seleccionar el rango fila/Columna con datos. Desde celda A1
    lastCol = ActiveSheet.Range("A1").End(xlToRight).Column
    lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
    ActiveSheet.Range("A1:" & ActiveSheet.Cells(lastRow, lastCol).Address).Select

    ' Copiamos el rango
    Selection.Copy

    ' Indicar el libro destino donde pegar
    Windows("Destino.xlsx").Activate

    ' Indicar la hoja de destino donde pegar
    Sheets("Hoja1").Select

    ' Indicar la celda donde pegar los datos
    Range("A1").Select

    ' Para pegar sólo como valor
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

    ' Para pegar el formato (si se desea)
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

    ' Cancela el borde seleccionado al copiar
    Application.CutCopyMode = False

    ' Al finalizar el pegado se coloca en celda A1 por si hay muchas filas para que no quede abajo
    Range("A1").Select

    ' SI queremos que nos confirme la importación
    MsgBox "Los datos han sido copiado correctamente."

    End Sub

    - Aplicar el nombre para el libro origen, libro destino, hoja origen y hoja destino.
    - Sobre el código básico, podemos añadir mejoras como borrar los datos del destino antes de pegarlos, etc.

  5. Guardar el libro con la extensión *.xlsm. Libro habilitado para macros.

  • EJECUTAR LA MACRO
  1. Abrir el libro deseado al que pegar el rango ("Destino.xlsx"). El libro origen deberá está también abierto ("Origen.xlsx").

  2. Asegurarse que el nombre del libro es el que figura en el código ("Destino.xlsx").

  3. Asegurarse que el nombre de la hoja es el que figura en el código ("Hoja1").

  4. Pulsar la tecla Alt y mantener pulsada / Pulsar la tecla F8. Mostrará la ventana de macro con las macros disponibles.

  5. Ejecutar la macro: "CopiarRango". Macro creada.

  6. Verificar como copia el rango de A1 del libro origen y lo pega en A1 del libro destino.

Nivel de dificultad: Experto VBA-Macros Excel Experto VBA - Macros

2 comentarios en “Macro Excel para copiar rango de datos entre libros abiertos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.