Send an email from Excel 2007 VBA using an Outlook Template & Set Variables

calendar_today Asked Dec 12, 2011
thumb_up 8 upvotes
history Updated April 16, 2026

Question posted 2011 · +3 upvotes

I have a list of data, let’s say client information (Name, Email, Amount Owing etc.), stored in an Excel worksheet . My aim is to click a button in Excel and send each client their information in an Outlook Template.

  1. create a mail object
  2. set the mail object to the template file
  3. setting and then filling in the template with data about the current client – mostly stuck here, not sure how to specify variables in a template and then relate to them in VBA
  4. save to drafts for later review/send

eg. Dear << clientname >> = Dear John Smith

My code thus far:

Dim myOlApp As Outlook.Application
Dim MyItem As Outlook.MailItem

Set myOlApp = CreateObject("Outlook.Application")
Set MyItem = myOlApp.CreateItemFromTemplate("C:egTemplate.oft")

With MyItem
    .To = Worksheets("Clients").Range(1, 2)
    .Subject = "Monthly bill"
    'Refer to and fill in variable items in template
    .Save
End With

Set MyItem = Nothing
Set MyOlApp = Nothing

I need to know if this is even possible, can I do it without plugins and if so, does anyone know a good link/tutorial I can follow?

Thanks in advance and kind regards

Update Added my code and made some changes to the request

Accepted answer +8 upvotes

Here is what you can do :

With MyItem
    'Refer to and fill in variable items in template
    .Body = Replace(.Body, "<< clientname >>", Worksheets("Clients").Range(1, 2))
End With

or, if your mail is in HTML:

With MyItem
    'Refer to and fill in variable items in template
    .HTMLBody = Replace(.HTMLBody, "&lt;&lt; clientname &gt;&gt;",  Worksheets("Clients").Range(1, 2))
End With

Tested successfully on Excel / Outlook 2007

2 code variants in this answer

  • Variant 1 — 4 lines, starts with With MyItem
  • Variant 2 — 4 lines, starts with With MyItem

Excel VBA objects referenced (4)

  • Application — Using events with the Application object
  • Application — Working with Other Applications
  • Range — Refer to Cells by Using a Range Object
  • Range — Delete Duplicate Entries in a Range

Top excel-vba Q&A (6)

+8 upvotes ranks this answer #88 out of 136 excel-vba solutions on this site .