Save Selected Email Message as .msg File

Status
Not open for further replies.

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?
 
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
 
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))
 
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.
 
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
 
This is where the object name is set:
Set oMail = objItem


So you'd use

objItem.move objDelFolder

right before the

End If
Next
 
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
 
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
 
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.
 
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.
 
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
 
Status
Not open for further replies.
Similar threads
Thread starter Title Forum Replies Date
E Outlook 365 Save Selected Email Message as .msg File - oMail.Delete not working when SEARCH Outlook VBA and Custom Forms 0
E Save Selected Email Message as .msg File - digitally sign email doesn't works Outlook VBA and Custom Forms 1
Diane Poremsky Save Selected Email Message as .msg File Using Outlook 11
M 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 emails as msg file from Outlook Web AddIn (Office JS) Outlook VBA and Custom Forms 0
M Outlook Macro to save as Email with a file name format : Date_Timestamp_Sender initial_Email subject Outlook VBA and Custom Forms 0
C Outlook 365 Copy/Save Emails in Folder Outside Outlook to Show Date Sender Recipient Subject in Header Using Outlook 0
W Create a Quick Step or VBA to SAVE AS PDF in G:|Data|Client File Outlook VBA and Custom Forms 1
C Outlook (desktop app for Microsoft365) restarts every time I save my VBA? Using Outlook 1
D VBA Macro to Print and Save email to network location Outlook VBA and Custom Forms 1
N VBA Macro To Save Emails Outlook VBA and Custom Forms 1
N Save emails within a certain date range to network drive Outlook VBA and Custom Forms 0
T Outlook 365 Move newly created tasks automatically on save. 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 17
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

Similar threads

Back
Top