Solved

Outlook 2003 macro not working in 2007 out of office

Posted on 2009-04-09
3
442 Views
Last Modified: 2012-06-21
I have a series of macros that I use to set different messages in the Out Of Office assistant.  They have worked fine in 2003, but now, the CreateObject("MAPI.Session") is not liked.  I cannot find the 2007 equivalent of this statement.
    Dim Text1, Text2, Text3, TextComma As String
 

    TextComma = ", "

    Text1 = "Thanks for your e-mail! "

    Text2 = "My hours are 7:30 - 4:00 and I am gone for the rest of today, "

    Text3 = ".  I will return your e-mail in the morning. "
 

    Set oSession = CreateObject("MAPI.Session")

    oSession.Logon "", "", False, False

  

    'Set the body text.

    oSession.OutOfOfficeText = Text1 & Chr$(13) & Chr$(13) & Text2 & WeekdayName(Weekday(Date)) & TextComma & Date & Text3
 

    'Turning on Out of Office

    oSession.OutOfOffice = True

Open in new window

0
Comment
Question by:pmpatane
  • 2
3 Comments
 
LVL 76

Accepted Solution

by:
David Lee earned 250 total points
ID: 24109480
Hi, pmpatane.

Outlook 2007 doesn't use CDO (e.g. MAPI.Session).  Microsoft added the ability to manage properties directly from the Outlook object model without the need for another component (CDO).  Here's a macro that sets the out of office text and turns it on.
Sub OutOfOffice()

    Const PR_OOF_STATE = "http://schemas.microsoft.com/mapi/proptag/0x661D000B"

    Dim olkIS As Outlook.Store, _

        olkPA As Outlook.PropertyAccessor, _

        olkOOFMessage As Outlook.StorageItem

    For Each olkIS In Session.Stores

        If olkIS.ExchangeStoreType = olPrimaryExchangeMailbox Then

            Set olkPA = olkIS.PropertyAccessor

            olkPA.SetProperty PR_OOF_STATE, True

            Set olkOOFMessage = Outlook.Session.GetDefaultFolder(olFolderInbox).GetStorage("IPM.Note.Rules.OofTemplate.Microsoft", olIdentifyByMessageClass)

            olkOOFMessage.Body = Text1 & Chr$(13) & Chr$(13) & Text2 & WeekdayName(Weekday(Date)) & TextComma & Date & Text3

            olkOOFMessage.Save

            Exit For

        End If

    Next

    Set olkIS = Nothing

    Set olkPA = Nothing

    Set olkOOFMessage = Nothing

End Sub

Open in new window

0
 

Author Closing Comment

by:pmpatane
ID: 31568696
That worked flawlessly, but wow, a whole lot more overhead is necessary.  You want to recommend any good books for Outlook 2007 VBA.  My old skills aren't going to be up to snuff.  (Even though my 2003 macros for Send with Read Receipt and adding Voting buttons still work)
0
 
LVL 76

Expert Comment

by:David Lee
ID: 24111305
The best book I know of is "Microsoft Outlook 2007 Programming" by Sue Mosher (ISBN: 978-1-55558-346-0).  She also runs the site http://www.outlookcode.com
0

Featured Post

Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Outlook Free & Paid Tools
Not sure what the best email signature size is? Are you worried about email signature image size? Follow this best practice guide.
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …
CodeTwo Sync for iCloud (http://www.codetwo.com/sync-for-icloud?sts=6554) automatically synchronizes your Outlook 2016, 2013, 2010 or 2007 folders with iCloud folders available via iCloud Control Panel. This lets you automatically sync them with…

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now