Search Outlook Folders recursively:   Return to List

Dim oMAPI As Outlook.NameSpace
Dim oParentFolder As Outlook.MAPIFolder
Dim objFolder As Outlook.MAPIFolder

Set oMAPI = GetObject ("", "Outlook.application").GetNamespace("MAPI")
Set oParentFolder = oMAPI.Folders("Public Folders")

Set objFolder = OutlookFolderNames (oParentFolder, "anyfoldername")

Public Function OutlookFolderNames(objFolder As Outlook.MAPIFolder, _
    strFolderName As String) As Object
    On Error GoTo ErrorHandler
    Dim objOneSubFolder As Outlook.MAPIFolder
    If Not objFolder Is Nothing Then
        If LCase(strFolderName) = LCase(objFolder.Name) Then
            Set OutlookFolderNames = objFolder
        Else
            ' Check if folders collection is not empty
            If objFolder.Folders.Count > 0 And Not objFolder.Folders Is Nothing Then
                For Each oFolder In objFolder.Folders
                    Set objOneSubFolder = oFolder
                    ' only check mail item folder
                    If objOneSubFolder.DefaultItemType = olMailItem Then
                        If LCase(strFolderName) = LCase(objOneSubFolder.Name) Then
                            Set OutlookFolderNames = objOneSubFolder
                            Exit For
                        Else
                            If objOneSubFolder.Folders.Count >0 Then
                                Set OutlookFolderNames = OutlookFolderNames(objOneSubFolder, strFolderName)
                            End If
                        End If
                    End If
                Next
            End If
        End If
    End If
    Exit Function
ErrorHandler:
    Set OutlookFolderNames = Nothing
End Function



Note to Webmaster