配布リスト(〜200人を含む)のユーザーの詳細を取得しようとしています。Outlook - 配布リストのメンバーの詳細
新しい電子メールを作成するときに、このDLを唯一の受信者として追加し、以下のマクロを実行すると、〜15の最初の結果が返され、 "OutlookはMicrosoft Exchangeサーバーからデータを取得しようとしています"私は "操作が失敗しました"というエラーが表示されることがあります。
コード実行を続行すると、次の15個の値が返され、この問題が再び表示されます。 Exchangeのスパム対策の制限があるような継ぎ目があります。
Sub GetDetails(olMail As MailItem)
Dim i As Integer, j As Integer
For i = 1 To olMail.Recipients.Count ' count = 1
If olMail.Recipients.Item(i).AddressEntry.GetExchangeUser Is Nothing Then
For j = 1 To olMail.Recipients.Item(i).AddressEntry.Members.Count ' count ~= 200
Debug.Print olMail.Recipients.Item(i).AddressEntry.Members.Item(j).GetExchangeUser.FirstName
Next j
End If
Next i
End Sub
しかし、私は(「+」アイコンを使用して)配布リストを展開して、わずかに変更されたコードを実行した場合、すべてのユーザの結果は問題なく(ほんの数秒を取る)で返されます。
Sub GetDetails(olMail As MailItem)
Dim i As Integer
For i = 1 To olMail.Recipients.Count ' count ~= 200
If Not olMail.Recipients.Item(i).AddressEntry.GetExchangeUser Is Nothing Then
Debug.Print olMail.Recipients.Item(i).AddressEntry.GetExchangeUser.FirstName
End If
Next i
End Sub
はExchangeUserないディストリビューションのリスト上の誰もがあるのでしょうか?あなたの2番目のスニペットはそれを説明しますが、最初のスニペットはそうではありません(それは 'Recipients.Item(1)'を扱いますが、個々の受信者ではありません)。 (これは暗闇の中のただのショットです、私は他のアイデアを持っていません) –
すべては交換ユーザーです。問題は、個々の受取人を介してどのように反復するのか分かりません。 –
WinAPIスリープ関数への呼び出しを100または200ミリ秒間追加することも考えられます。あなたが遭遇しているエラーは、各反復で非常に小さな休止を避けて避けるかもしれない競合/タイムアウトのように見えます。 –