Have you ever felt the need of an Excel based VBA tool or code which can help you to draft Outlook emails in bulk by reading recipients and other details from Excel? Here is very simple solution to your problem, you can use below VBA code to draft emails in Outlook draft folder.
Public Sub DraftOutlookEmails()
'Microsoft Outlook XX.X Object Library is required to run this code
'Variable declaration
Dim objOutlook As Outlook.Application
Dim objMail As Outlook.MailItem
Dim lCounter As Long
'Set objects
Set objOutlook = Outlook.Application
'Read details from Excel sheet and draft emails
For lCounter = 6 To 8 'You can change the counter as per requirement
'Create a new email item
Set objMail = objOutlook.CreateItem(olMailItem)
'To
objMail.To = Sheet1.Range("A" & lCounter).Value
'Cc
objMail.CC = Sheet1.Range("B" & lCounter).Value
'Subject
objMail.Subject = Sheet1.Range("C" & lCounter).Value
'Email Body
objMail.Body = Sheet1.Range("D" & lCounter).Value
'Add Attachment
objMail.Attachments.Add (Sheet1.Range("E" & lCounter).Value)
'Draft email
objMail.Close (olSave)
'Close the object
Set objMail = Nothing
Next
'Show confirmation message to user
MsgBox "Done", vbInformation
End Sub
It is worth to mention that you must have MS Outlook installed in your system to use this code and you also need to add Office reference (Microsoft Outlook XX.X Object Library) in Excel VBA from Menu Bar (Tools>References…). Below are the steps to add Office reference in Excel VBA:
To use this code in your Excel file, follow below steps:
1. Open an Excel file
2. Press Alt+F11
3. Insert a Module (Insert>Module) from menu bar
4. Paste the code in the module
5. Now add a shape in Excel sheet
6. Give a name to the shape like ‘Draft Outlook Emails’
7. Right click on the shape and select ‘Assign Macro…’
8. Select ‘DraftOutlookEmails’ from the list and click on ‘Ok’ button
9. Done
To help you practice this code, we have made this code available through practice file. Click on the below link to download the practice file.
Add new line in Excel cell lets you type on multiple lines within the same cell. Instead of having all the text in one long line, you can split it up to make it easier…
VBA Code to Convert MM.DD.YYYY To DD.MMM.YYYY in Excel In different parts of the world, there are different languages spoken and written. With this, a VBA programmer also faces language related issues while writing a…
In this tutorial, you’ll learn what an Excel array formula is, how to enter it properly, and how to use array constants and array functions.
Array formulas are a very powerful tool in Excel, allowing you to do multiple calculations with a single formula. One array formula can replace many regular formulas. However, most users—around 90%—have never used them because they seem intimidating to learn.
Array formulas are known to be one of the trickiest Excel features to understand. The goal of this tutorial is to make learning them as easy and simple as possible
VBA CODE TO HIDE MENU RIBBON IN MS ACCESS In MS Access, there are multiple ways to protect your code or tool from un-authorized access and edits. Some developers prefers to hide MS Access ribbons…
Working with huge data is always exciting and challenging. From 2007 version onward, Excel is supporting more than a million rows in each worksheet. One of the common problems with huge data is “Duplicates” and the bigger problem is to identify and remove these duplicates. In this article, we will be sharing 4 ways to delete duplicate records from your data.
This guide shows how to use the nested IF function in Excel to check several conditions. You will also learn about other functions that can be to use than a nested formula.
When you want to make decisions in Excel, you often use an IF formula. It checks if something is true, then gives one result if it is and another result if it isn’t. If you need to check more than one thing, you can put many IFs inside each other.
Although using multiple IFs is common, it’s not the only way to check several conditions in Excel. This guide will introduce you to some easier and useful alternatives.
How can I reference a table I want to add in email body? Lets say for example I want a table (with matched formatting) in between this is a test email 1 and thanks?
Also how would you go about including a signature?
Thanks!
Thanks Sam for highlighting your challenge. This seems a customized requirement. We are currently working on VBA Utilities which will be available under Tools and Templates Section soon. Hope that will help your needs.
If you are looking to hire a VBA expert to complete your project, you may submit your project details at https://excelsirji.com/hire-us/ and we will get back to you in 48 hours with details.
Happy Reading 🙂
Your Excel mate
Great News Sam,
We have created a utility tool as you asked. You may get the same from below link:
https://products.excelsirji.com/downloads/outlook-bulk-email-tool/
Please let us know your valuable feedback.
Regards
Excel Mate
Thank you for publishing this example. Everything works great in my environment, with one exception. When I send the draft e-mail, the e-mail is bounced because my company domain was attached to the e-mail address pulled from the spreadsheet. For example, from my spreadsheet the email address [email protected] is being sent to [email protected]@mycompany.com. If I manually type the email address or even copy/paste from Excel into Outlook, it displays exactly the same in Outlook as the one populated from Excel but those are sent correctly. Any idea why? Thanks again!
Hi Marty,
Please accept our apologies for delayed response.
The issue explained by you seems to be caused due to mailto tag available in To (Column A) and Cc (Column B) in the sheet. Please ensure that email id mentioned in the Excel sheet is plain text and no hyperlink or mailto tag is attached to it.
Regards,
Your Excel Mate
Hi,
Thanks for the code.
I need to attach multiple files based on partial filename within the same folder.
Can you please kindly how can I achieve that using above draft email outlook code.
Thanks in advance.
Hi Shiva,
You can try below code where new variable named strBaseFolderPath has been added to define base folder path where attachments are saved:
Note that this code does not attach multiple files in one email instead only one attachment can be added per email.
You can also have a look at https://products.excelsirji.com/downloads/outlook-bulk-email-tool/. Though it also does not support multiple attachments per email but we can customize it for you.
Regards
ExcelSirJi Team
It runs and says “done” but there is no draft email popping up or in the outlook email box. I have Microsoft Outlook 16.0 Object Library added in reference.
Could you please check “Draft” folder in your outlook. It should show there. Thanks
Hi Sir,
Thnks a lot for the above. Works well.
However, lets say the word “test” in email body should be Bold, i have it as bold in the excel sheet but when the mails are drafted it does not appear as bold. Is there a way to solve this?
Best,
Hi Domah,
It may not be simple but let me suggest you have way out.
First replace the code
objMail.Body = Sheet1.Range("D" & lCounter).Value
withobjMail.HTMLBody = Sheet1.Range("D" & lCounter).Value
Then write email body in Excel in HTML format, something like below:
Hi,
This is a <b>test</b> email 1.
Thanks
Note that there is a bold tag added for test word.
Then run the code, it should work.
Thanks & Regards,
ExcelSirJi Team
Hello,
I copied this code tried to Run but I didnt find this Excel sheet to fill details For To,cc etc. Can u plz guide on this.
If possible please share Macro to if not possible then pl guide here how can I do this?
Hi Prakash,
You can have a look at Outlook Bulk Email Tool.
https://products.excelsirji.com/downloads/outlook-bulk-email-tool/
Regards,
ExcelSirJi
Hi I tried using the above VBA code to automatically create draft mail, but all the time only blank mails are formed please help
There could be 2 reasons for this:
Hope this would solve your problem.
HI,
I tried what you have written, but event though, all mail attributes are right, then also my emails, to , cc , subject, body,, still everything is empty
please help
I will share a video this week on the same on my YouTube channel. Hope that may help.
Nice post. I learn something totally new and challenging on websites
Great. Keep Learning 🙂
Hi! Thank you for the code. May I have an additional code to the existing that includes a table on the body? Thank you.
Hi Cles,
You may refer to Outlook Bulk Email Tool for the ready made solution. If you are just looking for a code to add table on the email body then you can refer VBA Code to Convert Excel Range into HTML Table post.
Regards,
ExcelSirJi Team
Hi. Thank you very nice artichle. like admin 😉
Thank you so much for your comment. it really inspires us.
I’m waiting for more content. This was very good.
Thank you mate.