Article ID: 171603
Article Last Modified on 2/12/2007
APPLIES TO
- Microsoft Visual Basic 5.0 Control Creation Edition
- Microsoft Visual Basic 5.0 Learning Edition
- Microsoft Visual Basic 6.0 Learning Edition
- Microsoft Visual Basic 5.0 Professional Edition
- Microsoft Visual Basic 6.0 Professional Edition
- Microsoft Visual Basic 5.0 Enterprise Edition
- Microsoft Visual Basic 6.0 Enterprise Edition
- Microsoft Outlook 97 Standard Edition
This article was previously published under Q171603
SUMMARY
The following code sample demonstrates how to determine the count of all unread messages on a per folder basis for all folders grouped under a specified Microsoft Outlook folder. The sample assumes that the Microsoft Outlook mail client is installed.
MORE INFORMATION
The code below uses a recursive routine to iterate through a mail folder to produce a list of all its sub-folders and a count of corresponding unread messages. The data is then displayed in the Visual Basic Immediate Window. The code takes advantage of the UnReadItemCount property of the Outlook MAPIFolder object.
- Open a Standard EXE project in Visual Basic.
- Select References from the Project menu.
- Select "Microsoft Outlook 8.0 Object Library" (msoutl8.olb), and click OK.
- Select Project1 Properties on the Project menu and set the Startup Object to "Sub Main".
- Select Add Module from the Project menu to add a module to the project.
Add the following sample code to Module1:
NOTE: Modify the FOLDER_TO_OPEN constant as appropriate.Sample Code
Option Explicit Private Sub Main() Dim olMAPI As Outlook.NameSpace Dim Folder As Outlook.MAPIFolder Const FOLDER_TO_OPEN = "Mailbox - John Doe" 'Modify as appropriate Set olMAPI = GetObject("", "Outlook.Application") _ .GetNamespa ce("MAPI") Call PrintFolderNames(olMAPI.Folders(FOLDER_TO_OPEN), "->") Set olMAPI = Nothing End Sub Sub PrintFolderNames(tempfolder As Outlook.MAPIFolder, a$) Dim i As Integer If tempfolder.Folders.Count Then Debug.Print a$ & " " & tempfolder.Name & " "; Debug.Print tempfolder.UnReadItemCount For i = 1 To tempfolder.Folders.Count Call PrintFolderNames(tempfolder.Folders(i), a$ & "->") Next i Else Debug.Print a$ & " " & tempfolder.Name & " "; Debug.Print tempfolder.UnReadItemCount End If End Sub
- Run the program.
RESULT: The unread message count for the folder FOLDER_TO_OPEN appears in the Immediate Window.
Keywords: kbhowto KB171603