2008-09-04 15 views
2

Scenerio:列xが "Person or Group"タイプの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 shared¥Web Server Extensions¥12¥ISAPIフォルダにそのコピーがあります。 –

1

私はそれをしました。

ここで実際には、MOSSユーザーのユーザーインデックスに対応する文字列をWord文書のカスタムプロパティに入れると、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; 
関連する問題