我正在从一些tutorial on MSDN开始学习为Outlook制作一些宏。我有这个挂起Type mismatch
错误的子程序。在Stop
和Resume
之后逐步完成错误处理后,它将返回Next
并完成查询。Outlook联系人项目查询挂起的Outlook分配列表
通过立即查看结果集,一个项目丢失,这实际上是一个分发邮件列表,而不是一个正常的联系人。我将邮件列表从我的联系人中移出以进行测试,但错误未发生。
我的计划还有其他邮件列表,因为这是为了工作。是否有一种解决方法,像某种方式来逃避它,除了将它们保存在其他地方?
下面是代码:
Sub ContactName()
On Error GoTo ErrHandler
Dim ContactsFolder As Folder
Set ContactsFolder = Session.GetDefaultFolder(olFolderContacts)
MsgBox ("Contacts found: " & ContactsFolder.Items.Count)
Dim Contact As ContactItem
For Each Contact In ContactsFolder.Items
Debug.Print Contact.CompanyName
Next
Exit Sub
ErrHandler:
Debug.Print Err.Description
Stop
Resume
End Sub
我猜'邮件列表项不是'联系人',因此'对于ContactsFolder.Items中的每个联系人'将失败,因为不能转换为'Contact'。另一种选择是使用“FOR”循环而不是“FOR EACH”。然后,你应该能够遍历'Items'并且测试你拥有什么类型的物品并且在访问它的属性之前进行相应的投射。 – DeanOC 2014-11-20 22:57:12
似乎没有工作,或者我不知道如何用'FOR'循环(这里是裸机新手)编写它,但是如果您能够使用联系人列表中的邮件列表在您的机器上测试并发布工作代码,我会很乐意接受你的答案。 – Phrancis 2014-11-20 23:04:33