Из Excel в Sharepoint SOAP Аутентификация - PullRequest
0 голосов
/ 05 мая 2020

Здравствуйте, я пытаюсь добавить данные в список sharepoint через excel, используя SOAP, но у меня возникают проблемы с аутентификацией, по которым я не могу найти четких инструкций. В частности, я использую этот код:

Sub Add_Item(ListName As String, SharepointUrl As String, ValueVar As String, FieldNameVar As String)
On Error GoTo ErrorMessagec:
Dim objXMLHTTP As MSXML2.XMLHTTP60

Dim strListNameOrGuid As String
Dim strBatchXml As String
Dim strSoapBody As String

Set objXMLHTTP = New MSXML2.XMLHTTP60

strListNameOrGuid = ListName

Dim ws5 As Worksheet
'Add New Item'
Dim SourceLastRow, x As Long
Set ws5 = ThisWorkbook.Worksheets("GenericSheetName")
With ws5
    SourceLastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
End With
strBatchXml = "<Batch OnError='Continue'>"
For x = 7 To SourceLastRow
    strBatchXml = strBatchXml + "<Method ID='2' Cmd='New'><Field Name='ID'/><Field Name='" + FieldNameVar + "'>" + ws5.Range("A" & x).Value + "</Field>" _
    & "</Method>"
Next x
    strBatchXml = strBatchXml + "</Batch>"
    MsgBox strBatchXml
objXMLHTTP.Open "POST", SharepointUrl + "_vti_bin/Lists.asmx", False
objXMLHTTP.SetRequestHeader "Content-Type", "text/xml; charset=""UTF-8"""
objXMLHTTP.SetRequestHeader "SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems"

strSoapBody = "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " _
 & "xmlns:xsd='http://www.w3.org/2001/XMLSchema' " _
 & "xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body><UpdateListItems " _
 & "xmlns='http://schemas.microsoft.com/sharepoint/soap/'><listName>" & strListNameOrGuid _
 & "</listName><updates>" & strBatchXml & "</updates></UpdateListItems></soap:Body></soap:Envelope>"

objXMLHTTP.Send strSoapBody

If objXMLHTTP.Status = 200 Then
     'Do something with response
    MsgBox "Happy Days!"
Else
    MsgBox objXMLHTTP.Status
End If
'If objXMLHTTP.Status = 200 Then // 'returns objXMLHTTP.Status = 400 here
'//' something code
'End If

'set objXMLHTTP = Nothing
Exit Sub
ErrorMessagec:
     MsgBox Err
     MsgBox Err.Description
End Sub

Основная информация упоминалась в нескольких местах в inte rnet, например здесь: Добавление данных в список Sharepoint 2013 из Excel с помощью VBA и https://sharepoint.stackexchange.com/questions/93181/add-and-update-single-item-in-sharepoint-list-via-vba

Функция просто должна добавлять таблицу в список sharepoint каждый раз, когда вы запускаете функцию, для ведения записей. В результате проблема в том, что всякий раз, когда я запускаю эту функцию, я получаю ошибку 500, которая, как мне кажется, является проблемой аутентификации. У меня вопрос: правильно ли я сделал это предположение, и если да, то какую аутентификацию мне нужно реализовать?

Я использую sharepoint 2016, если это важно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...