Macro para copiar fila a otra hoja sin sobreescribir

Utilice la macro de la siguiente manera y funciona perfectamente, lo
único es que cuando me copia la información me la sobreescribe y no me
la pega en la siguiente fila que esta libre.
La única diferencia es que cuando coloco PasteSpecial Paste:=xlValues no me ejecuta la macro y sale error, pero cuando dejo PasteSpecial xlPasteAll si funciona pero sobreescribe.

Sub ejemplo_copiado1()
'por luismondelo
Sheets("Abonos").Select
For Each celda In Range("d7:d6000")
If celda.Value = Date Then
celda.EntireRow.Copy
Application.Workbooks.Open("D:\velez2\base_datos.xlsm").Activate
Sheets("Abonos").Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteAll
ActiveWorkbook.Close SaveChanges:=True
End If
Next
Application.CutCopyMode = False
'ActiveWorkbook.Close SaveChanges:=True
End Sub

1 respuesta

Respuesta
1

Has modificado el contenido de mi macro. Es necesario que utilices la que yo te enviado.

Hola Luis, deje la Macro como tu me la enviaste, funciona pero no copia nada. Es decir el libro donde tengo la información se llama usuario1.xlsm y la quiero pasar a otro libro que se llama base_datos.xlsm, no se donde debo colocar estos nombres en tu macro.

Muchas Gracias.

Sub copiado_basedatos6()
'por luismondelo
mio = ActiveWorkbook.Name
Workbooks.Open "D:\velez2\base_datos.xlsm"
otro = ActiveWorkbook.Name
Workbooks(mio).Activate
Sheets("Abonos").Select
For Each celda In Range("d7:W6000")
If celda.Value = Date Then
celda.EntireRow.Copy
Workbooks(otro).Sheets("Abonos").Range("E65000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteAll
End If
Next
Workbooks(otro).Close True
End Sub

¿En qué hoja y en qué rango están ubicados los datos del archivo usuario1.xlsm?

El rango que quiero copiar del libro usuario1.xlsm se encuentarn en la hoja llamada Abonos y rango d7:w6000 y la fecha actual se esta almacenando en la columna d.

Yo te envíe los archivos a tu correo.

Otra pregunta:

¿Cómo se llama la pestaña del archivo destino donde copiamos los datos?

El archivo destino donde se pegan los datos se llama base_datos.xlsm y se pegan en la hoja que se llama Abonos y se pegan en el mismo rango d7:w6000

Te paso la macro que debe funcionar. Esta macro estará contenida en el archivo usuario1.xlsm y el otro archivo, inicialmente, estará cerrado ya que la macro se encarga de abrirlo.

Sub copiado_basedatos()
'por luismondelo
fila =7
mio = activeworkbook.name
Workbooks.Open "D:\velez2\base_datos.xlsm"
otro = activeworkbook.name
workbooks(mio).activate
Sheets("Abonos").Select
for each celda in range("E7:W6000")
if celda.value = date then
celda.entirerow.copy
workbooks(otro).Sheets("Abonos").cells(fila,4).PasteSpecial xlPasteAll
fila = fila+1
end if
next
workbooks(otro).close true
End sub

Luis, agradezco mucho tu colaboración, creo que ya casi nos funciona, pero todavía no me copia la información como quiero.

Te envío una carpeta a tu correo con los dos archivos, uno que se llama usuario1 y otro que se llama base_datos.

En el archivo usuario1 hay dos botones con dos macros ejecútelas y observa lo que pasa.

La idea es copiar las filas que tengan la fecha actual, la cual se almacena en la columna d y que las copie al archivo base_datos.en la primer fila que este libre iniciando en la fila 7, y que ademas no me sobrescriba.

Oberva que el botón que dice opcion1, las copia pero todas una sobre la otra y no en la otra fila.

Los dos archivos son idénticos.

Esta es la macro definitiva que funciona perfectamente. Tiene que estar ubicada en el archivo usuario1.xlsm. El archivo base_datos.xlsm tiene que estar cerrado inicialmente para que la macro lo abra por su cuenta.

Sub copiado()
'por luismondelo
mio = ActiveWorkbook.Name
Workbooks.Open "D:\prueba\base_datos.xlsm"
otro = ActiveWorkbook.Name
Workbooks(mio).Activate
Sheets("Abonos").Select
For Each celda In Range("d7:d6000")
If celda.Value = Date Then
Range(celda, celda.Offset(0, 10)).Copy
Workbooks(otro).Sheets("Abonos").Range("d65000").End(xlUp).Offset(1, 0).PasteSpecial xlValues
End If
Next
Workbooks(otro).Close True
End Sub

recuerda finalizar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas