1

コレクションを反復処理して、ユーザーがアクセスできるすべての連絡先フォルダーを見つけるコードがありますApplication.Session.Stores

これは、ユーザーの連絡先とすべての公開連絡先フォルダーに対して機能します。また、ユーザーが [ツール] -> [アカウント設定...] メニュー コマンドを使用して追加した追加のメールボックス アカウント内のすべての連絡先フォルダーも検索します。

ただし、これには、ユーザーが他のユーザーのアカウントに完全にアクセスできる必要があります。ユーザーが別の人の連絡先にしかアクセスできない場合、その人の連絡先は [連絡先] ビューの [人の連絡先] グループに表示されます。の下に表示されない連絡先フォルダーを見つけるにはどうすればよいSession.Storesですか?

完全なメールボックスへのアクセスを追加せずに他のユーザーの連絡先フォルダーを表示するには、Outlook メニューから [ファイル] -> [開く] -> [他のユーザーのフォルダー...] をクリックします。ダイアログ ボックスで、他のユーザーの名前を入力し、[Contactsフォルダーの種類] ドロップダウン リストから選択します。

これは、すべてのユーザーの Outlook 連絡先フォルダーのリストを検索するために使用しているコード (エラー チェックとログを除く) です。これは、型への早期バインディングを使用して実行できる (そして実行する必要がある) ことはわかってOutlook.Applicationいますが、それは結果には影響しません。EnumerateFoldersすべてのサブフォルダーを検索するように再帰的です。

Dim folderList = New Dictionary(Of String, String)
Dim outlookApp = CreateObject(Class:="Outlook.Application")
For Each store As Object In outlookApp.Session.Stores
    EnumerateFolders(folderList, store.GetRootFolder)
Next

Private Sub EnumerateFolders(ByRef folderList As Dictionary(Of String, String), ByVal folder As Object)
    Try
        If folder.DefaultItemType = 2 Then
            folderList.Add(folder.EntryID, folder.FolderPath.Substring(2))
        End If

        For Each subFolder As Object In folder.Folders
            EnumerateFolders(folderList, subFolder)
        Next
    Catch ex As Exception

    End Try
End Sub
4

1 に答える 1

2

ここでは何の回答も得られなかったので (実際にこの件で Tumbleweed バッジを獲得しました)、msdn フォーラムでこの質問をしました。

http://social.msdn.microsoft.com/Forums/en-US/outlookdev/thread/9edb0bdf-a7cb-451b-b1b4-99c6ec1f8214/

答えは次のとおりです。

Outlook 2007 以降では、ナビゲーション ウィンドウを使用します。概要については、http://msdn.microsoft.com/en-us/library/bb206757.aspxを参照してください。http://msdn.microsoft.com/en-us/library/bb176429.aspxのサンプルは、Calendar モジュール内のすべてのナビゲーション グループを反復処理する方法を示しています。各 NavigationFolder には、他のユーザーのメールボックス (または他のストア) から実際のフォルダーを返す Folder オブジェクト プロパティがあります。

これにより、ユーザーがアクティブに作業しているすべてのフォルダーが取得されます。理論的にアクセスできるすべてのフォルダーが必要な場合は、GAL のエントリを繰り返し、それぞれに対して Namespace.GetSharedDefaultFolder の実行を試みることができます。フォルダーを返せない場合、ユーザーはアクセスできません。

これを見たので、ストア内のすべてのフォルダー内の連絡先フォルダーを検索するのではなく、すべての連絡先フォルダーを見つけるために ContactsModule を使用するつもりだと思います。ずっと速くなるはずです。

于 2010-06-02T17:21:56.417 に答える