Home > front end >  While accessing Outlook SubFolder in VBA Run time error -2147221233
While accessing Outlook SubFolder in VBA Run time error -2147221233

Time:06-13

I am trying to access the Folder from Outlook in VBA,some folder I am able to access but few folder are not. Although I am able to read 1 subfolder from the below code but when i am trying to change folder it is giving error.

This the code with which I am trying to access :

Public Sub ReadOutlookEmails()
 Dim out_app As Outlook.Application
    Dim get_name As Outlook.Namespace
    Dim get_folder As Outlook.MAPIFolder
    Dim oAccount As Object
    Dim store_add As Object
    
    Dim monthKeyValuePair As New Scripting.Dictionary
    
    Dim email_list As New mscorlib.ArrayList
    Dim date_List As New mscorlib.ArrayList
    
    For Each c In Worksheets(ActiveSheet.Name).Range("D8:AH8")
        date_List.Add c
        'MsgBox c
    Next c
    
    Set out_app = New Outlook.Application
    
    Set get_name = out_app.GetNamespace("MAPI")
    
    For Each oAccount In out_app.Session.Accounts
     
     If oAccount.SmtpAddress = "[email protected]" Then
      
        Set store_add = oAccount.DeliveryStore
        
        'MsgBox store_add.GetDefaultFolder(olFolderInbox).Folders("New Joinees")
        
        'Set get_folder = store_add.GetDefaultFolder(olFolderInbox).Folders("On Bench Training")
        
        Set get_folder = store_add.GetDefaultFolder(olFolderInbox)
        Set get_folder = get_folder.Folders("On Bench Training")

enter image description here

Please help me here what I am doing wrong.

CodePudding user response:

The error is MAPI_E_NOT_FOUND, which means the folder with the given name does not exist.

Make sure the folder named "On Bench Training" is really a subfolder of the Inbox.

CodePudding user response:

Instead of getting the folder by its name you may try iterating over all subfolders and checking their name. So, basically instead of the following line:

Set get_folder = get_folder.Folders("On Bench Training")

You may iterate over all subfolder:

For Each uFolder In get_folder.Folders
  If uFolder.Name = "On Bench Training" Then
        MsgBox "Found!"
  End If
Next uFolder
  • Related