Hola a todos,
En el post anterior os volvía a refrescar como podemos subir elementos a una lista de SharePoint usando ADO con VBA. Y hoy me gustaría ampliar la usabilidad de ADO con otra macro que uso en muchas ocasiones para realizar modificaciones en las listas de SharePoint.
Y es que es complicado si tenemos una lista de SharePoint de 10.000 registros (o más) y queremos modificar uno o varios elementos, por ejemplo, modificar el campo SEXO, donde antes teníamos MUJER, ahora quiero que ponga FEMENINO y si pone HOMBRE, que ponga MASCULINO.
El código completo que vamos a usar es este:
Option Explicit
Sub ModificarDatosSharePoint()
Dim cnnSP As ADODB.Connection
Dim rstSP As ADODB.Recordset
Dim sSQL_SP As String
' Conexión a SharePoint
sSQL_SP = "SELECT * FROM [MiLista]"
Set cnnSP = New ADODB.Connection
With cnnSP
.ConnectionString = _
"Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;" & _
"DATABASE=https://miBase.sharepoint.com/sites/SIGNUM_GROUP/;" & _
"LIST={948c9e84-1687-47ac-883b-ec0ac6ca9b97};"
.Open
End With
Set rstSP = New ADODB.Recordset
rstSP.Open sSQL_SP, cnnSP, adOpenDynamic, adLockOptimistic
' Recorremos los elementos de la lista y modificamos el campo SEXO
Do Until rstSP.EOF
If rstSP.Fields("SEXO").Value = "HOMBRE" Then
rstSP.Fields("SEXO").Value = "MASCULINO"
ElseIf rstSP.Fields("SEXO").Value = "MUJER" Then
rstSP.Fields("SEXO").Value = "FEMENINO"
End If
rstSP.Update
rstSP.MoveNext
Loop
' Cerrar conexiones
rstSP.Close: Set rstSP = Nothing
cnnSP.Close: Set cnnSP = Nothing
MsgBox "Los datos han sido actualizados en la lista de SharePoint.", vbInformation, "Proceso completado"
End Sub
En este caso lo solucionamos usando un condicional, pero podríamos introducir todo tipo de funciones.
De esta forma no tendremos que eliminar la lista (con todas las complicaciones que conlleva), sino que la modificamos.
Y esto es todo, espero que sea de utilidad!

