Renseigner une liste Sharepoint à partir de VBA
Bonjour à tous,
J'ai un code VBA dans un word. Je souhaiterais pouvoir renseigner les colonnes d'une liste Sharepoint via une requête VBA avec les variables de mon code.
J'ai ces variables string dans mon code:
- reference
- record_type
j'ai 2 colonnes de Texte dans ma liste Sharepoint:
- Title (à mapper avec la variable référence)
- Record Type (à mapper avec la variable record_type
l'URL de mon site sharepoint est du type:
https://b******1.sharepoint.com/teams/G*********m
Si vous avez des pistes je suis preneur!
Merci++!
1. Trouver le GUID de la liste en question:
a) Aller dans les paramètres de la liste
b) Isoler l'ID de la liste qui se trouve dans l'URL de la page
c) Attention %7B et %7D ne fait pas partie de l'ID, il code des accolades, ici l'ID est {E23D25D8-*****-47CE-*****-DAB14FC92440}
2. Ajouter la référence "Microsoft ActiveX Data Object X.X Library (prendre la version la plus récente)
3. Identifier les nom des colonnes (attention, même renommée, la colonne Title ou Titre s'appellera toujours Title ou Titre
4. Ajouter le code au module (en adaptant avec les valeurs nécessaires)
Sub add_data_sp()
'Déclaration des variables
Dim var_title, var_type As String
Dim adodb_connection As ADODB.Connection
Dim adodb_recordset As ADODB.Recordset
Dim sqlcode As String
'Assignation des variables
Set adodb_connection = New ADODB.Connection
Set adodb_recordset = New ADODB.Recordset
var_title = "ValeurTitre"
var_type = "ValeurType"
sqlcode = "SELECT * FROM [NomDeLaListe];"
'Ouverture de la connexion sur la liste
With adodb_connection
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE=AdresseDuSite;LIST={GUIDdeLaListe};"
.Open
End With
'Ajout du nouveau record
With adodb_recordset
.Open sqlcode, adodb_connection, adOpenDynamic, adLockOptimistic
.AddNew
.Fields("Title") = var_title
.Fields("Record Type") = var_type
.Update
End With
'Fermeture des connexions
If CBool(adodb_recordset.State And adStateOpen) = True Then adodb_recordset.Close
Set adodb_recordset = Nothing
If CBool(adodb_connection.State And adStateOpen) = True Then adodb_connection.Close
Set adodb_connection = Nothing
End SubVoilà je suis en train de voir comment coder pour les colonnes complexes mais pour le texte ça marche super!