



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

- CREAR MACRO
Abrir el libro que contiene los datos ("Origen.xlsm").
Pulsar la tecla Alt y mantener pulsada
Pulsar la tecla F11. Mostrará el editor de Visual Basic.
Ir a: Barra de Menú
Insertar
Módulo. Mostrará la ventana del módulo donde escribimos la macro.
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.Guardar el libro con la extensión *.xlsm. Libro habilitado para macros.
- EJECUTAR LA MACRO
Abrir el libro deseado al que pegar el rango ("Destino.xlsx"). El libro origen deberá está también abierto ("Origen.xlsx").
Asegurarse que el nombre del libro es el que figura en el código ("Destino.xlsx").
Asegurarse que el nombre de la hoja es el que figura en el código ("Hoja1").
Pulsar la tecla Alt y mantener pulsada
Pulsar la tecla F8. Mostrará la ventana de macro con las macros disponibles.
Ejecutar la macro: "CopiarRango". Macro creada.
Verificar como copia el rango de A1 del libro origen y lo pega en A1 del libro destino.


Hola
Necesito pegar datos debajo de lo que ya fue pegado en una ocasión anterior.
Como puedo hacerlo si cada día necesito copiar esos datos pero sin perder lo copiado antes?
Gracias
Hola Rigoberto,
La única solución es mediante una macro.
Saludos.
Muy útil. Funciona de maravillas y todo comentado de manera que hasta uno lo entiende 🙂
Hola.
Al ejecutar el Macro aparece el error "Subíndice fuera del intervalo"
¡Alguna sugerencia para quitar este problema.
Gracias.
Hola José,
Revisa el código para que coincida con el indicado.
Saludos.
Hola, como estás. Agradezco de antemano el aporte del código de la Macro.
Al respecto, si al copiar de una hoja a otra, quisieras que se copien sólo ciertas filas, de acuerdo a una condición (si o no), cual sería el código.
Desde ya, muchas gracias!!
Saludos
Gregorio
Buenos días, necesito copiar los datos de una semana, cuya rango varía en dichas hojas, de varias hojas y pegarlos en una tercera dependiendo si es lunes y no se ha trabajado ni sábado ni domingo que me copies dichos datos en el viernes.
Gracias de antemano, un saludo
Hola Ignacio,
La única solución es por macros.
Saludos.