2011-12-18 11 views
1

誰でも私のOutlookのカスタムフィールドの値を読む方法を教えてもらえますか?Outlookのカスタムフィールドの値を読み取る方法

今私は "UserProperties"と "ItemProperties"を試しました。両方ともエラーを投げている。私のサンプルコードとしては、この答えは、Outlookでの実験を以下に書き直されました事前

答えて

1

Microsoft.Office.Interop.Outlook.Application f = new Microsoft.Office.Interop.Outlook.Application(); 
NameSpace outlookNS = f.GetNamespace("MAPI"); 
MAPIFolder inboxFolder = outlookNS.GetDefaultFolder(OlDefaultFolders.olFolderInbox); 


foreach (object obj in inboxFolder.Items) 
{ 
    MailItem item = obj as MailItem; 
    if (item != null) 
    { 
     Console.WriteLine(item.UserProperties["test"].Value); 
     Console.WriteLine(item.ItemProperties["test"].Value); 
    } 
} 

感謝をたどります。

私のC#はあなたのしていることを知るのに十分ですが、私はまだC#からOutlookにアクセスしようとしていません。

Outlookモデルでは、ItemsItemの両方が使用されます。私はあなたが試みている方法でitemを使うことができるかどうかわかりません。

ユーザープロパティ "test"が存在しない場合、UserPropertiesはエラーをスローします。以下では、存在をテストする方法を示します。ユーザープロパティを追加して、修正されたメールアイテムを保存するのを忘れていますか?

以下は、Outlook VBAからのユーザープロパティへのアクセスを示しています。私は、InterOpモデルが構文と同じようになることを期待しています。私が知っている重要な違い:

  • SetはC#では必須ではありません。
  • Nothingは、nullのVBAに相当します。

変数:

  • のFolderItemは、クラスolMailであることが検証されているフォルダ内のアイテムです。
  • UserPropはUserProperty型です。
  • InxUPは整数型です。

以下は、名前が「TestProp」で、タイプがolTextのユーザープロパティを追加し、その値を「TestPropの値」に設定し、修正されたメールアイテムを保存します。保存せずに、前のステートメントは効果がありません。

With FolderItem 
    Set UserProp = .UserProperties.Add("TestProp", olText) 
    UserProp.Value = "Value for TestProp" 
    .Save 
End with 

以下は、メールアイテムに対するすべてのユーザープロパティの名前と値を直接ウィンドウに出力します。ユーザプロパティ「TestProp」はそうであれば、即時ウィンドウにその値を出力し、存在していること

For InxUP = 1 To .UserProperties.Count 
    Debug.Print " User prop " & InxUP & _ 
         .UserProperties(InxUP).Name & " " & _ 
         .UserProperties(InxUP).Value 
Next 

次のチェック。

Set UserProp = .UserProperties.Find("TestProp") 
    If Not UserProp Is Nothing Then 
    Debug.Print " TestProp " & .UserProperties("TestProp").Value 
End If 

が、これは

を役に立てば幸い
関連する問題