В даний час я використовую VBA для оновлення / створення нових елементів списку спільних точок доступу через SOAP.
Мій відділ ІТ повідомив, що вони переходять на SharePoint Online, і той самий код більше не працює, я вважаю, через різні процеси аутентифікації.
Я витратив близько чотирьох днів, намагаючись знайти альтернативне рішення для o365 через VBA, але, на жаль, мені не пощастило.
Я сподіваюся, що хтось там може допомогти, я включив свій оригінальний код VBA / SOAP як орієнтир на те, що я намагаюся копіювати.
Велике спасибі, Рісс
Sub addItemtoList()
Dim LISTNAME As String
Dim SharepointUrl As String
Dim ValueVar As String
Dim FieldNameVar As String
Dim CurUserName As String, CurPassword As String
CurUserName = "user.name"
CurPassword = "password123"
LISTNAME = "SharepointlistName" 'Or Guild
SharepointUrl = "https://xxxxxxxx.sharepoint.com/sites/au/finance/xxxxxx/"
ValueVar = "Testing Value Add"
FieldNameVar = "'Title'"
Dim objXMLHTTP As MSXML2.XMLHTTP
Dim strListNameOrGuid As String
Dim strBatchXml As String
Dim strSoapBody As String
Set objXMLHTTP = New MSXML2.XMLHTTP
strListNameOrGuid = LISTNAME
'Add New Item'
strBatchXml = "<Batch OnError='Continue'><Method ID='1' Cmd='New'><Field Name='ID'>New</Field><Field Name=" + FieldNameVar + ">" + ValueVar + "</Field></Method></Batch>"
objXMLHTTP.Open "POST", SharepointUrl + "_vti_bin/Lists.asmx", False, CurUserName, CurPassword
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
End If
Set objXMLHTTP = Nothing
End Sub