Accessing Folders

Folders can be organized in a hierarchy, allowing you to access folders within folders. Subfolders appear in the Folders collection returned by the Folders property of the Folder object containing them.

With the CDO Library version 1.1 and later, you can create a new folder within an existing folder using the Add method of the Folders collection.

There are two general approaches for accessing folders:

To obtain the folder directly using the GetFolder method, you must have the folder's identifier. In the following code fragment, the identifier is stored in the variable strFolderID:

Function Session_GetFolder() 
    On Error GoTo error_olemsg 
 
    If objSession Is Nothing Then 
        MsgBox "No active session, must log on" 
        Exit Function 
    End If 
    If strFolderID = "" Then 
        MsgBox ("Must first set folder ID variable; see Folder->ID") 
        Exit Function 
    End If 
    Set objFolder = objSession.GetFolder(strFolderID) 
    ' equivalent to: 
    ' Set objFolder = objSession.GetFolder(folderID:=strFolderID) 
    If objFolder Is Nothing Then 
        Set objMessages = Nothing 
        MsgBox "Unable to retrieve folder with specified ID" 
        Exit Function 
    End If 
    MsgBox "Folder set to " & objFolder.Name 
    Set objMessages = objFolder.Messages 
    Exit Function 
 
error_olemsg: 
    MsgBox "Error " & Str(Err) & ": " & Error$(Err) 
    Set objFolder = Nothing 
    Set objMessages = Nothing 
    MsgBox "Folder is no longer available" 
    Exit Function 
End Function 
 

To navigate through the hierarchy of folders, start with a known or available folder, such as the Inbox or Outbox, and examine its Folders collection. You can use the collection's GetFirst and GetNext methods to get each Folder object in the collection. When you have a subfolder, you can examine its properties, such as its name, to see whether it is the desired folder. The following code fragment navigates through all existing subfolders of the Inbox:

Function TestDrv_Util_ListFolders() 
    On Error GoTo error_olemsg 
    If objFolder Is Nothing Then 
        MsgBox "Must select a folder object; see Session menu" 
        Exit Function 
    End If 
    If 2 = objFolder.Class Then ' verify object is a Folder 
            ' with CDO Library 1.1, can use Class value: 
            ' If CdoFolder = objFolder.Class Then 
        x = Util_ListFolders(objFolder) ' use current global folder 
    End If 
    Exit Function 
 
error_olemsg: 
    MsgBox "Error " & Str(Err) & ": " & Error$(Err) 
    Resume Next 
 
End Function 
 
' Function: Util_ListFolders 
' Purpose: Recursively list all folders below the current folder 
' See documentation topic: Folders collection 
Function Util_ListFolders(objParentFolder As Object) 
Dim objFoldersColl As Folders ' the child Folders collection 
Dim objOneSubfolder As Folder ' a single Folder object 
    On Error GoTo error_olemsg 
    If Not objParentFolder Is Nothing Then 
        MsgBox ("Folder name = " & objParentFolder.Name) 
        Set objFoldersColl = objParentFolder.Folders 
        If Not objFoldersColl Is Nothing Then ' loop through all 
            Set objOneSubfolder = objFoldersColl.GetFirst 
            While Not objOneSubfolder Is Nothing 
                x = Util_ListFolders(objOneSubfolder) 
                Set objOneSubfolder = objFoldersColl.GetNext 
            Wend 
        End If 
    End If 
    Exit Function 
 
error_olemsg: 
    MsgBox "Error " & Str(Err) & ": " & Error$(Err) 
    Resume Next 
End Function 
 

See Also

Searching for a Folder