繁体   English   中英

Excel VBA Outlook - 主题包含未找到回复电子邮件

[英]Excel VBA Outlook - Subject Contains Is Not Finding Reply Emails

如何获得以下 Excel VBA 代码以返回主题包含“时间表 06/19/20”的所有电子邮件?

下面的代码确实返回“Timesheet 06/19/20 - Name (EmpId)”。 但是,它不会返回“[EXTERNAL] RE: Timesheet 06/19/20 - Name (EmpId)”。 我究竟做错了什么?

     Public Function Test()
         Dim Folder As Outlook.Folder, MailItems As Outlook.Items, MailItem As Outlook.MailItem
         Dim Filter As String
    
         Filter = "@SQL=urn:schemas:httpmail:subject" & "" & " ci_phrasematch 'Timesheet 06/19/20'"
         Set Folder = Outlook.Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
         Set MailItems = Folder.Items.Restrict(Filter)
         For Each MailItem In MailItems
             Debug.Print MailItem.Subject
         Next MailItem
     End Function

请注意,如果我将过滤器更改为搜索“[EXTERNAL] RE: Timesheet 06/19/20”,它会找到 email。 显然这不适用于我的解决方案,因为我需要搜索“Timesheet 06/19/20”来容纳原始、转发和回复电子邮件。

感谢您提供的任何帮助!

不知道为什么,但主题为“无法交付:时间表 06/19/20 - 名称(EmpId)”的 email 引发错误,导致代码提前退出 for 循环。 下面的代码修复了抛出的错误。

也许有人解释了为什么上述主题更喜欢循环的索引计数?

Public Function Test()
    Dim Folder As Outlook.Folder, MailItems As Outlook.Items, MailItem As Outlook.MailItem
    Dim Filter As String, idx As Long
    
    Filter = "@SQL=urn:schemas:httpmail:subject" & "" & " ci_phrasematch 'Timesheet 06/19/20'"
    
    Set Folder = Outlook.Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
    Set MailItems = Folder.Items.Restrict(Filter)
    For idx = 1 To MailItems.Count
        Debug.Print MailItems(idx).Subject
    Next idx
    
End Function

您需要记住, Items集合可能包含不同类型的项目,而不仅仅是邮件项目。 因此,最好将项目定义为 object 并在运行时检查项目的类型,然后再访问特定于特定项目类型的任何属性或方法。 例如:

Public Function Test()
         Dim Folder As Outlook.Folder, MailItems As Outlook.Items, item As Object
         Dim Filter As String
    
         Filter = "@SQL=urn:schemas:httpmail:subject" & "" & " ci_phrasematch 'Timesheet 06/19/20'"
         Set Folder = Outlook.Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
         Set MailItems = Folder.Items.Restrict(Filter)
         For Each item In MailItems
             Debug.Print TypeName(item)
         Next item
     End Function

如何:使用限制方法从文件夹文章中检索 Outlook 邮件项目中阅读有关Restrict方法的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM