Excel VBA宏通过SOAP XML向SharePoint多用户列推送数据的格式问题
向SharePoint多用户选择列推送数据的正确格式是:
每个用户采用 UserID;#用户显示名称 的结构,多个用户之间用**分号(;)**直接分隔,且字段值不需要额外添加双引号包裹。
正确示例代码
' 单个用户写法 soapBody = soapBody & "<Field Name=""BUPS_x0020_names"">UserID1;#jdoe@doe.com</Field>" ' 多个用户写法 soapBody = soapBody & "<Field Name=""BUPS_x0020_names"">UserID1;#jdoe@doe.com;UserID2;#bdoe@doe.com</Field>"
你之前尝试失败的原因
- 错误地给整个字段值添加了双引号,导致SharePoint无法正确解析用户结构
- 格式混用(比如仅使用邮箱/显示名称,或分隔符错误)
- 尝试使用XML数组格式(如
<ArrayOfUser>)是不必要的,UpdateListItems接口不支持这种结构
注意事项
- 必须使用SharePoint内部的用户ID(可通过站点的用户信息列表
/_catalogs/users/simple.aspx查看),仅用邮箱或显示名称无法被正确识别 - 确保每个用户的
UserID和显示名称对应匹配 - 字段值前后不要添加多余的空格或引号
你的代码修改示例
将代码中注释的多用户字段部分替换为:
' 正确的多用户列赋值 soapBody = soapBody & "<Field Name=""BUPS_x0020_names"">UserID1;#jdoe@doe.com;UserID2;#bdoe@doe.com</Field>"
内容的提问来源于stack exchange,提问作者Mahi
相关产品推荐
相关产品推荐

