ELIMINAR REGISTROS EN ACCESS DESDE EXCEL CON VBA

En la entrada anterior hemos comprobado como podemos añadir registros a nuestra base de datos de Access desde Excel, usando VBA y ADO: AÑADIR REGISTROS EN ACCESS DESDE EXCEL CON VBA.

Hoy vamos tratar la manera de eliminar registros en Access desde Excel utilizando la misma técnica. Si tomamos como referencia el ejemplo anterior donde habíamos añadido a nuestra base de datos 3 registros nuevos (en rojo).

ELIMINAR REGISTROS EN ACCESS DESDE EXCEL CON VBA3

Ahora debemos buscar la forma de eliminarlos usando una macro similar a la anterior, pero antes, para proceder al borrado, necesitamos tener la información que vamos a borrar en nuestra hoja Excel, así:

ELIMINAR REGISTROS EN ACCESS DESDE EXCEL CON VBA2

Y ahora procedemos a escribir este código en nuestro editor de VBA:

Sub DeleteAccess()
Dim conAccess As ADODB.Connection
Dim Destino As String
Dim conExcel As String, obSQL As String
Dim Origen As String
Dim i As Double
'Nombramos las tablas con las que vamos a trabajar
Destino = "[TRABAJADORES]"
Origen = "[EMPLEADOS$]"
Fin = Application.CountA(Range("A:A"))
'iniciamos un bucle que recorra la hoja Empleados (columna A) cada registro que queremos eliminar
For i = 2 To Fin
'Indicamos la conexión Excel
conExcel = "[Excel 8.0;HDR=Yes;DATABASE=F:\COMPAÑIA.xls]." & Origen
'construimos la sentencia SQL, que eliminará cada registro indicado en la variable "i"
obSQL = "DELETE * FROM " & Destino & " WHERE " & Destino & ".Id = " & Cells(i, 1)
'Conectamos con la base de datos de Access y eliminamos
Set conAccess = New ADODB.Connection
With conAccess
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=F:\EMPRESA.accdb;"
.Open
.Execute obSQL
.Close
End With
'iniciamos siguiente bucle
Next i
End Sub

A diferencia de la macro que añadía registros, en esta ocasión he tenido que incorporar un bucle, el motivo es que para eliminar un registro, debemos especificar de cual se trata, en este caso es un Id, pero si se trata de varios no nos serviría el “Where”, a no ser que hagamos referencia a una variable en bucle, de modo que por cada ciclo, identificará el registro a eliminar desde nuestra hoja de excel.

Si solo vais a eliminar un registro, bastaría con que hicieseis referencia a un celda (donde estaría el Id a eliminar) y podríais eliminar el bucle. Pero como creo que lo más normal es que se se tengan que eliminar varios registros, el ejemplo será con bucle.

Una vez que ejecutamos la macro, los registros elegidos se eliminarán

ELIMINAR REGISTROS EN ACCESS DESDE EXCEL CON VBA

Por último, para la macro funcione, una vez insertada la macro nuestro editor de VBA debéis marcar en la biblioteca de referencias: Microsoft ActiveX Data Objects 2.8 Library

Y con esto ya tenemos nuestra macro para eliminar registros en Access desde Excel 🙂

Descarga el archivo de ejemplo pulsando en: ELIMINAR REGISTROS EN ACCESS DESDE EXCEL CON VBA

Anuncios

Un pensamiento en “ELIMINAR REGISTROS EN ACCESS DESDE EXCEL CON VBA

  1. Pingback: AÑADIR REGISTROS EN ACCESS DESDE EXCEL CON VBA | Excel Signum

¿Te ha gustado?. Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s