Foros del Web » Soporte técnico » Ofimática »

copiar datos sin duplicarlos o solo los nuevos

Estas en el tema de copiar datos sin duplicarlos o solo los nuevos en el foro de Ofimática en Foros del Web. Hola a todos, tengo una duda sobre la elaboracion o cambio que le quiero hacer a mi codigo. Funcion : tengo 3 libros de los ...
  #1 (permalink)  
Antiguo 02/08/2011, 12:21
Avatar de spardante  
Fecha de Ingreso: junio-2009
Ubicación: México
Mensajes: 8
Antigüedad: 14 años, 9 meses
Puntos: 0
copiar datos sin duplicarlos o solo los nuevos

Hola a todos, tengo una duda sobre la elaboracion o cambio que le quiero hacer a mi codigo.

Funcion: tengo 3 libros de los cuales copio informacion de 2 al tercero (resumen) y funciona bien.

Problema: cuando copio los datos de los 2 libros al tercero me copia todos los datos desde el primero, y los datos que se ingresan en esos 2 libros se hace diariamente osea se registran varios datos ya sea uno o diez dependiendo.

Lo que quiero: la funcion seria asi que por ejemplo el dia de hoy se agregaron 4 registros, los copio al libro de resumen, el dia de mañana se agregan 7 registros, aqui seria que como ya estan los 4 del dia anterior solo me copie los nuevos 7 registros sin volverme a copiar los que ya ingrese, si me explico.

Espero su apoyo para ver como realizar este funcion o cambio a mi codigo les dejo el codigo que sirve para copiar los datos del otro libro.

Gracias.

Código PHP:
Sub leer_fichero_excel()

Application.ScreenUpdating False

On Error Resume Next

ruta 
ThisWorkbook.Path
fichero 
"USC.xlsx"

Set Conn = New ADODB.Connection
Conn
.Open "Provider=Microsoft.ACE.OLEDB.12.0;" _
                  
"Data Source=" ruta "\" & fichero & _
                   "
;Extended Properties=""Excel 12.0;HDR=Yes;"""

Set rs = New ADODB.Recordset

Sql = "
SELECT FROM B3:H"

rs.Open Sql, Conn, adOpenStatic, adLockOptimistic


Cells(Rows.Count, "
G").End(xlUp).Offset(, -4).Select


Do While Not rs.EOF
    ActiveCell.Offset(1, 13) = rs(0)
    ActiveCell.Offset(1, 12) = rs(1)
    ActiveCell.Offset(1, 10) = rs(2)
    ActiveCell.Offset(1, 11) = rs(3)
    ActiveCell.Offset(1, 8) = rs(4)
    ActiveCell.Offset(1, 4) = rs(5)

    rs.MoveNext

    ActiveCell.Offset(1, 0).Select
Loop

rs.Close
Conn.Close
Set rs = Nothing
Set Conn = Nothing

Application.ScreenUpdating = True
End Sub 
  #2 (permalink)  
Antiguo 02/08/2011, 14:37
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
copiar datos sin duplicarlos o solo los nuevos

Tienes que identificar -de alguna forma- los registros que ya fueron copiados. Por ejemplo:

a) ¿La copia se hace por fecha?
b) ¿Hay algún Nº correlativo o código que permita identificar al último registro copiado?
c) Si no tienes nada específico (como lo anterior), entonces deberías incorporar una columna adicional a los libros desde donde se entrega la información: "C" (si fue copiado), "en blanco" (si no lo fue aún).

En cualquier caso, todo lo que te menciono afecta la sentencia SQL que ya no será

SELECT *

sino que identificará los datos a copiar.

De todos modos y sin ver el libro que entrega los datos ni el libro que los recibe, no podría profundizar más en el tema.

Saludos, Cacho R.

Etiquetas: dup, macro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:14.