从Excel中按日期和使用通配符的主题搜索已发送邮件中的邮件

时间:2017-01-10 08:56:42

标签: excel vba excel-vba outlook outlook-vba

我需要搜索已发送邮件中的邮件,在当前日期发送,主题为"任务已完成"。有时,Subject可能会有其他文本,例如07/01/2017上的任务已完成或任务已完成01/09/2017。

我找到了这个Outlook VBA代码,它显示了找到的邮件。我希望代码在Excel中使用通配符搜索选项运行并打开Excel文件。

我尝试使用通配符" *"搜索主题,例如"任务已完成*"和"任务已完成&格式(日期," dd / mm / yyyy")"我得到了语法错误/编译错误

Sub Test()

Dim olApp As Outlook.Application
Dim olNs As NameSpace
Dim Fldr As MAPIFolder
Dim olMail As Outlook.MailItem
Dim i As Integer

Set olApp = New Outlook.Application
Set olNs = olApp.GetNamespace("MAPI")
Set Fldr = olNs.GetDefaultFolder(olFolderSentMail)
i = 1

For Each olMail In Fldr.Items
    If InStr(olMail.Subject, "Task Completed on 07/01/2017") <> 0 Then
        olMail.Display
        i = i + 1    
    End If    
Next olMail

End Sub

我正在使用Office 2010。

1 个答案:

答案 0 :(得分:2)

要循环浏览 已发送邮件 文件夹中的所有项目,包括您可能拥有的日历活动,请使用Dim olMail As Object(而不是{{1} })。

要在电子邮件标题的某处查找“任务已完成”字符串,请使用AS Outlook.MailItem(在搜索到的字符串之前和之后添加通配符If olMail.Subject Like "*Task Completed*" Then)。

我添加了两行代码,将所有匹配的电子邮件输出到A列和B列的工作表中。

<强>代码

*