2008-09-04 3 views
2

Scenerio : "개인 또는 그룹"유형의 열 x가있는 SharePoint의 문서 라이브러리. VBA 매크로 (또는 VSTO 추가 기능) 내에서 사용자 이름을 설정/가져 오기 위해 문서의 MetaProperty에 액세스하려고합니다. ContentTypeProperties 컬렉션을 통해 값에 액세스하려고하면 Type MisMatch 오류가 발생합니다 (13).VBA 또는 VSTO를 사용하여 SharePoint에 저장된 Word 문서에서 Person 메타 데이터를 읽고 쓰려면 어떻게해야합니까?

MetaProperty 개체의 Type 속성은 "msoMetaPropertyTypeUser"라고 말합니다. 이 유형의 MetaProperties를 사용하는 방법에 대한 예는 찾을 수 없습니다. 누구나이 경험이 있습니까?

감사합니다!

답변

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의 열 이름을 색인하여 사용할 수 있습니다.

+0

SPSite 유형의 변수를 정의하려면 먼저 참조해야하는 DLL을 어디에서 찾을 수 있습니까? – ChadD

+0

Microsoft.SharePoint.dll. SharePoint가 설치된 컴퓨터의 GAC에 있어야합니다. 또한 C : \ Program Files \ Common Files \ Microsoft 공유 \ Web Server Extensions \ 12 \ ISAPI 폴더에 복사본이 있습니다. –

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; 
관련 문제