使用VBA从Excel表导入Sharepoint 2010列表数据

使用VBA从Excel表导入Sharepoint 2010列表数据,excel,list,vba,sharepoint,Excel,List,Vba,Sharepoint,我学习了如何仅使用VBA简单宏将sharepoint列表中的数据收集到Excel中 现在,我想用另一种方法——只使用VBA更新Excel文件中的一些列表,并将它们发送回sharepoint以更新列表 这可能吗?如果可能,如何实现 谢谢 不是你问题的答案,但可能很有趣。您可以使用PowerQuery从Sharepoint列表中提取数据,是。您可以使用Microsoft的XML SDK提供的对象以及SharePoint提供的UpdateListEMS web服务来更新一个或多个项目。在Visual

我学习了如何仅使用VBA简单宏将sharepoint列表中的数据收集到Excel中

现在,我想用另一种方法——只使用VBA更新Excel文件中的一些列表,并将它们发送回sharepoint以更新列表

这可能吗?如果可能,如何实现

谢谢

不是你问题的答案,但可能很有趣。您可以使用PowerQuery从Sharepoint列表中提取数据,

是。您可以使用Microsoft的XML SDK提供的对象以及SharePoint提供的UpdateListEMS web服务来更新一个或多个项目。在VisualBasic编辑器的“工具->引用”菜单中添加对“MicrosoftXML,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
Dim objXMLHTTP作为MSXML2.XMLHTTP
将strListNameOrGuid设置为字符串
作为字符串的Dim strBatchXml
作为字符串的Dim strSoapBody
设置objXMLHTTP=New MSXML2.XMLHTTP
strListNameOrGuid=“我的列表名或GUID”
'删除内部ID为“1”的项目'
strBatchXml=“1”
objXMLHTTP.Open“POST”http://myserver/mysite/_vti_bin/Lists.asmx”“错
objXMLHTTP.setRequestHeader“内容类型”、“文本/xml;字符集=”“UTF-8”
objXMLHTTP.setRequestHeader“SOAPAction”http://schemas.microsoft.com/sharepoint/soap/UpdateListItems"
strsoapody=“”&strListNameOrGuid_
&“”&strBatchXml&“
objXMLHTTP.send strsoapody
如果objXMLHTTP.Status=200,则
“做些有反应的事情
如果结束
设置objXMLHTTP=Nothing

您可以阅读更多有关
更新列表的语法以及批处理XML的结构的信息。

我试图通过此脚本将新数据输入sharepoint列表,但在尝试更新未更新的字段时遇到问题。多行文本字段不适用于此脚本。您知道解决方案是什么吗?我已经能够将上面的代码用于多行文本字段。可能还有其他事情发生,所以您可能希望共享一段代码片段。至于其他数据类型,如果有查找字段,则在设置其值时需要存储该查找字段的数值。我使用以下组合添加要填充的字段:“”“&“12345”&”“,而“Number”是列名,“12345”是值。如果列名引用的列不是常规文本列,那么它对我来说根本不起作用。找到了Person的问题-需要Person ID而不是名称。当把ID而不是名字放进去的时候,它起了作用。