我试图获取用户在通讯组列表(包含〜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上的人?你的第二个片段说明了这一点,但它看起来像第一个没有(它处理'Recipients.Item(1)',但*不*单个收件人')。 (这只是一个黑暗中的镜头,我没有任何其他想法) –
所有是交换用户。问题是我不知道如何通过单个收件人遍历它们。 –
一个想法是将呼叫添加到WinAPI睡眠功能100或200毫秒。你得到的错误看起来像是一个冲突/超时类型的事情,你可能会在每次迭代时停留一小段时间。 –