Excel vba:循环浏览Outlook电子邮件中的所有子文件夹,以查找包含特定主题的电子邮件

时间:2017-07-27 09:07:51

标签: excel vba outlook

我在Excel VBA中编写了以下代码,如果位于Outlook的默认收件箱文件夹中,则会打开包含给定主题的电子邮件。

但是,我想在所有收件箱子文件夹中搜索此电子邮件。

因为代码将被多个用户使用,所以我不知道他们的Outlook收件箱子文件夹的编号和名称。关于如何在所有子文件夹中搜索此电子邮件的任何想法?

Sub GetEmail()

    Dim OutApp as Object
    Dim Namespace as Object
    Dim Folder as Object
    Dim myMail as Object

    Set OutApp = CreateObject("Outlook.Application")
    Set Namespace = OutApp.GetNamespace ("MAPI")
    Set Folder = Namespace.GetDefaultFolder(6)

    Set myMail = Folder.Items.Find ("[Subject] = ""Test""")

    myMail.Display


End Sub

1 个答案:

答案 0 :(得分:3)

以下代码循环显示Outlook中的所有文件夹,转到收件箱下的第一级。您可以通过指定要查看的初始文件夹来查看收件箱。因此,您可以在循环时搜索文件夹。你可以通过更深入的循环,或者说folders.count>来添加更多的子文件夹。 X

我总是发现Excel中的Outlook令人沮丧,因此使这个Early Bound更容易编码。这意味着您需要转到工具/参考并添加Microsoft Outlook 16(x).0对象库

您可以在编码后将其更改回到后期绑定,因为早期绑定将为您提供智能感知并使生活变得更加轻松。

Sub GetEmail()

Dim OutApp As Outlook.Application
Dim Namespace As Outlook.Namespace
Dim Mfolder As Outlook.MAPIFolder
Dim myMail As Outlook.Items

Dim Folder As Outlook.MAPIFolder
Dim SubFolder As Outlook.MAPIFolder
Dim UserFolder As Outlook.MAPIFolder

Set OutApp = New Outlook.Application
Set Namespace = OutApp.GetNamespace("MAPI")

On Error Resume Next
For Each Folder In Namespace.Folders
    For Each SubFolder In Folder.Folders
        For Each UserFolder In SubFolder.Folders
            Debug.Print Folder.Name, "|", SubFolder.Name, "|", UserFolder.Name
        Next UserFolder
    Next SubFolder
Next Folder
On Error GoTo 0

End Sub

错误是跳过outlook映射存档pst文件的任何问题。