Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBA或VSTO从存储在SharePoint中的Word文档读取/写入人员元数据?_Sharepoint_Vba_Ms Office_Vsto - Fatal编程技术网

使用VBA或VSTO从存储在SharePoint中的Word文档读取/写入人员元数据?

使用VBA或VSTO从存储在SharePoint中的Word文档读取/写入人员元数据?,sharepoint,vba,ms-office,vsto,Sharepoint,Vba,Ms Office,Vsto,场景:SharePoint中x列为“个人或组”类型的文档库。在VBA宏(或VSTO加载项)中,我们试图访问文档上的元属性以设置/获取用户名。任何通过ContentTypeProperties集合访问该值的尝试都会引发 类型不匹配错误(13) MetaProperty对象的Type属性表示它是msoMetaPropertyTypeUser。我找不到任何关于如何使用这种类型的元属性的示例。有人有这方面的经验吗 谢谢 您应该可以这样做: using (SPSite site = new SPS

场景:SharePoint中x列为“个人或组”类型的文档库。在VBA宏(或VSTO加载项)中,我们试图访问文档上的元属性以设置/获取用户名。任何通过ContentTypeProperties集合访问该值的尝试都会引发

类型不匹配错误(13)

MetaProperty对象的Type属性表示它是
msoMetaPropertyTypeUser
。我找不到任何关于如何使用这种类型的元属性的示例。有人有这方面的经验吗


谢谢

您应该可以这样做:

    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的列名来获得。

我做到了

这里的诀窍实际上是要知道,如果将与MOSS users中的用户索引相对应的字符串放在Word文档的自定义属性中,MOSS将识别该字符串并找到相应的用户来映射该字段

所以你只需要打个电话http:///_vti_bin/usergroup.asmx 使用函数GetUserInfo并从中检索用户索引(ID)


为了能够定义SPSite类型的变量,在哪里可以找到需要首先引用的dll?Microsoft.SharePoint.dll。它应该位于安装了SharePoint的计算机上的GAC中。我还在C:\Program Files\Common Files\microsoft shared\Web Server Extensions\12\ISAPI文件夹中找到了它的副本。
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;