Save Selected Email Message as .msg File

Neil

Member
Outlook version
Outlook 365 64 bit
Email Account
IMAP
I found a macro written by Diane Poremsky which is almost 100% of what I want. I would to add to the macro that the selected email(s) after saving to a folder be moved to the trash folder in Outlook. Can someone tell me how to modify the macro?

Also, is there a good site that I can go to so I can learn how to write my own macros?
 

Neil

Member
Outlook version
Outlook 365 64 bit
Email Account
IMAP
What macro is it?

use objectname.Delete to delete the message.

or you can use this:
objDelFolder = Session.GetDefaultFolder(olFolderDeletedItems))
objectname.move objDelFolder
I pasted in "objectname.Delete" and I get an run time error 424 - Object required. I then tried pasting in

objDelFolder = Session.GetDefaultFolder(olFolderDeletedItems))
objectname.move objDelFolder

and the first line shows in red

Please help further
 

Diane Poremsky

Senior Member
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
You need to use the object name you use in your macro - whaever object name the macro uses for the selected message, that's what you use here.
objectname.move objDelFolder

Ones I commonly use are
obj.move objDelFolder
item.move objDelFolder
objmsg.move objDelFolder

The red line is my bad... I forgot the Set - you may also need a DIM statement at the top
Dim objDelFolder as Folder

Set objDelFolder = Session.GetDefaultFolder(olFolderDeletedItems))
 

Diane Poremsky

Senior Member
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
As for sites for learning Outlook VBA... there aren't any really comprehensive ones, especially now that Outlookcode.com is defunct. Microsoft has VBA help online but not always a lot of examples. stackoverflow and slipstick (of course :)) have samples, as do some random websites you might find searching.

If you need fundamentals on VBA - Excel sites are good. While there are a lot of differences with VBA between Outlook, Word, and Excel - there are a lot of similarities, and the fundamentals are the same. If you google for help with functions and error codes and there are excel sites in the results, don't dismiss them because they are about excel - you'll often get enough information to point to the problem.
 

Neil

Member
Outlook version
Outlook 365 64 bit
Email Account
IMAP
You need to use the object name you use in your macro - whaever object name the macro uses for the selected message, that's what you use here.
objectname.move objDelFolder

Ones I commonly use are
obj.move objDelFolder
item.move objDelFolder
objmsg.move objDelFolder

The red line is my bad... I forgot the Set - you may also need a DIM statement at the top
Dim objDelFolder as Folder

Set objDelFolder = Session.GetDefaultFolder(olFolderDeletedItems))
I am sorry but I do not see object name in the macro, below is the entire macro I am using which is identical to the macro you so kindly posted.

Sub Save_Email_as_MSG()
Option Explicit
Public Sub SaveMessageAsMsg()
Dim oMail As Outlook.MailItem
Dim objItem As Object
Dim sPath As String
Dim dtDate As Date
Dim sName As String
Dim enviro As String

enviro = CStr(Environ("USERPROFILE"))
For Each objItem In ActiveExplorer.Selection
If objItem.MessageClass = "IPM.Note" Then
Set oMail = objItem

sName = oMail.Subject
ReplaceCharsForFileName sName, "-"

dtDate = oMail.ReceivedTime
sName = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, _
vbUseSystem) & Format(dtDate, "-hhnnss", _
vbUseSystemDayOfWeek, vbUseSystem) & "-" & sName & ".msg"

sPath = enviro & "\Documents\"
Debug.Print sPath & sName
oMail.SaveAs sPath & sName, olMSG

End If
Next


End Sub
 

Diane Poremsky

Senior Member
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
This is where the object name is set:
Set oMail = objItem


So you'd use

objItem.move objDelFolder

right before the

End If
Next
 

Neil

Member
Outlook version
Outlook 365 64 bit
Email Account
IMAP
I am sorry to bug you but I added it as shown below but I get an error 13 Type mismatch. Also, I thought of another minor item for the macro. Can you also give me instruction on making the moved email in the trash as "read"?

Again, thanks for your help.

Sub Save_Email_as_MSG()
Option Explicit
Public Sub SaveMessageAsMsg()
Dim oMail As Outlook.MailItem
Dim objItem As Object
Dim sPath As String
Dim dtDate As Date
Dim sName As String
Dim enviro As String

