2008-09-04 2 views
2

Scenerio: Dokumentbibliothek in SharePoint mit Spalte x des Typs "Person or Group". In einem VBA-Makro (oder VSTO-Add-In) versuchen wir, auf die MetaProperty im Dokument zuzugreifen, um den Benutzernamen festzulegen/abzurufen. Jeder Versuch, über die ContentTypeProperties-Auflistung auf den Wert zuzugreifen, löst einen Type MisMatch-Fehler aus (13).Wie lese/schreibe ich Metadaten von Personen aus einem Word-Dokument, das in SharePoint mit VBA oder VSTO gespeichert ist?

Die Type-Eigenschaft des MetaProperty-Objekts lautet "msoMetaPropertyTypeUser". Ich kann keine Beispiele finden, wie man mit MetaProperties dieses Typs arbeitet. Hat jemand damit Erfahrung?

Danke!

Antwort

1

sollten Sie in der Lage sein, genau wie dieser, etwas zu tun:

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"; 
      } 
     } 
    } 

Alle Metadaten für ein Dokument sollte durch die Indizierung der Spaltenname des SPListItem zur Verfügung.

+0

Um eine Variable vom Typ SPSite zu definieren, wo finde ich die DLL, die ich zuerst referenzieren muss? – ChadD

+0

Microsoft.SharePoint.dll. Es sollte in der GAC auf einem Computer mit SharePoint installiert sein. Ich habe auch eine Kopie davon im Ordner C: \ Programme \ Gemeinsame Dateien \ Microsoft Shared \ Web Server Extensions \ 12 \ ISAPI gefunden. –

1

Ich habe es getan. Der Trick hier ist tatsächlich zu wissen, dass, wenn Sie eine Zeichenfolge, die den Benutzerindex in MOSS-Benutzer in der benutzerdefinierten Eigenschaft des Word-Dokuments, MOSS wird es erkennen und finden Sie den entsprechenden Benutzer das Feld zuordnen.

so müssen Sie nur aufrufen http: ///_vti_bin/usergroup.asmx Verwenden Sie die Funktion GetUserInfo und rufen Sie den Benutzerindex (ID) von ihm ab.

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; 
Verwandte Themen