AnthonyJS
AnthonyJS

Reputation: 153

Outlook 2010 scripted rule using VBA

I am trying to create a very simple (because I'm new and learning) scripted rule in Outlook 2010.

The RULE is: If a new mail item comes in from a particular email address, run my script and stop processing rules. The SCRIPT checks the body for a string. If the string is found, it moves the email to destination folder 1, otherwise it moves it to destination folder 2.

Sadly, I can't seem to get the script (code below) to do anything (mail just goes to inbox rather than either folder specified in script). A lot of this was pieced together from online examples, so I don't understand it all, but I figure I'd ask this now while I research the stuff I don't get. Any ideas on how to get this to work as intended?

'Use the MailItem class of item
Public Sub NCRFRule(Item As Outlook.MailItem)

        Dim MAPI As NameSpace  'Don't know what this does
        Dim dest1, dest2 As Folder  'declare destination folders
        Dim newMail As MailItem  'set item type

        'Don't know what this does.
        Set MAPI = GetNamespace("MAPI")

        'Set the destination folders
        Set dest1 = MAPI.Folders("Inbox").Folders("NCRFs")
        Set dest2 = MAPI.Folders("Inbox").Folders("other's NCRFs")

        'Rule if-statement.  If text is found, move mail to dest1 folder
        If InStr(1, newMail.Body, "Your Required Action") <> 0 Then
            newMail.Move dest1
            GoTo cutOut:
        End If

        'If the above If-statement doesn't execute, text wasn't found, 
        'move mail to other destination folder.
        newMail.Move dest2

    cutOut:

    End Sub

Note: this code is in the "ThisOutlookSession" module.

Upvotes: 0

Views: 444

Answers (2)

AnthonyJS
AnthonyJS

Reputation: 153

Building on What Eugene explained, changing

Set dest1 = MAPI.Folders("Inbox").Folders("NCRFs")
Set dest2 = MAPI.Folders("Inbox").Folders("other's NCRFs")

to

Set dest1 = MAPI.GetDefaultFolder(olFolderInbox).Folders("NCRFs")
Set dest2 = MAPI.GetDefaultFolder(olFolderInbox).Folders("other's NCRFs")

got that part to work. Then I had to remove the line

Dim newMail As MailItem  'set item type

and replace all instances of "newMail" with "Item". Now it works!

Upvotes: 0

Eugene Astafiev
Eugene Astafiev

Reputation: 49397

MAPI.Folders("Inbox")

There is no such folder. Use the GetDefaultFolder method of the Namespace or Store class instead.

Also you may find the Getting Started with VBA in Outlook 2010 article helpful.

Upvotes: 2

Related Questions