5 febrero, 2025

SUBIR DATOS A UNA LISTA DE SHAREPOINT USANDO VBA

Hola a todos,

Como sabéis, una de las fuentes de datos más usadas con Power Apps es SharePoint. Y para ello utilizamos listas de SharePoint. Y, para subir los datos lo podemos hacer de varias formas. Por una parte podemos importar la información desde SharePoint o subirla directamente desde Excel, lo que va a crear la lista directamente con toda la información:

Desde SharePoint:


Desde Excel, pulsando en los datos en formato de tabla:

Y luego hay otras dos formas de subir la información, pero previamente debemos haber creado la lista con los campos que vamos a usar y ya podremos realizar la subida de los datos.

Usando un flujo de Power Automate, por ejemplo con el API: GRABAR LISTA CON POWER AUTOMATE USANDO EL API DE SHAREPOINT

O usando código con VBA. Y el código que vamos a usar es el siguiente:

Option Explicit

Sub EnviarDatosSharePoint()
    Dim cnnExcel    As ADODB.Connection
    Dim rstExcel    As ADODB.Recordset
    
    Dim cnnSP       As ADODB.Connection
    Dim rstSP       As ADODB.Recordset
    
    Dim sSQL_Excel  As String
    Dim sSQL_SP     As String
    
    'Cadena de conexión y SQL de la hoja Excel:
    sSQL_Excel = "SELECT * FROM [Hoja1$]"
    Set cnnExcel = New ADODB.Connection
    With cnnExcel
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionString = "Data Source=" & ThisWorkbook.FullName
        .Properties("Extended Properties") = "Excel 12.0;HDR=Yes;"
        .Open
    End With
    
    Set rstExcel = New ADODB.Recordset
    rstExcel.Open sSQL_Excel, cnnExcel, adOpenForwardOnly, adLockReadOnly
    
    'Cadena de conexión
    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://miRed.sharepoint.com/sites/SIGNUM_GROUP/;" & _
            "LIST={948c9e84-1687-47ac-883b-ec0ac6ca9be7};"
        .Open
    End With
    
    
    Set rstSP = New ADODB.Recordset
    rstSP.Open sSQL_SP, cnnSP, adOpenDynamic, adLockOptimistic
    
    'Añadimos registros
    Do Until rstExcel.EOF
        rstSP.AddNew
        rstSP.Fields("INDICE").Value = rstExcel.Fields("INDICE").Value
        rstSP.Fields("NOMBRE COMPLETO").Value = rstExcel.Fields("NOMBRE COMPLETO").Value
        rstSP.Fields("SECCION").Value = rstExcel.Fields("SECCION").Value
        rstSP.Fields("EDAD").Value = rstExcel.Fields("EDAD").Value
        rstSP.Fields("SEXO").Value = rstExcel.Fields("SEXO").Value
        rstSP.Fields("IDIOMA").Value = rstExcel.Fields("IDIOMA").Value
        rstSP.Fields("ESTUDIOS").Value = rstExcel.Fields("ESTUDIOS").Value
        rstSP.Update
        
        rstExcel.MoveNext
    Loop
    
    'Liberamos
    rstSP.Close:    Set rstSP = Nothing
    cnnSP.Close:    Set cnnSP = Nothing
    
    rstExcel.Close: Set rstExcel = Nothing
    cnnExcel.Close: Set cnnExcel = Nothing
    
    MsgBox "Los datos han sido grabados en la lista de SharePoint.", vbInformation, "Proceso completado"
End Sub

Antes de pegar el código es indispensable activar las referencias en la biblioteca de VBA.

Y luego, en el código, en la primera conexión, indicar el nombre de la hoja.

sSQL_Excel = "SELECT * FROM [Hoja1$]"

Y en la segunda conexión (que es a la lista) indicar la url a la lista y el código de la lista:

With cnnSP
        .ConnectionString = _
            "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;" & _
            "DATABASE=https://miRed.sharepoint.com/sites/SIGNUM_GROUP/;" & _
            "LIST={948c9e84-1687-47ac-883b-ec0ac6ca9be7};"
        .Open
    End With

Luego compondremos la instrucción SQL con la información. Y una vez ejecutada la macro, tendremos la lista completa:

Y esto es todo, espero que sea de utilidad!!

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