Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Outlook Rule Save email to text

Tags:

email

vba

outlook

I'm having trouble with automatically exporting the body of an email into a text file using a script. I've managed a script that will save the text into a file on a macro but that won't work on a rule which is what I need.

My current code is as follows:

Sub SaveAsTXT()
 Dim myItem As Outlook.Inspector
 Dim objItem As Object
 Dim myFolder As Folder



 Set myItem = Application.ActiveInspector
 If Not TypeName(myItem) = "Nothing" Then

        Set myNamespace = Application.GetNamespace("MAPI")
        Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)

 Set objItem = myItem.CurrentItem
 strname = objItem.Subject
 strdate = Format(objItem.ReceivedTime, " yyyy mm dd")
 objItem.SaveAs "c:\users\philip\documents\" & strname & strdate & ".txt", olTXT
    End If

End Sub

Apologies if it looks a bit messy, I've edited it countless times trying to get it to work.

That's the code that will correctly run when I'm in the open email and run it as a macro but it won't work correctly when run as a rule I have tried amending to Sub SaveAsTXT(Item as Outlook.Mailitem) but this also doesn't seem to work

So basically the question is how to I ensure the code will select the email (which will always be entitled "Rotas" without quotes) when it is run as a rule?

Info: Using office 2010 and I'm not a very good coder to start with.

like image 998
Auron5500 Avatar asked Dec 19 '14 15:12

Auron5500


1 Answers

Actually I managed to sort it out myself.

I didn't consider that the item as Outlook.Mailitem element was actually the thing that was selected by the rule. So I applied item as the object rather than objItem

Find the successful (and cleaned up) code below:

Sub SaveAsTXT(myMail As Outlook.MailItem)

 Dim objItem As Object
 Dim myFolder As Folder


 If Not TypeName(myitem) = "Nothing" Then

        If myMail.Subject = "Rotas" Then

 strname = myMail.Subject
 strdate = Format(myMail.ReceivedTime, " yyyy mm dd")
 myMail.SaveAs "c:\users\philip\documents\" & strname & ".txt", olTXT
    End If


 End If

End Sub
like image 104
Auron5500 Avatar answered Nov 18 '22 12:11

Auron5500