1

Excel 2010 でマクロを使用して SharePoint リストを更新しようとしています。これまでのところ、通常のテキスト フィールドまたは数値フィールドの更新に問題はありませんでしたが、ルックアップ フィールドに関しては、エラー 0x80002005 がスローされます。リストから既存のリテラルを単純に使用することはできませんが、適切な構文に関するドキュメントを見つけることはできません。

これが私のVBAコードです。

 Set ObjHTTP = New MSXML2.XMLHTTP
 sURL = "http://SITE_NAME_HERE_vti_bin/lists.asmx?op=UpdateListItems"

 sEnv = "<?xml version=""1.0"" encoding=""utf-8""?>"
 sEnv = sEnv & " <soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" "
 sEnv = sEnv & " xmlns:xsd=""http://www.w3.org/2001/XMLSchema"""
 sEnv = sEnv & " xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">"
 sEnv = sEnv & " <soap:Body>"
 sEnv = sEnv & " <UpdateListItems xmlns=""http://schemas.microsoft.com/sharepoint/soap/"">"
 sEnv = sEnv & " <listName>MYLISTNAME</listName>"
 sEnv = sEnv & " <updates>"
 sEnv = sEnv & " <Batch OnError=""Continue"" ListVersion=""1"">"
 sEnv = sEnv & " <Method ID=""1"" Cmd=""New"">\"


 sEnv = sEnv & " <Field Name=""MYLOOKUPFIELD"">"
 sEnv = sEnv & ""
 sEnv = sEnv & " </Field>"



 sEnv = sEnv & " </Method>"
 sEnv = sEnv & " </Batch>"
 sEnv = sEnv & " </updates>"
 sEnv = sEnv & " </UpdateListItems>"
 sEnv = sEnv & " </soap:Body>"
 sEnv = sEnv & " </soap:Envelope>"

 MsgBox (sEnv)

 ObjHTTP.Open "Post", sURL, True
 ObjHTTP.setRequestHeader "Content-Type", "text/xml"
 ObjHTTP.setRequestHeader "dataType", "   xml"
 ObjHTTP.setRequestHeader "SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems"

 ObjHTTP.send (sEnv)

 Application.Wait (Now + TimeValue("0:00:10"))
 MsgBox (ObjHTTP.responseText)

 Set ObjHTTP = Nothing
 Set xmlDoc = Nothing 
4

1 に答える 1

3

実行GetListItemsしてみると、ルックアップがその値を のエンコード形式で保存することがわかりますID in Source List;#Value in Source List。たとえば、ows_MyLookup="13;#MyValue". を呼び出すときは、この形式で値を渡す必要がありますUpdateListItems

于 2013-08-16T23:32:55.027 に答える