如何用vba遍历outlook中的任意邮箱账号的任意文件夹的邮件项目?

outlook是一款邮件客户端软件,可以用于收发邮件。

它可以一次性添加多个邮箱账户。

当用vba操作outlook发送邮件时,如果有多个邮箱账户,需要先判断或者设置下用哪个邮箱账户进行发送。

要用vba访问 outlook 中的所有数据,需要从根对象NameSpace开始,它代表了任意数据源的根对象。

要返回NameSpace对象,可以通过GetNameSpace方法,在outlook中只能通过GetNamespace(“MAPI”) 或者 Session属性返回NameSpace对象。

如果要读取某个指定的邮箱账号下的收件箱下的所有邮件项目,可以使用如下的代码:

Sub QQ1722187970()
    Dim objAccount As Outlook.Account
    Dim objOutlookApp As Outlook.Application
    Set objOutlookApp = New Outlook.Application
    Dim objNamespace As Outlook.Namespace
    Dim objFolders As Outlook.Folders
    Dim objFolders1 As Outlook.Folders
    Dim objFolder As Outlook.Folder
    Dim objFolder1 As Outlook.Folder
    Dim objItem As Outlook.MailItem
    With objOutlookApp
        Set objNamespace = .Session
        '与Session属性一样的效果
        Set objNamespace = .GetNamespace("MAPI")
        With objNamespace
            '遍历所有文件夹
            Set objFolders = .Folders
            For Each objFolder In objFolders
                With objFolder
                    sName = .Name
                    '判断邮箱账号名称
                    If sName = "1722187970@qq.com" Then
                        Set objFolders1 = .Folders
                        '遍历该账号下的所有文件夹
                        For Each objFolder1 In objFolders1
                            sName1 = objFolder1.Name
                            If sName1 = "收件箱" Then
                                '如果是收件箱就遍历所有邮箱项目
                                With objFolder1
                                    For I = .Items.Count To 1 Step -1
                                        Set objItem = .Items(I)
                                        With objItem
                                            Debug.Print .Subject
                                        End With
                                    Next I
                                End With
                            End If
                        Next
                    End If
                End With
            Next
        End With
    End With
End Sub
       

发表评论