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
答
为了遍历发送邮件夹中的所有物品,包括你可能有日历事件,使用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
让我知道,如果你在试图代码我的答案如下,如果它对你有用 –
谢谢先生,我试过你的代码,但我不想在Excel中存储任何电子邮件ID或发送日期。其实我想在excel中运行一个宏,在任务完成时搜索Outlook邮件。我想让你的代码在excel中运行。请帮助我如何做到这一点,或者有什么办法可以在Excel中的window.open事件中调用此代码? – Mallur
“子试验() 昏暗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