8 junio, 2023

ENVIAR DATOS DE EXCEL A UNA LISTA DE SHAREPOINT CON VBA

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.

Donate Button with Credit Cards

¡¡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

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

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