Platform SDK: CDO 1.2.1 |
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