方案:SharePoint中的文档库,其中列x为“人员或组”类型。在VBA宏(或VSTO加载项)中,我们尝试访问文档上的MetaProperty来设置/获取用户名。任何通过ContentTypeProperties集合访问该值的尝试都会抛出
输入MisMatch错误(13)。
MetaProperty对象的Type属性表示它是msoMetaPropertyTypeUser
。我找不到任何有关如何使用此类MetaProperties的示例。有人有这方面的经验吗?
谢谢!
答案 0 :(得分:1)
你应该可以做这样的事情:
using (SPSite site = new SPSite("http://yoursite/subsite"))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["DocLibraryName"];
SPListItemCollection items = list.GetItems(list.Views["All Documents"]);
foreach (SPListItem item in items)
{
item["Modified By"] = "Updated Value";
}
}
}
通过索引SPListItem的列名,可以获得文档的任何元数据。
答案 1 :(得分:1)
我做到了。
这里的技巧实际上是要知道如果你在Word文档的自定义属性中的MOSS用户中放置了与用户索引相对应的字符串,MOSS将识别它并找到相应的用户来映射该字段。
所以你只需要调用http:///_vti_bin/usergroup.asmx 使用函数GetUserInfo并从中检索用户索引(ID)。
MOSSusergroup.UserGroup userGroupService = new MOSSusergroup.UserGroup();
userGroupService.Credentials = System.Net.CredentialCache.DefaultCredentials;
System.Xml.XmlNode node = userGroupService.GetUserInfo(userLogin);
string index = node.FirstChild.Attributes["ID"].Value;