VBA从Excel中搜索已发送邮件中的Outlook 2010邮件

问题描述:

我需要一个Excel VBA来搜索已发送邮件中已发送邮件中的Outlook 2010邮件,并将其作为“任务已完成”(有时,主题可能会有其他文本任务于07/01/2017完成或任务已完成01/09/2017);如果找到,则从指定的路径中打开一个excel文件。VBA从Excel中搜索已发送邮件中的Outlook 2010邮件

我在谷歌搜索中发现了这个outlook VBA代码,它显示了搜索到的邮件,但是我希望代码在excel中运行通配符搜索选项并打开excel。

我试图寻找与通配符“*”的主题,如“任务已完成*”和“任务已完成上&格式(Date,‘日/月/年’)”为其中我得到一个语法错误/编译错误

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

+0

让我知道,如果你在试图代码我的答案如下,如果它对你有用 –

+0

谢谢先生,我试过你的代码,但我不想在Excel中存储任何电子邮件ID或发送日期。其实我想在excel中运行一个宏,在任务完成时搜索Outlook邮件。我想让你的代码在excel中运行。请帮助我如何做到这一点,或者有什么办法可以在Excel中的window.open事件中调用此代码? – Mallur

+0

“子试验() 昏暗olApp作为Outlook.Application 昏暗olNs正如名称空间 昏暗FLDR作为MAPIFolder 昏暗olMail作为Outlook.MailItem 昏暗我作为整数 集olApp =新Outlook.Application 集olNs = olApp.GetNamespace ( “MAPI”) 集FLDR = olNs.GetDefaultFolder(olFolderSentMail) I = 1 对于每个olMail在Fldr.Items 如果InStr函数(olMail.Subject, “任务完成”)和InStr函数(olMail.SentOn,格式(Date - 1,“mm/dd/yyyy”)) 0然后 olMail.Display i = i + 1 End If Next olMail E nd Sub' 我编辑了一些代码,它在Outlook中工作正常,但可以在Excel VBA编辑器中使用此代码并从那里运行? – Mallur

为了遍历发送邮件夹中的所有物品,包括你可能有日历事件,使用Dim olMail As Object (而不是AS Outlook.MailItem)。

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

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

代码

Option Explicit 

Sub Test() 

Dim olApp As Outlook.Application 
Dim olNs As Namespace 
Dim Fldr As MAPIFolder 
Dim olMail As Object 
Dim i As Integer, j 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 
    ' check if mail subject contains "Task Completed" in the email title 
    If olMail.Subject Like "*Task Completed*" Then 
     'Range("A" & i).Value = olMail.Subject ' <-- output email name to column A 
     'Range("B" & i).Value = olMail.SentOn ' <-- output email sent date to column B 
     olMail.Display ' show email through Excel 
     i = i + 1 
    End If 
Next olMail 

End Sub