Frankly I would use Outlook to create the message. The majority of users that have Word will have Outlook, so why not use it? This will give you far more control over the message. There is of course the inherent difference between Word document and HTML message formats that may need to be accommodated. The following will paste the body of the document to the message body (and preserve the default signature).
The macro calls the Function - OutlookApp() - from Ben Clothier - http://www.rondebruin.nl/win/s1/outlook/openclose.htm - to start Outlook. This is a very useful Function and I strongly recommend it wherever you need to access Outlook from Word or Excel vba.
Option Explicit
Private Sub cmdSend1_Click()
Dim PauseTime As Long, Start As Long
Dim strPath As String
Dim xlApp As Object
Dim xlBook As Object
Dim NextRow As Long
Dim fso As Object
Dim olApp As Object
Dim oItem As Object
Dim olInsp As Object
Dim objDoc As Document
Dim objSel As Range
Dim oRng As Range
Const strWorkbook As String = "c:\template\excel_extract.xls"
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FileExists(strWorkbook) Then
MsgBox "The workbook does not exist." & vbCr & _
"Create the workbook " & vbCr & strWorkbook & vbCr & "and try again."
GoTo lbl_Exit
End If
On Error Resume Next
ActiveDocument.Save
strPath = ActiveDocument.FullName
If Len(ActiveDocument.Path) = 0 Then
MsgBox "The document has not been saved. It must be saved to use this process."
GoTo lbl_Exit
End If
Set oRng = ActiveDocument.Range
oRng.Copy
Set olApp = OutlookApp()
'Create a new mailitem
Set oItem = olApp.CreateItem(0)
With oItem
.BodyFormat = 2
.Display
Set objDoc = .GetInspector.WordEditor
Set objSel = objDoc.Range(0, 0)
objSel.Paste
.to = "someone@comewhere.com"
.Subject = ActiveDocument.Name
'.send 'Restore after testing
End With
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If Err Then
Set xlApp = CreateObject("Excel.Application")
End If
On Error GoTo 0
Set xlBook = xlApp.Workbooks.Open(FileName:=strWorkbook)
xlApp.Visible = True
NextRow = xlBook.Sheets(1).Range("A" & xlBook.Sheets(1).Rows.Count).End(-4162).Row + 1
xlBook.Sheets(1).Range("A" & NextRow) = strPath
xlBook.Save
xlBook.Close
xlApp.Quit
lbl_Exit:
Set fso = Nothing
Set olApp = Nothing
Set objDoc = Nothing
Set objSel = Nothing
Set oRng = Nothing
Set oItem = Nothing
Set xlApp = Nothing
Set xlBook = Nothing
Exit Sub
End Sub