Search code examples
vbaemailoutlook

Outlook Reply or ReplyAll to an Email


Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
objMail.To = "[email protected]"
objMail.cc = "[email protected]"
objMail.Subject = "Mail test"
objMail.HTMLBody = "This is my message"
unload me
objMail.Display
Set objMail = Nothing
Set objOutlook = Nothing

I am trying to add in another function that help to reply a selected email but can't figure out how I can mix this with Item As Outlook.MailItem I understand that replying an email will require that.

So I would like to know how I can add on so that I can select an email, execute the macro and it will input the recipient email into objMail.To and recipient's body into objMail.HTMLBody


Solution

  • To simply Reply or ReplyAll selected messages try the following.

    Option Explicit
    Sub ReplyMSG()
        Dim olItem As Outlook.MailItem
        Dim olReply As MailItem ' Reply
        Dim olRecip As Recipient ' Add Recipient
        
        For Each olItem In Application.ActiveExplorer.Selection
            Set olReply = olItem.ReplyAll
            Set olRecip = olReply.Recipients.Add("Email Address Here") ' Recipient Address
            olRecip.Type = olCC
            olReply.HTMLBody = "Hello, Thank you. " & vbCrLf & olReply.HTMLBody
            olReply.Display
        
            'olReply.Send
        Next olItem
    End Sub
    

    To hide the recipient use BCC Example

    olRecip.Type = olBcc

    To add multiple recipient just add

    Set olRecip = olReply.Recipients.Add("Email Here")
    Set olRecip = olReply.Recipients.Add("Email Here")
    Set olRecip = olReply.Recipients.Add("Email Here")
    

    With out Recipient try the following.

    Option Explicit
    Sub ReplyMSG()
        Dim olItem As Outlook.MailItem
        Dim olReply As MailItem ' Reply
    
        For Each olItem In Application.ActiveExplorer.Selection
            Set olReply = olItem.ReplyAll
            olReply.HTMLBody = "Hello, Thank you. " & vbCrLf & olReply.HTMLBody
            olReply.Display
    
            'olReply.Send
        Next olItem
    End Sub