Thanks for the suggestions. I didn't know about .Formatted Text. Gave it a try but got the same results. I had already played with the settings on the OL mail message's bodyformat and nothing worked; setting it to RichText didn't preserve the formatting of my Word Building Block entry and it included my attachment in the body as an Icon instead of up on the attachments line. Not what I wanted.
I fell back to my Excel experience and adapted Ron DeBruin's RangeToHTML method, and it worked for me. All formatting is preserved in the resulting email I create.
Seems like a lot of work. Am I missing an easier way? My scenario is I have two or three boilerplate messages saved as BuildingBlock entries in the Template. Depending on circumstances found in the document, one of those boilerplate entries will be used by a routine that packages all but the first page of the document into a PDF and attaches it to an email. This is all launched by a Ribbon button. One click, your email is ready to go.... Any ideas on making this more efficient most welcome!
Still curious about not being able to directly assign the complete contents of the the BuildingBlock Entry to a string variable. Having to insert it in the document first seems like an unnecessary step.
Here's how I got around it so far.
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim rng As Word.Range
Dim RangetoHTML As Variant
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
ActiveDocument.AttachedTemplate.BuildingBlockEntries("Contract Email").Insert where:=ActiveDocument.SelectContentControlsByTag("email").Item(1).Range, RichText:=True
Set rng = ActiveDocument.SelectContentControlsByTag("email").Item(1).Range
ActiveDocument.SaveAs TempFile, wdFormatHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
Set ts = Nothing
Set fso = Nothing
.To = getCCValue(ActiveDocument, "conEmail")
.Subject = "Contract: " & getCCValue(ActiveDocument, "panel")
.HTMLBody = RangetoHTML
.BillingInformation = getCCValue(ActiveDocument, "bizName")
Formatting tags added by mark007