これは、私が投稿した他の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
繰り返しますが、このコードは、MSSoap3.0を登録したローカルマシンで正常に機能します。たぶん、MSSOAP30.DLL参照を参照するだけでは、SoapClient30
オブジェクトを適切に定義するのに十分ではありませんか?\ MSSoap \ Binariesフォルダーには他にも多くのDLLがあることがわかりましたが、それらすべてへの参照も含める必要がありますか?