enviro = CStr(Environ("USERPROFILE"))
For Each objItem In ActiveExplorer.Selection
If objItem.MessageClass = "IPM.Note" Then
Set oMail = objItem

sName = oMail.Subject
ReplaceCharsForFileName sName, "-"

dtDate = oMail.ReceivedTime
sName = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, _
vbUseSystem) & Format(dtDate, "-hhnnss", _
vbUseSystemDayOfWeek, vbUseSystem) & "-" & sName & ".msg"

sPath = enviro & "\Documents\Temp\"
Debug.Print sPath & sName
oMail.SaveAs sPath & sName, olMSG
objItem.Move objDelFolder

End If
Next


End Sub
 

Diane Poremsky

Senior Member
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
since you are using oMail - try that -

oMail.unread = False
'oMail.save ' may not be necessary
oMail.Move objDelFolder

Did you set the delete folder ?
Dim objDelFolder as Folder

Set objDelFolder = Session.GetDefaultFolder(olFolderDeletedItems))

This is working for me -

Code:
Public Sub SaveMessageAsMsg()
Dim oMail As Outlook.MailItem
Dim objItem As Object
Dim sPath As String
Dim dtDate As Date
Dim sName As String
Dim enviro As String

Dim objDelFolder As Folder
Set objDelFolder = Session.GetDefaultFolder(olFolderDeletedItems)


enviro = CStr(Environ("USERPROFILE"))
For Each objItem In ActiveExplorer.Selection
If objItem.MessageClass = "IPM.Note" Then
Set oMail = objItem

sName = oMail.Subject
'ReplaceCharsForFileName sName, "-"

dtDate = oMail.ReceivedTime
sName = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, _
vbUseSystem) & Format(dtDate, "-hhnnss", _
vbUseSystemDayOfWeek, vbUseSystem) & "-" & sName & ".msg"

sPath = enviro & "\Documents\"
Debug.Print sPath & sName
oMail.SaveAs sPath & sName, olMsg
oMail.UnRead = False
oMail.Move objDelFolder


End If
Next
End Sub
 

Neil

Member
Outlook version
Outlook 365 64 bit
Email Account
IMAP
since you are using oMail - try that -

oMail.unread = False
'oMail.save ' may not be necessary
oMail.Move objDelFolder

Did you set the delete folder ?
Dim objDelFolder as Folder

Set objDelFolder = Session.GetDefaultFolder(olFolderDeletedItems))

This is working for me -

Code:
Public Sub SaveMessageAsMsg()
Dim oMail As Outlook.MailItem
Dim objItem As Object
Dim sPath As String
Dim dtDate As Date
Dim sName As String
Dim enviro As String

Dim objDelFolder As Folder
Set objDelFolder = Session.GetDefaultFolder(olFolderDeletedItems)


enviro = CStr(Environ("USERPROFILE"))
For Each objItem In ActiveExplorer.Selection
If objItem.MessageClass = "IPM.Note" Then
Set oMail = objItem

sName = oMail.Subject
'ReplaceCharsForFileName sName, "-"

dtDate = oMail.ReceivedTime
sName = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, _
vbUseSystem) & Format(dtDate, "-hhnnss", _
vbUseSystemDayOfWeek, vbUseSystem) & "-" & sName & ".msg"

sPath = enviro & "\Documents\"
Debug.Print sPath & sName
oMail.SaveAs sPath & sName, olMsg
oMail.UnRead = False
oMail.Move objDelFolder


End If
Next
End Sub
Thanks so much, I will not be able to try this solution for a while but if you say it works then I am sure it will for me.
 

Neil

Member
Outlook version
Outlook 365 64 bit
Email Account
IMAP
Diane,

Thank you so much, the macro you supplied works almost exactly thy way I want. The email that is deleted goes in the the "deleted items" folder in my Exchange email account but I would prefer it goes into the "trash" folder in my IMAP account. The email item is in the IMAP account to start off. Would appreciate the suggestion on how to change.
 

Neil

Member
Outlook version
Outlook 365 64 bit
Email Account
IMAP
I am running the macro on my Win 10 PC and it works fine, but I tried it on y wife's Win 10 PC and It does not run. Below is a screen print of the errors. I would appreciate you suggesting how to fix the problem.

Thank you!
Outlook Error Message.jpg
Outlook Error Message 2.jpg
 
