Philip Day
Philip Day

Reputation: 69

Save As Mail Items by Subject

I'm trying to use the first characters in a subject line to Save As Mail Items to different folders on my computer.

The line:

Case oMail.Subject Like "TEST1*"

throws the error:

"Object Variable or With Block Variable not set"

Here's the paraphrased script:

Sub SavetoComputer() 
Dim objNS As Outlook.NameSpace: Set objNS = GetNamespace("MAPI")
Dim olFolder As Outlook.MAPIFolder
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
Dim Item As Object
Dim oMail As Outlook.MailItem: Set oMail = Item
Dim SaveFolder As String
Dim TempSubject As String
Dim Serial As Integer, i As Integer

i = 0

For Each Item In olFolder.Items
    Serial = 0
    If TypeOf Item Is Outlook.MailItem Then
        Select Case True

        'Test case 1
        Case oMail.Subject Like "TEST1*"
            SaveFolder = "C:\Folder\Folder\Folder\"
        'Test case 2
        Case oMail.Subject Like "TEST2&"
            SaveFolder = "C:\Folder\Folder\Folder2\"
        Case Else
            i = i + 1
        End Select

        On Error GoTo Continue
        oMail.SaveAs SaveFolder & oMail.Subject

Continue:
        TempSubject = oMail.Subject & "Update: " & (Serial + 1)

        oMail.SaveAs SaveFolder & TempSubject
    End If
Next

Debug.Print i & " Message(s) were not sorted."

End Sub

Upvotes: 0

Views: 90

Answers (1)

L0uis
L0uis

Reputation: 721

The oMailItem is not set. Try setting the oMailItem in your loop:

For Each Item In olFolder.Items
    Serial = 0
    If TypeOf Item Is Outlook.MailItem Then
       Dim oMail As Outlook.MailItem: Set oMail = Item

Upvotes: 1

Related Questions