2

これは、私が投稿した他の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があることがわかりましたが、それらすべてへの参照も含める必要がありますか?

4

2 に答える 2

1

技術的には可能ですが(かなりの量のJiggery Pockery-はい、公式の専門用語です)、登録せずにCOMdllを使用しようとすることは実際には実行可能ではありません。

各クライアントにダウンロードされた単純なスクリプトは、dllを非常に迅速に登録します。

于 2012-06-19T18:53:14.233 に答える
0

XMLHTTP POST操作を使用するだけで、別のDLLを使用せずにこれを解決しました。ここに投稿されたソリューション。

于 2012-06-20T17:35:28.860 に答える