Problem:
When I reply to a message, I want to save that particular message in the "Reply by me" folder in Outlook.
Solution: a macro that watches for reply, reply all or forward and files the original message after creating the reply/forward.
Tip: if you are filing all messages in the same folder, use a Quick Step in Outlook 2010 and above.
This macro moves the original message to a folder under the Inbox. The subfolder is created from the sender's display name. Because names can vary when a user uses multiple email clients, it may be better (but less user friendly) to use the email address.
Option Explicit Private WithEvents oExpl As Explorer Private WithEvents oItem As MailItem Private bDiscardEvents As Boolean Dim oResponse As MailItem Private Sub Application_Startup() Set oExpl = Application.ActiveExplorer bDiscardEvents = False End Sub Private Sub oExpl_SelectionChange() On Error Resume Next Set oItem = oExpl.Selection.Item(1) End Sub ' Reply Private Sub oItem_Reply(ByVal Response As Object, Cancel As Boolean) Cancel = True bDiscardEvents = True Set oResponse = oItem.Reply afterReply End Sub ' Forward Private Sub oItem_Forward(ByVal Response As Object, Cancel As Boolean) Cancel = True bDiscardEvents = True Set oResponse = oItem.Forward afterReply End Sub ' Reply all Private Sub oItem_ReplyAll(ByVal Response As Object, Cancel As Boolean) Cancel = True bDiscardEvents = True Set oResponse = oItem.ReplyAll afterReply End Sub Private Sub afterReply() Dim NS As Outlook.NameSpace Dim objDestFolder As Outlook.Folder Dim objInbox As Outlook.Folder Dim sSenderName As String oResponse.Display sSenderName = oItem.SentOnBehalfOfName If sSenderName = ";" Then sSenderName = oItem.SenderName End If Set NS = Application.GetNamespace("MAPI") Set objInbox = NS.GetDefaultFolder(olFolderInbox) On Error Resume Next Set objDestFolder = objInbox.Folders(sSenderName) If objDestFolder Is Nothing Then Set objDestFolder = objInbox.Folders.Add(sSenderName) End If oItem.Move objDestFolder bDiscardEvents = False Set oItem = Nothing Set objDestFolder = Nothing Set objInbox = Nothing Set NS = Nothing End Sub
How to use macros
First: You will need macro security set to low during testing.
To check your macro security in Outlook 2010 or 2013, go to File, Options, Trust Center and open Trust Center Settings, and change the Macro Settings. In Outlook 2007 and older, itâs at Tools, Macro Security.
After you test the macro and see that it works, you can either leave macro security set to low or sign the macro.
Open the VBA Editor by pressing Alt+F11 on your keyboard.
To put the code in a module:
- Right click on Project1 and choose Insert > Module
- Copy and paste the macro into the new module.
More information as well as screenshots are at How to use the VBA Editor
how do i make one for when i click on composing a new email message?
I have tried createitem(can't get it to work?), senditem(but this would work after i click send), send,
thank you
Diane, I created this VBA code with other posts of yours but am having some issues replying to meetings on the calendar. Any chance you could take a look and help me out?
https://forums.slipstick.com/threads/95372-replying-to-calendar-item-using-vba/