【问题标题】:Import Sharepoint 2010 list data from Excel table using VBA使用 VBA 从 Excel 表中导入 Sharepoint 2010 列表数据
【发布时间】:2013-11-21 09:23:38
【问题描述】:

我已经学会了如何仅使用 VBA 简单宏将数据从共享点列表收集到 Excel 中。

现在我想换一种方式 - 更新我的 Excel 文件中的一些列表,然后将它们发送回 sharepoint 以更新列表,仅使用 VBA。

这可能吗?如果可以,怎么做?

谢谢!

【问题讨论】:

    标签: excel list vba 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
    

    您可以通过转到here 阅读更多关于UpdateListItems 的语法以及批处理XML 的结构。

    【讨论】:

    • 我设法通过此脚本将新数据输入到共享点列表中,但在尝试更新不刺激的字段时遇到问题。多行文本字段不适用于此脚本。你知道什么是解决方案吗?
    • 我已经能够将上述代码与多行文本字段一起使用。也许还有其他事情发生,所以你可能想分享一个代码 sn-p。对于其他数据类型,如果你有一个 Lookup 字段,你需要在设置它的值时存储该 Lookup 字段的数值。
    • 我正在使用以下组合来添加要填充的字段:'"" & "12345 " & ""' 而 "Number" 是列名, "12345" 是值。如果列名引用的列不是常规文本列,它根本不适合我。
    • 发现人员的问题 - 需要人员 ID 而不是名称。当放置 ID 而不是名称时 - 它适用。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 2011-09-15
      相关资源
      最近更新 更多