Similar threads
Thread starter Title Forum Replies Date
Diane Poremsky Save Selected Email Message as .msg File Using Outlook 11
I Save selected email message as .msg file (with user to choose folder location) Outlook VBA and Custom Forms 14
G VBA to save selected Outlook msg with new name in selected network Windows folder Outlook VBA and Custom Forms 1
N Save selected messages VBA does not save replies and/or messages that contain : in subject Outlook VBA and Custom Forms 1
G Save attachment run a script rule Outlook VBA and Custom Forms 0
G Save and Rename Outlook Email Attachments Outlook VBA and Custom Forms 0
D Outlook 2016 64bit, Cannot Save in 'HTML', format Using Outlook 1
L Macro to add Date & Time etc to "drag to save" e-mails Outlook VBA and Custom Forms 8
S save attachment with date & time mentioned inside the file Outlook VBA and Custom Forms 0
S Add VBA save code Using Outlook 0
A Edit attachment Save and Reply Outlook VBA and Custom Forms 0
S Outlook (2016 32bit; Gmail IMAP) - Save sent message to Outllook Folder Outlook VBA and Custom Forms 0
P Outlook pst file is too huge with POP3. How to save more space? Using Outlook 4
D Prevent popup of "Do you want to save changes?" when closing after opening an appointment to view Outlook VBA and Custom Forms 2
A Unable to save recurring Meeting to Documents folder due to error Using Outlook 2
M Outlook 2013 Script Assistance - Save Opened Link with Subject Added Outlook VBA and Custom Forms 1
R Use an ItemAdd to Save Attachments on Arrival Outlook VBA and Custom Forms 0
W Outlook Calendar does not save view any longer! Using Outlook 3
S automate save the .xlxs file to share Network Using Outlook 1
S save email from excel Outlook VBA and Custom Forms 1
Y Open and Save Hyperlink Files in multiple emails Outlook VBA and Custom Forms 9
9 Outlook 2016 How to save an Outlook attachment to a specific folder then delete the email it came from? Using Outlook 1
O Save attachments using hotkey without changing attributes Outlook VBA and Custom Forms 1
geofferyh Cannot get Macro to SAVE more than one message attachment??? Outlook VBA and Custom Forms 5
N Open & Save VBAProject.Otm using VBA Code Outlook VBA and Custom Forms 1
R VBA | Chosing path to save file Outlook VBA and Custom Forms 1
W Save and rename outlook email attachments to include domain name & date received Outlook VBA and Custom Forms 4
V Change default default save location to Quick Access Using Outlook 1
W Save Outlook attachment in network folder and rename to current date and time Outlook VBA and Custom Forms 18
C Change default "Save Sent Item To" folder Outlook VBA and Custom Forms 9
C Outlook - cannot save subject line changes Using Outlook 2
J Save E-mail attachments in a specific folder Outlook VBA and Custom Forms 0
I Outlook 2016 64bit - on receipt convert emails into PDF and save Outlook VBA and Custom Forms 2
V VB script code to save a specific email attachment from a given email Outlook VBA and Custom Forms 14
C Auto save outlook attachments when email is received Outlook VBA and Custom Forms 1
N editing drafts - won't let me save Using Outlook 12
nathandavies Email Details to Excel & Save as .MSG on one macro - combination of 2 macros Outlook VBA and Custom Forms 3
C Need VBA code to automatically save message outside outlook and add date Outlook VBA and Custom Forms 1
D Save Sent Item to Using Outlook 0
Diane Poremsky Export (Save) Outlook Contact photos Using Outlook 0
Diane Poremsky Save Messages and Attachments to a New Folder Using Outlook 0
B Delete/replace old files and save new attachments Using Outlook 1
E Outlook 2016 and Numerous Prompts to Save Emails Using Outlook 3
Diane Poremsky Save Outlook Email as a PDF Using Outlook 0
Diane Poremsky Edit and Save Outlook's Read-Only Attachments Using Outlook 0
Diane Poremsky Save Attachments to the Hard Drive Using Outlook 2
B VBA Help Email that will save as draft and send as attachment Outlook VBA and Custom Forms 3
C Save Subject of Received Email as a String Outlook VBA and Custom Forms 1
C Rule To Save attachments on receipt of email Outlook VBA and Custom Forms 2
O Cannot open or save calendar items Using Outlook 0

Similar threads

Top