这是参考我发布的另外两个 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,我是否还需要包含对所有这些的引用?