3 agosto, 2026

ELIMINAR ELEMENTOS DE UNA LISTA DE SHAREPOINT USANDO ADO CON VBA

Hola a todos!

No es la primera vez que publico sobre ADO y todas las posibilidades que nos ofrece. Una de ellas y que ya mencioné en publicaciones anteriores es la de interactuar con listas de SharePoint.

Y es que con ADO podemos modificar, añadir y eliminar registros en nuestras listas de SP. En el post de hoy os voy a compartir código para poder eliminar registros de una lista según especificaciones.

Dado que ADO lo ejecutamos en VBA vamos a utilizar Excel.

Imaginad esta lista de SP, que vamos a llamar TABLA_PERSONAS y donde en el campo ESTUDIOS tenemos varios valores: FORMACION PROFESIONAL, ESTUDIOS SECUNDARIOS, DIPLOMADOS O LICENCIADOS:

pues bien, tenemos que eliminar todos aquellos registros que sean DIPLOMADOS o ESTUDIOS SECUNDARIOS. Esto, si decidimos utilizar ADO (porque podemos utilizar Automate), lo vamos a lograr ejecutando este código, recordad que tenéis que indicar el ID de la lista en el código:

Sub BORRAR_DATOS_SHAREPOINT()

    Dim rst As ADODB.Recordset
    Dim cnt As ADODB.Connection
    Dim mySQL As String
    Dim respuesta As VbMsgBoxResult

    respuesta = MsgBox("¿Deseas eliminar los registros con estudios DIPLOMADOS o ESTUDIOS SECUNDARIOS?", _
                       vbYesNo + vbQuestion, _
                       "Confirmar borrado")

    If respuesta = vbNo Then
        Exit Sub
    End If

    On Error GoTo ManejoErrores

    mySQL = "SELECT * FROM [BBDD];"

    Set cnt = New ADODB.Connection

    With cnt
        .ConnectionString = _
        "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE=https://b.sharepoint.com/sites/SIGNUM_GROUP/;LIST={Id de la lista};"
        .Open
    End With

    Set rst = New ADODB.Recordset
    rst.Open mySQL, cnt, adOpenKeyset, adLockOptimistic

    Do While Not rst.EOF

        If rst.Fields("ESTUDIOS").Value = "DIPLOMADOS" Or _
           rst.Fields("ESTUDIOS").Value = "ESTUDIOS SECUNDARIOS" Then

            rst.Delete

        End If

        rst.MoveNext

    Loop

    MsgBox "Registros eliminados correctamente.", vbInformation

CerrarTodo:

    If Not rst Is Nothing Then
        If rst.State = 1 Then rst.Close
    End If
    Set rst = Nothing

    If Not cnt Is Nothing Then
        If cnt.State = 1 Then cnt.Close
    End If
    Set cnt = Nothing

    Exit Sub

ManejoErrores:

    MsgBox "Ocurrió un error: " & Err.Description, vbCritical
    Resume CerrarTodo

End Sub

No olvidéis activar las referencias para Active Data Object (ADO) en el editor de VBA.

Una vez que lo hemos ejecutado este es el resultado:

Y esto es todo, espero que sea de utilidad. A veces, tener esto preparado es más rápido que utilizar Automate, pero como todo, va a depender de cada circunstancia.

En otro momento os publico como hacerlo con Automate, aunque tenéis aquí publicaciones similares que podemos modificar para lograrlo con Automate.

Comparte este post

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies