2013-11-21 118 views
1

我學會了如何使用VBA簡單宏將數據從共享點列表收集到Excel中。使用VBA從Excel表導入Sharepoint 2010列表數據

現在我想做另一種方式 - 更新我的Excel文件中的某些列表,並將它們發送回共享點以更新列表,僅使用VBA。

是否可能,如果是 - 如何?

謝謝!

回答

0

enter image description here

不回答你的問題,但也許不夠有趣。您可以使用PowerQuery從Sharepoint列表中提取數據,

1

是的。您可以使用Microsoft XML SDK提供的XMLHttpRequest對象,以及SharePoint提供的UpdateListItems Web服務來更新一個或多個項目。在Visual Basic編輯器的Tools - > References菜單中添加對「Microsoft XML,v6.0」的引用,然後使用類似下面的代碼。

Dim objXMLHTTP As MSXML2.XMLHTTP 

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

Set objXMLHTTP = New MSXML2.XMLHTTP 

strListNameOrGuid = "My List Name or GUID" 

' Delete item with internal ID of "1" 
strBatchXml = "<Batch OnError='Continue'><Method ID='1' Cmd='Delete'><Field Name='ID'>1</Field></Method></Batch>" 

objXMLHTTP.Open "POST", "http://myserver/mysite/_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 
End If 

Set objXMLHTTP = Nothing 

你可以閱讀更多關於UpdateListItems的語法和如何分批XML應該去here的結構。

+0

我設法通過此腳本將新數據輸入到SharePoint列表中,但在嘗試更新不會刺激的字段時遇到問題。多行文本字段不適用於此腳本。你有什麼想法可以解決問題嗎? – user3016795

+0

我已經能夠使用上面的代碼和多行文本字段。也許還有其他事情正在進行,所以你可能想分享一段代碼。關於其他數據類型,如果您有查找字段,則需要在設置其值時存儲該查找字段的數字值。 – ErinsMatthew

+0

我正在使用以下組合來添加要填充的字段:'「」&「12345」&「」'while 「Number」是列名稱,「12345」是值。如果列名引用了不是常規文本列的列,那它根本就不適合我。 – user3016795

相關問題