Outlook 2010 custom VBA script to move incoming mail message to a specific folder

noxee picture noxee · Apr 8, 2011 · Viewed 15.8k times · Source

I'm trying to create a custom rule for Outlook 2010 that inspect the subject of the email and if it makes a regular expression it's moved into a specific folder.

However when I run the script I get the following error when I try and get an Outlook.Folder object for the folder I want to move the message to:

Run-time error '91':
Object variable or With block variable not set

Below is the VBA script that I am using to check the email subject and move the message to the specified folder if it matches.

Sub MoveToETS(Item As Outlook.MailItem)
    Dim Subject As String
    Subject = Item.Subject

    Dim FolderToMoveTo As Outlook.Folder
    Set FolderToMoveTo = GetFolder("ETS")

    If (CheckSubject(Subject, "^[Project|Bug] (\d+?) - \[[UPDATE|NEW|RESOLVED]\]")) Then
        Item.Move (FolderToMoveTo)
    End If
End Sub

Function CheckSubject(Subject As String, PatternToCheck As String)
    Dim ObjRegExp As RegExp
    Dim ObjMatch As Match

    Set ObjRegExp = New RegExp
    ObjRegExp.Pattern = PatternToCheck

    If (ObjRegExp.Text(Subject) = True) Then
        CheckSubject = True
    End If

End Function

Function GetFolder(ByVal FolderName As String) As Outlook.Folder

    Dim ObjFolder As Outlook.Folder

    Set ObjFolder = Outlook.Application.Session.GetDefaultFolder(olFolderInbox).Folders("ETS")

    GetFolder = ObjFolder

End Function

Answer

paulmorriss picture paulmorriss · Apr 8, 2011

Your last but one line needs to be

Set GetFolder = ObjFolder