簡體   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