Je suis en train de construire une fonction VBA qui mettra à jour une valeur dans une liste de Sharepoint:Comment gérer l'erreur "Opération annulée" lors de l'envoi de la mise à jour de la liste via Sharepoint REST?
Sub testUpdate()
Dim XmlHttp As MSXML2.XMLHTTP60
Dim result As String
Dim url As String
Dim body As String
Dim RequestDigest As String
Set XmlHttp = New MSXML2.XMLHTTP60
url = "https://sps.utility.xyz.com/sites/xyz/_api/web/lists/GetByTitle('REST Test List')/items(1)"
RequestDigest = GetDigest("https://sps.utility.xyz.com/sites/xyz")
body = "{ '__metadata': { 'type': 'SP.Data.REST_x0020_Test_x0020_ListListItem' }, 'Title': 'updating item with new title'}"
XmlHttp.Open "POST", url, False
XmlHttp.setRequestHeader "IF-MATCH", "*"
XmlHttp.setRequestHeader "accept", "application/json;odata=verbose"
XmlHttp.setRequestHeader "content-type", "application/json;odata=verbose"
XmlHttp.setRequestHeader "X-Http-Method", "MERGE"
XmlHttp.setRequestHeader "X-RequestDigest", RequestDigest
XmlHttp.setRequestHeader "Content-Length", Len(body)
XmlHttp.Send body
result = XmlHttp.responseText
End Sub
Function GetDigest(url As String)
Dim oHttp As New MSXML2.XMLHTTP60
Dim s As String
Dim l1 As Long
Dim l2 As Long
With oHttp
.Open "POST", url + "/_api/contextinfo", False
.setRequestHeader "content-type", "application/json;odata=verbose"
.Send ""
End With
s = oHttp.responseText
l1 = InStr(1, s, "FormDigestValue")
If l1 > 10 Then
l1 = l1 + 16
l2 = InStr(l1, s, "</d:FormDigestValue")
End If
If l2 > 10 Then GetDigest = Mid$(s, l1, l2 - l1)
Set oHttp = Nothing
End Function
Mais quand testUpdate
arrive à la ligne:
XmlHttp.Send body
il jette cette erreur:
Run-time error '-2147467260 (80004004)':
Operation aborted
Malgré l'erreur, la mise à jour réussit - la valeur du titre de l'élément de liste change.
Est-il prudent pour moi de gérer simplement cette exception et de contourner l'erreur, ou est-ce qu'il indique qu'il y a un vrai problème que j'ai besoin de résoudre?
je viens de lire ce post .... https://stackoverflow.com/questions/46247627/excel-vba-send-to-msxml2- xmlhttp-does-not-work ... peut-être essayer d'utiliser 'MSXML2.ServerXMLHTTP60' – jsotola
@jsotola, j'ai essayé d'utiliser' ServerXMLHTTP60' à la place, mais j'ai reçu une erreur '401 Unauthorized' et la mise à jour n'a pas été transmise . – sigil
semble que le serveur peut nécessiter des informations d'identification de connexion – jsotola