Other Common Outlook Development Tasks


Other Common Outlook Development Tasks

After you start to create applications with Outlook, you might think of development tasks you want to accomplish that are beyond the standard Outlook object library in Outlook forms. We'll look next at three common development tasks in Outlook: automating Outlook from other applications, using CDO in Outlook applications, and programming the Rules Wizard.

Automating Outlook from Other Applications

Outlook supports automation, so you can access Outlook objects from other applications. To access Outlook objects, you typically set a reference to the Outlook object library. For example, to add a reference to the Outlook object library in Visual Basic, you choose References from the Tools menu. In the References dialog box, select the Microsoft Outlook 11.0 Object Library option. The following code sample shows how to use Visual Basic to automate Outlook to return the first Calendar appointment and display it. Notice that the Outlook constant olFolderCalendar can be used in Visual Basic and that replacing it with the actual value is not necessary, as it is in VBScript.

 Private Sub Command1_Click()     Set oOutlook = CreateObject("Outlook.Application")     Set oNS = oOutlook.GetNameSpace("MAPI")     Set oCalendar = oNS.GetDefaultFolder(olFolderCalendar)     Set oItems = oCalendar.Items     Set oFirst = oItems.GetFirst()     oFirst.Display End Sub 

Using CDO in Outlook

Outlook provides an extensive object library with which you can develop custom applications, but sometimes you'll need to extend this environment by using other object libraries. The object library most commonly used to extend Outlook applications is CDO. CDO provides some functionality for dealing with data stored in Exchange Server that's beyond what is provided by the Outlook object library.

You'll need this additional functionality in the Account Tracking application, discussed in Chapter 8. One requirement for the application is that it keep track of the internal team assigned to work with a particular account. Keeping track of the team includes capturing the team's directory and e-mail information so other internal users who have questions about the account can send the team members e-mail. The easiest way for users to pick account team members is to display the address book. Outlook does not support displaying the address book and returning the individual that the user selected, but CDO does. To take advantage of the CDO functionality, we can extend the Account Tracking application to call the specific CDO functions, as shown here:

 Sub FindAddress(FieldName, strCaption, iButtonText)     On Error Resume Next          Set oCDOSession = application.CreateObject("MAPI.Session")     oCDOSession.Logon "","", False, False, 0     txtCaption = strCaption          If Not Err Then         Set oRecip = oCDOSession.AddressBook (Nothing, txtCaption, _         True, True, 1, iButtonText, "", "", 0)     End If          If Not Err Then         item.UserProperties.Find(FieldName).value = oRecip(1).Name     end if          oCDOSession.Logoff     oCDOSession = Nothing End Sub 

As you can see, to take advantage of CDO, you use the CreateObject method of the Application object, passing in the ProgID of CDO, which is MAPI.Session. Next you must log on to a session. Because Outlook already has an active session, the parameters passed to the CDO Logon method force CDO to use the already established Outlook session. From there, the application uses the CDO AddressBook method to bring up the address book with a specific caption and buttons , which enables the user of the application to select a person from the address book. The application then uses the Outlook object library to place the selection of the user in a custom Outlook property. The final task the application performs is to call the Logoff method of CDO and set the CDO object reference to Nothing . These two steps are important because you do not want stray objects left around after your application ends.

The integration of CDO in your Outlook applications does not stop there ”you can also leverage the Outlook library in your CDO applications by using a similar technique. For more information on using the features of CDO in your Outlook application, see Chapter 11.

Installing CDO on Your Computer

Outlook can install CDO on a client computer if the user has not installed it. The following code automates the Windows Installer technology to load CDO on the local machine if CDO is not already installed:

 Const msiInstallStateAbsent = 2 Const msiInstallStateLocal  = 3      If Not IsCDOInstalled Then     ans = Msgbox("CDO is not installed.  Would you " & _                  "like to install it?", vbYesNo)     If ans = vbYes Then InstallCDO(msiInstallStateLocal) Else     Ans = Msgbox "CDO is already installed. Would you " & _                  "like to remove it?", vbYesNo)     If ans = vbYes Then InstallCDO(msiInstallStateAbsent) End If      Function IsCDOInstalled()     Dim testCDOobj     On Error Resume Next          Set testCDOobj = CreateObject("MAPI.Session")     If Err.Number <> 0 Then         IsCDOInstalled = False     Else         IsCDOInstalled = True     End If          If Not testCDOobj Is Nothing Then         Set testCDOobj = Nothing     End If     Exit Function End Function      Function InstallCDO(iInstallState)     Dim blnSuccess     Dim objInstaller, OL     Dim strProductId, strFeatureName     On Error Resume Next          Set objInstaller = CreateObject("WindowsInstaller.Installer")     Set OL = CreateObject("Outlook.Application")     strProductId = OL.ProductCode     strFeatureName = "OutlookCDO"          If objInstaller.FeatureState(strProductId, strFeatureName) <> _                                  iInstallState Then         objInstaller.ConfigureFeature strProductId, strFeatureName, _                                  iInstallState         If Err.Number <> 0 Then             blnSuccess = False         Else             blnSuccess = True         End If     Else         blnSuccess = True     End If          Install = blnSuccess End Function 

Coding Rules in the Rules Wizard

In Outlook 2002 and later, you can call custom code as an action from the Rules Wizard. This feature allows you to perform more complex parsing of the items that meet the criteria you set in the Rules Wizard. The easiest way to use this feature is to write the code using VBA in Outlook.

Your VBA code must have two subroutines ”one that accepts MailItem objects, and one that accepts MeetingItem objects ”because Outlook will call one of these subroutines, depending on the type of item received. Remember that the Rules Wizard works only on your Inbox, so you cannot script for AppointmentItem objects. The following code shows how to use this new capability. Notice the subroutine names and parameters in the code. The subroutine name and arguments for your custom rule must be exactly the same as those shown.

 Sub CustomMailMessageRule(Item As Outlook.MailItem)     MsgBox "Mail message arrived: " & Item.Subject End Sub      Sub CustomMeetingRequestRule(Item As Outlook.MeetingItem)     MsgBox "Meeting request arrived: " & Item.Subject End Sub 



Programming Microsoft Outlook and Microsoft Exchange 2003
Programming MicrosoftВ® OutlookВ® and Microsoft Exchange 2003, Third Edition (Pro-Developer)
ISBN: 0735614644
EAN: 2147483647
Year: 2003
Pages: 227
Authors: Thomas Rizzo

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net