Access Outlook default folder

2019-01-19 04:40发布

I working on an Outlook VBA application and I need to access my inbox but I seem to be having some trouble. I am using the GetDefaultFoldder(olFolderInbox) method, however, I have several email addresses set up and none of them show up in my personal folder's inbox.

So my question is, where is this default folder defined? How do I know which inbox is the default one? I know there is also the GetFolderFromID method, if I were to use this,

how can I find a folders ID in order to point to it?

Here is the code I am using. This is from a tutorial on Timothy Chen Allen's blog as seen here Timothy's Blog. The code:

Sub find_unread()
    On Error GoTo eh:
    Dim ns As Outlook.NameSpace
    Dim folder As MAPIFolder
    Dim item As Object
    Dim msg As MailItem

    Set ns = Session.Application.GetNamespace("MAPI")
    Set folder = ns.GetDefaultFolder(olFolderInbox)

    For Each item In folder.Items
        DoEvents
        If (item.Class = olMail) And (item.UnRead) Then
            Set msg = item
            Debug.Print msg.SenderEmailAddress
            msg.Display True
        End If
    Next

    MsgBox "All messages in Inbox are read", vbInformation, "All Read"
    Exit Sub
eh:
    MsgBox Err.Description, vbCritical, Err.Number
End Sub

1条回答
地球回转人心会变
2楼-- · 2019-01-19 05:30

You can use the Folders property, and string multiple Folders properties together, to get at any folder in the namespace. Some examples

The Inbox (same as GetDefaultFolder(olInbox))

ns.Folders("Personal Folders").Folders("Inbox")

A subfolder of Inbox named Backup

ns.Folders("Personal Folders").Folders("Inbox").Folders("Backup")

The OtherInbox at the same level as Personal Folders

ns.Folders("OtherInbox")

The GetDefaultFolder is good for quickly getting to a default folder, but if you need something other than the default, just navigate down the tree with the Folders property of the NameSpace object.

查看更多
登录 后发表回答