Excel VBA with Outlook:如何使用AdvancedSearch方法在Outlook中搜索特定电子邮件?

时间:2015-09-05 11:18:28

标签: excel-vba email outlook vba excel

我这里有一个程序,它通过Outlook的“已发送邮件”文件夹中的每封电子邮件进行搜索,直到找到指定电子邮件中的标记(URL),打开它并发送回复。

但是我在“已发送邮件”文件夹中有很多电子邮件,因此通过每封电子邮件搜索都需要花费很多时间。

我已经读过AdvancedSearch方法是搜索特定电子邮件的更快捷方式。但我真的不知道它是如何运作的,这就是为什么我需要你帮助的人。

如何在此类程序中使用AdvancedSearch方法?

感谢你的帮助。

Set olApp = New Outlook.Application
Set olNameSpace = olApp.GetNamespace("MAPI")
Set olFolder = olNameSpace.GetDefaultFolder(olFolderSentMail)

For Each olMail In olFolder.Items

    tagLink = Sheets("Data").Cells(rowCount, 6)

    If InStr(olMail.HTMLBody, tagLink) <> 0 Then

    With olMail.Reply

        .Display
        .To = sMailTo
        .CC = sMailCC
        .HTMLBody = mailBody & vbLf & .HTMLBody

        .Send

    End With

    End If

Next olMail

1 个答案:

答案 0 :(得分:0)

  

对于olFolder.Items中的每个olMail

不要迭代文件夹中的所有项目。特别是如果你在文件夹中有大量的项目。

相反,您可以考虑使用Items类的Restrict或Find / FindNext方法。您可以在以下文章中找到它们的深入描述:

当然,您可以考虑使用Application类的Workbook workbook = WorkbookFactory.create(yourFile.getInputstream()); Sheet sheet = workbook.getSheet(0);//1,2,3 Iterator<Row> rowIterator = sheet.iterator(); while (rowIterator.hasNext()) { Row row = rowIterator.next(); row.getCell(0); row.getCell(1); } 方法。使用此方法的主要好处是能够在后台运行搜索并搜索不同/多个文件夹中的项目。阅读Advanced search in Outlook programmatically: C#, VB.NET文章中有关所有好处的详情。

最后,您可能会发现Getting Started with VBA in Outlook 2010文章很有帮助。