Access - Vba Access

 
Vista:

Vba Access

Publicado por Ernesto (1 intervención) el 13/01/2017 02:35:51
Saludos.
Tengo un formulario en Excel y deseo hacerle un Backup a una determinada Hoja. Para lo cual lo hago con la siguiente macro desde Excel, pero no se como hacer desde la macro de excel para que siempre me inserte en Access a partir del ultimo registro que encuentra en la BD access. Agradezco la ayuda.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Sub BackupDatos()
Dim fila As Long, uf As Long, conta As Long
Dim cn As ADODB.Connection, rs As ADODB.Recordset
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("Datos Clientes").Select
Set a = ActiveSheet
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & "data source=" & ThisWorkbook.Path & "\CLIENTES.accdb;"
rs.Open "Bk_Clientes", cn, adOpenKeyset, adLockOptimistic, adCmdTable
fila = 7
conta = 0
While a.Cells(fila, "B") <> Empty
With rs
 .AddNew
 .Fields("Nº identificación") = Cells(fila, "B")
 .Fields("Nombre_Clientes") = Cells(fila, "C")
 .Fields("N_Cuenta") = Cells(fila, "F")
 .Fields("Direccion") = Cells(fila, "H")
 .Fields("Telefono") = Cells(fila, "I")
/* otros campos*/
 
 .Update
End With
conta = conta + 1
fila = fila + 1
Wend
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
MsgBox ("Se procesaron " & conta & " registros con éxito, se omitieron duplicados"), vbInformation, "AVISO"
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Manuel
Val: 395
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Vba Access

Publicado por Manuel (171 intervenciones) el 14/01/2017 20:58:03
Yo suelo hacerlo al revés (guardar copia en Excel) y así es más fácil con DoCmd.TransferSpreadsheet que te lo da todo hecho (también para importar desde Excel). Pero tal como lo veo tienes varias opciones de hacerlo, por ejemplo:

1- borrar todos los datos que hay y escribirlos de nuevo... es lo más fácil, pero no la mejor opción

2- si hay un campo índice de tipo numérico, pues es cuestión de que con DAO hagas una consulta a Access para que te indique cual es el valor más alto de ese campo escrito, y después buscas en Excel la siguiente entrada y continuas a partir de ahí.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar