Reputation: 69
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
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