2

这是参考我发布的另外两个 SO 问题:使用 VBA 将项目添加到 Sharepoint 列表从 VBA 调用 UpdateListItems

我想根据一些 Excel 计算的结果使用新数据行更新 Sharepoint 列表。我当前的方法是对 Sharepoint 站点的 Web 服务进行 SOAP 调用。我已经使用 SOAP 3.0 库在本地机器上成功完成了这项工作。问题是这是 20-30 个用户之间共享的电子表格,所以我不想要一个要求他们每个人都注册 DLL 的解决方案。

我尝试将 MSSOAP30.DLL 放在与共享电子表格相同的文件夹中,然后通过浏览将其添加为参考。运行以下代码:

Sub test()

Dim soap As MSSOAPLib30.SoapClient30
Dim XMLstr As String
Dim listid As String
Dim listname As String

Set soap = New SoapClient30
Call soap.mssoapinit(par_wsdlfile:="http://wss/mySharepointSite/_vti_bin/lists.asmx?wsdl")


listid = "{e285aa1a-my-list-ID-d446cdbf091e}"
listname = "thisList"

XMLstr ="<Batch OnError='continue' ListVersion='1' ViewName='" & ListView & "'>" & _   
        "<Method ID='1' Cmd='New'>" & _
            "<Field Name='ID'>New</Field>" & _
            "<Field Name='personID'>1337</Field>" & _
        "</Method>"
        "</Batch>"

soap.UpdateListItems listid, XMLstr

End Sub

但是当我运行代码时,soap.UpdateListItems出现以下错误:

Run-time error '-2147221164 (80040154)':

Client:The connector could not be created.  There might be an invalid endPoint specified in the WSDL file HRESULT=0x80040154: Class not registered
-Client:Unspecified client error. HRESULT=0x80040154: Class not registered

同样,这段代码在我注册了 MSSoap 3.0 的本地机器上运行良好。也许浏览到 MSSOAP30.DLL 引用不足以正确定义SoapClient30对象?我看到 \MSSoap\Binaries 文件夹中有很多其他 DLL,我是否还需要包含对所有这些的引用?

4

2 回答 2

1

恐怕虽然它在技术上是可行的(有大量的 Jiggery Pockery - 是的官方技术术语)但尝试使用 COM dll 而不注册它并不可行。

下载到每个客户端的简单脚本会很快注册 dll。

于 2012-06-19T18:53:14.233 回答
0

我在不使用另一个 DLL 的情况下解决了这个问题,只使用了 XMLHTTP POST 操作。解决方案张贴在这里

于 2012-06-20T17:35:28.860 回答