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