Rather than recreating the entire email with VBA, try Replace.
Unfortunately I had a security warning message on each use of Replace.
Code:
Sub CreateFromTemplate_TF()
Dim myOlApp As Outlook.Application
Dim MyItem As Outlook.MailItem
Set myOlApp = CreateObject("Outlook.Application")
Set MyItem = myOlApp.CreateItemFromTemplate("C:\reportTF.oft")
MyItem.Subject = "report for: " & Format(Date, "mm/dd/yy")
MyItem.HTMLBody = Replace(MyItem.HTMLBody, "yesterday", Format(Date - 1, "mm/dd/yy"))
MyItem.HTMLBody = Replace(MyItem.HTMLBody, "today", Format(Date, "mm/dd/yy"))
MyItem.Display
End Sub
Sub CreateFromTemplate_M()
Dim myOlApp As Outlook.Application
Dim MyItem As Outlook.MailItem
Set myOlApp = CreateObject("Outlook.Application")
Set MyItem = myOlApp.CreateItemFromTemplate("C:\reportM.oft")
MyItem.Subject = "report for: " & Format(Date, "mm/dd/yy")
MyItem.HTMLBody = Replace(MyItem.HTMLBody, "Friday", Format(Date - 3, "mm/dd/yy"))
MyItem.HTMLBody = Replace(MyItem.HTMLBody, "Saturday", Format(Date - 2, "mm/dd/yy"))
MyItem.HTMLBody = Replace(MyItem.HTMLBody, "today", Format(Date, "mm/dd/yy"))
MyItem.Display
End Sub