일반 정보 : Excel에서 SharePoint 목록을 업데이트 (추가/편집)해야합니다. 내가 ListObject
으로 할 수 있었지만 이것이 우리가 이끌고있는 방향이 아닙니다.Excel-VBA (MSXML2.XMLHTTP 개체)를 사용하여 SharePoint 목록 업데이트
Google의 모든 가능성을 모두 읽은 후 MSXML2.XMLHTTP
개체를 사용하여 SharePoint 목록을 업데이트하는 아이디어와 함께 나왔습니다.
현재 문제 : 내 코드가 끝까지 실행되지 않아 objXMLHTTP.Status = 200
이되지만 SharePoint 목록이 업데이트되지 않습니다.
코드 여기
Option Explicit
Const SharepointUrl As String = "http://share.corning.com/sites/ipp/PMOSandbox/"
Const ListName As String = "{60CE6622-D25B-447A-BFBF-8F3DD5B9FCF0}"
Const VIEWNAME As String = "{91ADBAE5-479F-4C80-A5FF-8EDA7A233B82}"
Sub Add_Item()
Dim objXMLHTTP As MSXML2.XMLHTTP
Dim strListNameOrGuid As String
Dim strBatchXml As String
Dim strSoapBody As String
Dim ValueVar As String, FieldNameVar As String
Set objXMLHTTP = New MSXML2.XMLHTTP
FieldNameVar = "IPP #"
ValueVar = "Shai"
'Add New Item'
strBatchXml = "<Batch OnError='Continue'><Method ID='1' Cmd='New'><Field Name='" + FieldNameVar + "'>1004</Field>" + _
"<Field Name='Title'>Uploaded from VBA</Field>" + _
"<Field Name='Next KD Status'>" + ValueVar + "</Field>" + _
"</Method></Batch>"
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>" & ListName _
& "</listName><updates>" & strBatchXml & "</updates></UpdateListItems></soap:Body></soap:Envelope>"
objXMLHTTP.send strSoapBody
Do
' wait for response
Loop Until objXMLHTTP.Status = 200
Set objXMLHTTP = Nothing
MsgBox "Finished Running !"
End Sub
아마도 ADO를 사용하는 것이 더 나은 옵션일까요? SQL 문으로 테이블을 업데이트 할 수 있습니다. –
@RyanWildry 나는 제안에 대해 개방적이다. 어떻게 구현 하는가? –
ADO와 연결을 참조하십시오. https://www.connectionstrings.com/sharepoint/ Microsoft ACE OLEDB 12.0 부분에서 연결 문자열로 테이블을 업데이트하십시오. 이미 GUID 목록이있는 것 같습니다. 연결을 설정하려면이 목록이 필요합니다. –