Hola a todos!
Como mencioné hace varios meses en LinkedIn, voy a publicar una nueva entrada hablando sobre la posibilidad de enviar información de Excel a SharePoint.
No se trata de enviar una tabla a SharePoint y actualizar esos datos, que eso lo podéis hacer perfectamente utilizando el botón de Exportar de la pestaña Diseño de tabla:

Se trata de enviar información a una lista de SharePoint y poder actualizarla directamente con programación, lo que nos permitirá añadir parámetros específicos a nuestro proceso y también que varios usuarios puedan ejecutar a la vez la misma macro y enviar información a la misma lista con mayor facilidad.
Por lo tanto vamos a trabajar con rangos y no con tablas. Esta sería la información que queremos enviar a SharePoint:

El siguiente paso es crear una lista en SharePoint, en este ejemplo el nombre de nuestra lista será «MiLista» y la voy a crear dentro de un espacio llamado PRUEBAS:

El siguiente paso es ejecutar la macro que he programado:
Option Explicit
Sub ENVIAR_DATOS_SHAREPOINT()
Dim Dataread As ADODB.Recordset
Dim rst As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim cnt As ADODB.Connection
Dim obSQL As String
Dim mySQL As String
Dim milibro As String
'leemos datos de la hoja y grabamos información en el recorset
obSQL = "SELECT * FROM [BASE$]"
milibro = ThisWorkbook.Name
Set cnn = New ADODB.Connection
With cnn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "DATA SOURCE=" & Application.ActiveWorkbook.Path + "\" & milibro
.Properties("Extended Properties") = "Excel 8.0"
.Open
End With
Set Dataread = New ADODB.Recordset
With Dataread
.Source = obSQL
.ActiveConnection = cnn
.CursorLocation = adUseClient
.CursorType = adOpenForwardOnly
.LockType = adLockReadOnly
.Open
End With
'Conectamos con la lista de sharepoint y pasamos la información
mySQL = "SELECT * FROM [MiLista];"
Set cnt = New ADODB.Connection
With cnt
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE=https://excelsignum.sharepoint.com/sites/PRUEBAS/;LIST={C2EF165C-2582-4C93-A7C8-6676D5582D7D};"
.Open
End With
Set rst = New ADODB.Recordset
rst.Open mySQL, cnt, adOpenDynamic, adLockOptimistic
Do Until Dataread.EOF
rst.AddNew
rst.Fields("EMPLE_ID") = Dataread.Fields("EMPLE_ID")
rst.Fields("NOMBRE COMPLETO") = Dataread.Fields("NOMBRE COMPLETO")
rst.Fields("SECCIÓN") = Dataread.Fields("SECCIÓN")
rst.Fields("NACIMIENTO") = Dataread.Fields("NACIMIENTO")
rst.Fields("GÉNERO") = Dataread.Fields("GÉNERO")
rst.Fields("2 º IDIOMA") = Dataread.Fields("2 º IDIOMA")
rst.Fields("ESTUDIOS") = Dataread.Fields("ESTUDIOS")
rst.Update
Dataread.MoveNext
Loop
rst.Close
Set rst = Nothing
cnt.Close
Set cnt = Nothing
Dataread.Close
Set Dataread = Nothing
cnn.Close
Set cnn = Nothing
End Sub
Ojo, es fundamental extraer el ID de nuestra lista. Para hacerlo podéis consultar en la red y veréis varias formas de hacerlo e incluso alguna web que es capaz de extraer el ID de la URL. Por ejemplo en esta lista la url es: sharepoint.com/sites/PRUEBAS/_layouts/15/ListGeneralSettings.aspx?List=%7BC2EF165C-2582-4C93-A7C8-6676D5582D7D%7D
La parte de verde es la que se modifica para pegar en la macro,(básicamente se elimina el %7B
): C2EF165C-2582-4C93-A7C8-6676D5582D7D.
Una vez que ejecutemos la macro, los datos pasarán directamente a nuestra lista de SharePoint:

Es una forma muy interesante de actualizar nuestras listas de SharePoint. Sin duda espero que sea de vuestro interés.
Como estamos trabajando con ADO es fundamental que activéis la biblioteca en las referencias de VBA.
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies