How can one iterate through the subfolders of a subfolder of a shared mail inbox folder?

后端 未结 2 1068
故里飘歌
故里飘歌 2021-01-29 05:31

Building up on this one, here, how can one iterate through the subfolders of a subfolder of the inbox folder of a shared mailbox?

I\'m failing to find a solution so far.<

相关标签:
2条回答
  • 2021-01-29 06:07

    The following code will create a dictionary of the folder structure from your defined base folder which you can then manipulate

    Sub RecurseFolderStructure()
        ' Requires Reference: Microsoft Scripting Runtime
    
        Dim ThisNamespace As Outlook.NameSpace: Set ThisNamespace = Application.GetNamespace("MAPI")
        Dim Inbox As Outlook.MAPIFolder: Set Inbox = ThisNamespace.GetDefaultFolder(olFolderInbox)
        Dim Junk As Outlook.MAPIFolder: Set Junk = ThisNamespace.GetDefaultFolder(olFolderJunk)
        
        Dim BaseFolder As Outlook.MAPIFolder: Set BaseFolder = Inbox '.Folders("SubFolder1\SubFolder2...")
        Dim Folders As Scripting.Dictionary: Set Folders = New Scripting.Dictionary
        AddSubFolders BaseFolder, Folders
        
        Dim Key As Variant
        For Each Key In Folders
            'Further Code; for eg.
            Debug.Print Key, Folders(Key)
        Next Key
        
        Folders.RemoveAll
        Set Folders = Nothing
    End Sub
    
    Function AddSubFolders(CurrentFolder As Outlook.MAPIFolder, dict As Scripting.Dictionary)
        Dim Folder As Outlook.MAPIFolder
        If Not dict.Exists(CurrentFolder.FolderPath) Then dict.Add CurrentFolder.FolderPath, CurrentFolder
            
        If CurrentFolder.Folders.Count > 0 Then
            For Each Folder In CurrentFolder.Folders
                AddSubFolders Folder, dict
            Next
        End If
    End Function
    
    0 讨论(0)
  • 2021-01-29 06:28

    Defining:

    Option Explicit
    
    Sub inbox_working()
       
    Dim xlApp As Excel.Application
    Dim xlWB As Excel.Workbook
    Dim Sht As Excel.Worksheet
    
    Dim olApp As Outlook.Application
    Set olApp = New Outlook.Application
       
    Dim olNs As Outlook.Namespace
    Set olNs = olApp.GetNamespace("MAPI")
       
    Dim olRecip As Outlook.Recipient
    Set olRecip = olNs.CreateRecipient("exampleEmail@email.com") ' Update email
       
    Dim Inbox As Outlook.MAPIFolder
    Set Inbox = olNs.GetSharedDefaultFolder(olRecip, olFolderInbox)
    

    And:

    Dim InboxSubfolder as Outlook.Folder
    Set InboxSubfolder = Inbox.Folders("NameOfSubfolder")
    

    And then calling the LoopFolders InboxSubfolder, will iterate through the subfolders of the InboxSubfolder.

    0 讨论(0)
提交回复
热议问题