Reply
 
Thread Tools Display Modes
  #1   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Gaspard Gaspard is offline
external usenet poster
 
Posts: 1
Default MailMergeElectonicMailMailAsAttach + default body of e-mail

Hey,
Is this possible to customize the body* of the e-mail if the merge mail is
done in the attachement?

Sub SendEmail()

With ActiveDocument.MailMerge
.Destination = wdSendToEmail
.MailAddressFieldName = "Email"
.MailAsAttachment = True
.MailFormat = wdMailFormatHTML
.MailSubject = "EmailTest"

*.HTMLBody= "Blablabla" or Body= "Blablabla" ????

.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
End Sub

Thanks - Gaspard
  #2   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Peter Jamieson Peter Jamieson is offline
external usenet poster
 
Posts: 4,582
Default MailMergeElectonicMailMailAsAttach + default body of e-mail

You don't really get any control over the format/content of the e-mails if
you use MailMerge to generate them (even if you use Word Events to do stuff
for each e-mail.

You may be able to adapt Doug Robbins' article at

http://word.mvps.org/FAQs/MailMerge/...ttachments.htm

using HTMLBody instead of Body, or adapt the code provided below (which is
probably much the same as Doug's). I haven't tried it with HTMLBody though.

Peter Jamieson

You have to make a reference to Microsoft Outlook 11.0 Object Library (or
the appropriate version of the library) in the VB Editor when this module is
open.

Sub EmailOneDocPerSourceRecWithBody()
Dim bOutlookStarted As Boolean
Dim bTerminateMerge As Boolean
Dim intSourceRecord As Integer
Dim objMailItem As Outlook.MailItem
Dim objMerge As Word.MailMerge
Dim objOutlook As Outlook.Application
Dim strMailSubject As String
Dim strMailTo As String
Dim strMailBody As String
Dim strOutputDocumentName As String

bOutlookStarted = False
bTerminateMerge = False

' Set up a reference to the
' Activedocument, partly because
' the ActiveDocument changes as you
' merge each record

Set objMerge = ActiveDocument.MailMerge

' Start Outlook as necessary

On Error Resume Next
Set objOutlook = GetObject(, "Outlook.Application")
If Err 0 Then
Set objOutlook = CreateObject("Outlook.Application")
bOutlookStarted = True
End If

With objMerge

' If no data source has been defined,
' do it here using OpenDataSource.
' But if it is already defined in the
' document, you should not need to
' define it here.

' .OpenDataSource _
' Name:="whatever"

intSourceRecord = 1

Do Until bTerminateMerge
.DataSource.ActiveRecord = intSourceRecord

' if we have gone past the end
' (and possibly, if there are no records)
' then the Activerecord will not be what
' we have just tried to set it to

If .DataSource.ActiveRecord intSourceRecord Then
bTerminateMerge = True
' the record exists
Else

' while we are looking at the
' correct activerecord,
' create the mail subject, body and "to"
' Just some sample code here - replace it with
' whatever you need

strMailSubject = _
"Results for " & _
objMerge.DataSource.DataFields("Firstname") & _
" " & objMerge.DataSource.DataFields("Lastname")

strMailBody = _
"Dear " & objMerge.DataSource.DataFields("Firstname") & _
vbCrLf & _
"Please find attached a Word document containing" & vbCrLf & _
"your results for..." & vbCrLf & _
vbCrLf & _
"Yours" & vbCrLf & _
"Your name"
strMailTo = objMerge.DataSource.DataFields("Emailaddress")

' create the document path name
' In this case it can be te same for every recipient,
' but if you want to retain copies of the
' document, you can use info. in the data source

' this is an example - insert your
' own pathname here

strOutputDocumentName = "c:\a\results.doc"

' strOutputDocumentName = _
' "c:\mymergeletters\_" & _
' .DataSource.DataFields("Lastname").Value & _
' " letter.doc"
.DataSource.FirstRecord = intSourceRecord
.DataSource.LastRecord = intSourceRecord
.Destination = wdSendToNewDocument
.Execute

' The Activedocument is always the
' output document

' Add any parameters you need to these calls
ActiveDocument.SaveAs strOutputDocumentName
ActiveDocument.Close

' Now create a mail item

Set objMailItem = objOutlook.CreateItem(olMailItem)
With objMailItem
.Subject = strMailSubject
.Body = strMailBody
.To = strMailTo
.Attachments.Add strOutputDocumentName, olByValue, 1
'.Save
.Send
End With
Set objMailItem = Nothing

intSourceRecord = intSourceRecord + 1
End If
Loop
End With

' Close Outlook if appropriate

If bOutlookStarted Then
objOutlook.Quit
End If

Set objOutlook = Nothing
Set objMerge = Nothing

End Sub


Peter Jamieson

"Gaspard" wrote in message
...
Hey,
Is this possible to customize the body* of the e-mail if the merge mail is
done in the attachement?

Sub SendEmail()

With ActiveDocument.MailMerge
.Destination = wdSendToEmail
.MailAddressFieldName = "Email"
.MailAsAttachment = True
.MailFormat = wdMailFormatHTML
.MailSubject = "EmailTest"

*.HTMLBody= "Blablabla" or Body= "Blablabla" ????

.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
End Sub

Thanks - Gaspard



Reply
Thread Tools
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
how do I change default address block elements in mail merge? jules0077 Mailmerge 1 May 6th 06 06:02 AM
How do I alter the default fields in a mail merge list? PiscesGem Mailmerge 2 April 18th 06 04:49 PM
Word 2002 mail merge using random/deleted/not default account [email protected] Mailmerge 0 November 14th 05 07:10 PM
Mail Merge Body of Text name_rafiq Mailmerge 5 October 27th 05 11:15 AM
How to change Outlook from being default mail? rman3086 Mailmerge 1 October 22nd 05 05:36 AM


All times are GMT +1. The time now is 08:07 AM.

Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 Microsoft Office Word Forum - WordBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Word"