2

hereで説明されているようにアドレス帳を作成しましたが、それは魅力のように機能します。次に、アクセスしたいと思います-最初に存在するかどうかを確認し(逆の場合は作成します)、次に参照します。

私の現在のコードは、不足している名前フォルダーを検出するために依存していExceptionますが、これは私の見解では醜い回避策です。たとえば、などのような、よりきちんとした方法は見つかりませんでした.DoesFolderExist。どうすれば改善できるのか、アドバイスをいただきたいです。

Outlook.Folder contacts = 
  this.Application.Session.GetDefaultFolder(
    Outlook.OlDefaultFolders.olFolderContacts) as Outlook.Folder;
Outlook.Folder addressBook = null;

try { addressBook = contacts.Folders["My AB"] as Outlook.Folder; }
catch (Exception) { }

if (addressBook == null)
{
    addressBook = contacts.Folders.Add("My AB", 
      Outlook.OlDefaultFolders.olFolderContacts) as Outlook.Folder;
    addressBook.ShowAsOutlookAB = true;
}

this.Application.Session.GetFolderFromID(...)代わりに使用する必要がありますか?問題は、アドレス帳の名前 (持っている) とストア ID (持っていない) の両方を指定する必要があることです。私はそこに行きたくありませんが、メソッドの構文は、GetFolderFromID名前が同じであるが異なるストアに配置されている 2 つの異なるアドレス帳が存在する可能性があることを示唆しています。そうですか、それともcontact.Folder["name"]上記で十分ですか?

4

1 に答える 1

3

Foldertry/catch ステートメント アプローチを使用できますが、より良い方法は、例外とパフォーマンス ヒットを回避するために、それぞれを反復処理することです。

Outlook.Folders contactFolders = contacts.Folders;
if (contactFolders.Cast<Outlook.Folder>()
  .Where(c => c.Name == "My AB").Count() > 0)
    addressBook = contactFolders["My AB"] as Outlook.Folder;
于 2012-09-07T14:05:02.347 に答える