Discussion:
Navigating Outlook MAPI Folder Tree
(too old to reply)
John Huecksteadt
2003-09-17 12:00:54 UTC
Permalink
As a tree familiarization exercise I want to navigate the
Outlook MAPI folder tree using the Folders object and
GetFirst()/GetNext(). Proc appears never to get past 2nd
folder in collection at any level in tree.

OUTPUT:
There are 4 root folders.
Root Folder 1 name: Home Contacts
Home Contacts contains 2 folders.
Level 1 folder 1 name: Deleted Items
Level 1 folder 2 name: Contacts
Level 1 folder 3 name: Contacts
Level 1 folder 4 name: Contacts
Root Folder 2 name: Public Folders
Public Folders contains 2 folders.
Level 1 folder name: Favorites
Level 1 folder name: All Public Folders
Level 1 folder name: All Public Folders
Root folder 3 name: Public Folders
.
.
.
SNIPPET:

Private Sub btnGo_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnGo.Click
Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim oRootFolder As Outlook.MAPIFolder
Dim oFolder As Outlook.MAPIFolder
Dim strText As New System.Text.StringBuilder()
Dim i As Int16
Dim j As Int16

olApp = CreateObject("Outlook.Application")
olNS = olApp.GetNamespace("MAPI")

'Get root MAPIFolder
strText.Append("There are " & olNS.Folders.Count
() & " root folders." & vbCrLf)
oRootFolder = olNS.Folders.GetFirst()
strText.Append("Root Folder 1 name: " &
oRootFolder.Name & vbCrLf)
strText.Append(vbTab & oRootFolder.Name.ToString
() & " contains " & oRootFolder.Folders.Count.ToString()
& " folders." & vbCrLf)

'Get next level MAPIFolder
oFolder = oRootFolder.Folders.GetFirst()
strText.Append(vbTab & "Level 1 folder 1 name: "
& oFolder.Name & vbCrLf)
oFolder = oRootFolder.Folders.GetNext()
strText.Append(vbTab & "Level 1 folder 2 name: "
& oFolder.Name & vbCrLf)
oFolder = oRootFolder.Folders.GetNext()
strText.Append(vbTab & "Level 1 folder 3 name: "
& oFolder.Name & vbCrLf)
oFolder = oRootFolder.Folders.GetNext()
strText.Append(vbTab & "Level 1 folder 4 name: "
& oFolder.Name & vbCrLf)

'Get next root MAPIFolder
oRootFolder = olNS.Folders.GetNext()
strText.Append("Root Folder 2 name: " &
oRootFolder.Name & vbCrLf)
strText.Append(oRootFolder.Name & " contains " &
oRootFolder.Folders.Count.ToString() & " folders." &
vbCrLf)

'Get next level MAPIFolder
oFolder = oRootFolder.Folders.GetFirst()
strText.Append(vbTab & "Level 1 folder name: " &
oFolder.Name & vbCrLf)
oFolder = oRootFolder.Folders.GetNext()
strText.Append(vbTab & "Level 1 folder name: " &
oFolder.Name & vbCrLf)
oFolder = oRootFolder.Folders.GetNext()
strText.Append(vbTab & "Level 1 folder name: " &
oFolder.Name & vbCrLf)

'Get next root MAPIFolder
oRootFolder = olNS.Folders.GetNext()
strText.Append("Root folder 3 name: " &
oRootFolder.Name & vbCrLf)

rtxtShow.Text = strText.ToString()
Sue Mosher [MVP]
2003-10-06 12:36:17 UTC
Permalink
Navigating a tree generally requires a recursive procedure:

Sub EnumFolders(objFolder as MAPIFolder object)
' do something to enumerate objFolder properties
For Each objSubFolder in objFolder.Folder
Call EnumFolders(objSubFolder)
Next
End Function
--
Sue Mosher, Outlook MVP
Outlook and Exchange solutions at http://www.slipstick.com
Author of
Microsoft Outlook Programming: Jumpstart
for Administrators, Power Users, and Developers
http://www.outlookcode.com/jumpstart.aspx
Post by John Huecksteadt
As a tree familiarization exercise I want to navigate the
Outlook MAPI folder tree using the Folders object and
GetFirst()/GetNext(). Proc appears never to get past 2nd
folder in collection at any level in tree.
There are 4 root folders.
Root Folder 1 name: Home Contacts
Home Contacts contains 2 folders.
Level 1 folder 1 name: Deleted Items
Level 1 folder 2 name: Contacts
Level 1 folder 3 name: Contacts
Level 1 folder 4 name: Contacts
Root Folder 2 name: Public Folders
Public Folders contains 2 folders.
Level 1 folder name: Favorites
Level 1 folder name: All Public Folders
Level 1 folder name: All Public Folders
Root folder 3 name: Public Folders
.
.
.
Private Sub btnGo_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnGo.Click
Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim oRootFolder As Outlook.MAPIFolder
Dim oFolder As Outlook.MAPIFolder
Dim strText As New System.Text.StringBuilder()
Dim i As Int16
Dim j As Int16
olApp = CreateObject("Outlook.Application")
olNS = olApp.GetNamespace("MAPI")
'Get root MAPIFolder
strText.Append("There are " & olNS.Folders.Count
() & " root folders." & vbCrLf)
oRootFolder = olNS.Folders.GetFirst()
strText.Append("Root Folder 1 name: " &
oRootFolder.Name & vbCrLf)
strText.Append(vbTab & oRootFolder.Name.ToString
() & " contains " & oRootFolder.Folders.Count.ToString()
& " folders." & vbCrLf)
'Get next level MAPIFolder
oFolder = oRootFolder.Folders.GetFirst()
strText.Append(vbTab & "Level 1 folder 1 name: "
& oFolder.Name & vbCrLf)
oFolder = oRootFolder.Folders.GetNext()
strText.Append(vbTab & "Level 1 folder 2 name: "
& oFolder.Name & vbCrLf)
oFolder = oRootFolder.Folders.GetNext()
strText.Append(vbTab & "Level 1 folder 3 name: "
& oFolder.Name & vbCrLf)
oFolder = oRootFolder.Folders.GetNext()
strText.Append(vbTab & "Level 1 folder 4 name: "
& oFolder.Name & vbCrLf)
'Get next root MAPIFolder
oRootFolder = olNS.Folders.GetNext()
strText.Append("Root Folder 2 name: " &
oRootFolder.Name & vbCrLf)
strText.Append(oRootFolder.Name & " contains " &
oRootFolder.Folders.Count.ToString() & " folders." &
vbCrLf)
'Get next level MAPIFolder
oFolder = oRootFolder.Folders.GetFirst()
strText.Append(vbTab & "Level 1 folder name: " &
oFolder.Name & vbCrLf)
oFolder = oRootFolder.Folders.GetNext()
strText.Append(vbTab & "Level 1 folder name: " &
oFolder.Name & vbCrLf)
oFolder = oRootFolder.Folders.GetNext()
strText.Append(vbTab & "Level 1 folder name: " &
oFolder.Name & vbCrLf)
'Get next root MAPIFolder
oRootFolder = olNS.Folders.GetNext()
strText.Append("Root folder 3 name: " &
oRootFolder.Name & vbCrLf)
rtxtShow.Text = strText.ToString()
Loading...