Yes you can use a template

Set msg = OA.CreateItemFromTemplate("D:\Path\templatename.oft")
however if you use the line
msg.body = sh.Range("D" & i).Value
any text in the template will be overwritten by that content.
If you want to edit the body of the message to include your Excel data you need a different approach - see the code I posted at http://www.vbaexpress.com/forum/show...cro-from-excel