Reply
 
Thread Tools Display Modes
  #1   Report Post  
Posted to microsoft.public.word.mailmerge.fields
[email protected] simon_forer@optusnet.com.au is offline
external usenet poster
 
Posts: 2
Default Mail Merge HTML Format Word 2002 XP SP3

Hi have slightly modified Doug Robbin's code to merge 160 emails all
with attachments (some client specific, some generic). Thanks for code
Doug!!

From reading other posts in here, I gather the emails I send out (using

Word 2002 XP SP3) should retain formatting...but they don't.

Is there any extra code to send as HTML or is this just the default?

Code I'm using is:

Sub emailmergewithattachments()

Dim Source As Document, Maillist As Document
Dim Datarange As Range
Dim Counter As Integer, i As Integer
Dim bStarted As Boolean
Dim oOutlookApp As Outlook.Application
Dim oItem As Outlook.MailItem
Dim mysubject As String, message As String, title As String

Set Source = ActiveDocument

' Check if Outlook is running. If it is not, start Outlook
On Error Resume Next
Set oOutlookApp = GetObject(, "Outlook.Application")
If Err 0 Then
Set oOutlookApp = CreateObject("Outlook.Application")
bStarted = True
End If

' Open the catalog mailmerge document
With Dialogs(wdDialogFileOpen)
.Show
End With
Set Maillist = ActiveDocument

' Show an input box asking the user for the subject to be inserted into
the email messages
message = "Enter the subject to be used for each email message." '
Set prompt.
title = " Email Subject Input" ' Set title.

' Display message, title
mysubject = InputBox(message, title)

' Iterate through the rows of the catalog mailmerge document,
extracting the information
' to be included in each email.

Counter = 1

While Counter = Maillist.Tables(1).Rows.Count
Source.Sections.First.Range.Copy
Documents.Add
Selection.Paste

' Add Name to first line

Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst, Count:=1,
Name:=""
Selection.TypeText Text:=Maillist.Tables(1).Cell(Counter, 1).Range
Selection.TypeParagraph
Selection.TypeParagraph


Set oItem = oOutlookApp.CreateItem(olMailItem)
With oItem
.Subject = mysubject
.Body = ActiveDocument.Content
Set Datarange = Maillist.Tables(1).Cell(Counter, 2).Range
Datarange.End = Datarange.End - 1
.To = Datarange
For i = 3 To Maillist.Tables(1).Columns.Count
Set Datarange = Maillist.Tables(1).Cell(Counter, i).Range
Datarange.End = Datarange.End - 1
.Attachments.Add Trim(Datarange.Text), olByValue, 1
Next i
.Send HTML
End With
Set oItem = Nothing
ActiveDocument.Close wdDoNotSaveChanges
Counter = Counter + 1
Wend

' Close Outlook if it was started by this macro.
If bStarted Then
oOutlookApp.Quit
End If

'Clean up
Set oOutlookApp = Nothing
Source.Close wdDoNotSaveChanges
Maillist.Close wdDoNotSaveChanges

End Sub


Thanks
Simon

  #2   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Doug Robbins - Word MVP Doug Robbins - Word MVP is offline
external usenet poster
 
Posts: 8,832
Default Mail Merge HTML Format Word 2002 XP SP3

From the modifications that you have made to the code, it seems that instead
of using mailmerge to create the personalised content of the email message,
you are using code to add the name to the document that becomes the body of
each message.

You seem to have missed the step

"Then execute to a new document the mail merge that you want to send out by
email with the attachments and with the result of execution of that mail
merge on the screen, run a macro containing the following code."

The command

..Send HTML

that you have in your code is not correct.


The following information from the Outlook Help file is probably what you
are looking for:

MailItem.BodyFormat Property
Returns or sets an OlBodyFormat constant indicating the format of the body
text. Read/write.

expression.BodyFormat

expression A variable that represents a MailItem object.

Remarks

The body text format determines the standard used to display the text of the
message. Microsoft Outlook provides three body text format options: Plain
Text, Rich Text (RTF), and HTML.
All text formatting will be lost when the BodyFormat property is switched
from RTF to HTML and vice-versa.
Example

The following Microsoft Visual Basic/Visual Basic for Applications (VBA)
example creates a new MailItem object and sets the BodyFormat property to
olFormatHTML. The body text of the e-mail item will now appear in HTML
format.

Sub CreateHTMLMail()
'Creates a new e-mail item and modifies its properties.

Dim olApp As Outlook.Application
Dim objMail As MailItem
Set olApp = Outlook.Application
'Create mail item
Set objMail = olApp.CreateItem(olMailItem)

With objMail
'Set body format to HTML
.BodyFormat = olFormatHTML
.HTMLBody = "HTMLH2The body of this message will appear in
HTML./H2BODYType the message text here. /BODY/HTML"
.Display
End With

End Sub



--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP

wrote in message
oups.com...
Hi have slightly modified Doug Robbin's code to merge 160 emails all
with attachments (some client specific, some generic). Thanks for code
Doug!!

From reading other posts in here, I gather the emails I send out (using

Word 2002 XP SP3) should retain formatting...but they don't.

Is there any extra code to send as HTML or is this just the default?

Code I'm using is:

Sub emailmergewithattachments()

Dim Source As Document, Maillist As Document
Dim Datarange As Range
Dim Counter As Integer, i As Integer
Dim bStarted As Boolean
Dim oOutlookApp As Outlook.Application
Dim oItem As Outlook.MailItem
Dim mysubject As String, message As String, title As String

Set Source = ActiveDocument

' Check if Outlook is running. If it is not, start Outlook
On Error Resume Next
Set oOutlookApp = GetObject(, "Outlook.Application")
If Err 0 Then
Set oOutlookApp = CreateObject("Outlook.Application")
bStarted = True
End If

' Open the catalog mailmerge document
With Dialogs(wdDialogFileOpen)
.Show
End With
Set Maillist = ActiveDocument

' Show an input box asking the user for the subject to be inserted into
the email messages
message = "Enter the subject to be used for each email message." '
Set prompt.
title = " Email Subject Input" ' Set title.

' Display message, title
mysubject = InputBox(message, title)

' Iterate through the rows of the catalog mailmerge document,
extracting the information
' to be included in each email.

Counter = 1

While Counter = Maillist.Tables(1).Rows.Count
Source.Sections.First.Range.Copy
Documents.Add
Selection.Paste

' Add Name to first line

Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst, Count:=1,
Name:=""
Selection.TypeText Text:=Maillist.Tables(1).Cell(Counter, 1).Range
Selection.TypeParagraph
Selection.TypeParagraph


Set oItem = oOutlookApp.CreateItem(olMailItem)
With oItem
.Subject = mysubject
.Body = ActiveDocument.Content
Set Datarange = Maillist.Tables(1).Cell(Counter, 2).Range
Datarange.End = Datarange.End - 1
.To = Datarange
For i = 3 To Maillist.Tables(1).Columns.Count
Set Datarange = Maillist.Tables(1).Cell(Counter, i).Range
Datarange.End = Datarange.End - 1
.Attachments.Add Trim(Datarange.Text), olByValue, 1
Next i
.Send HTML
End With
Set oItem = Nothing
ActiveDocument.Close wdDoNotSaveChanges
Counter = Counter + 1
Wend

' Close Outlook if it was started by this macro.
If bStarted Then
oOutlookApp.Quit
End If

'Clean up
Set oOutlookApp = Nothing
Source.Close wdDoNotSaveChanges
Maillist.Close wdDoNotSaveChanges

End Sub


Thanks
Simon



  #3   Report Post  
Posted to microsoft.public.word.mailmerge.fields
[email protected] simon_forer@optusnet.com.au is offline
external usenet poster
 
Posts: 2
Default Mail Merge HTML Format Word 2002 XP SP3

Doug, thanks for reply.

Your post was a big help, but I ended up sending emails without HTML
formatting. I was hoping to use the formatting contained in my Word
template (and signature), but looks like I need to be a semi expert in
HTML programing! It was one of those nice to have things, but not all
that important.

Once again Doug, thanks for your help, it was a huge help!

Regards
Simon

  #4   Report Post  
Posted to microsoft.public.word.mailmerge.fields
lj lj is offline
external usenet poster
 
Posts: 10
Default Mail Merge HTML Format Word 2002 XP SP3

Hi reading through this - this appears to answer the question I have but I'm
a little lost! I'm trying to send emails via mail merge but want to send them
HTML to maintain the formatting of the document I'm using the macro - from
your article Doug Mail merge to email with attachments - are you saying you
have now modified that code to send as HTML and if so how do I do this please.

Many thanks,
Lauretta

"Doug Robbins - Word MVP" wrote:

From the modifications that you have made to the code, it seems that instead
of using mailmerge to create the personalised content of the email message,
you are using code to add the name to the document that becomes the body of
each message.

You seem to have missed the step

"Then execute to a new document the mail merge that you want to send out by
email with the attachments and with the result of execution of that mail
merge on the screen, run a macro containing the following code."

The command

..Send HTML

that you have in your code is not correct.


The following information from the Outlook Help file is probably what you
are looking for:

MailItem.BodyFormat Property
Returns or sets an OlBodyFormat constant indicating the format of the body
text. Read/write.

expression.BodyFormat

expression A variable that represents a MailItem object.

Remarks

The body text format determines the standard used to display the text of the
message. Microsoft Outlook provides three body text format options: Plain
Text, Rich Text (RTF), and HTML.
All text formatting will be lost when the BodyFormat property is switched
from RTF to HTML and vice-versa.
Example

The following Microsoft Visual Basic/Visual Basic for Applications (VBA)
example creates a new MailItem object and sets the BodyFormat property to
olFormatHTML. The body text of the e-mail item will now appear in HTML
format.

Sub CreateHTMLMail()
'Creates a new e-mail item and modifies its properties.

Dim olApp As Outlook.Application
Dim objMail As MailItem
Set olApp = Outlook.Application
'Create mail item
Set objMail = olApp.CreateItem(olMailItem)

With objMail
'Set body format to HTML
.BodyFormat = olFormatHTML
.HTMLBody = "HTMLH2The body of this message will appear in
HTML./H2BODYType the message text here. /BODY/HTML"
.Display
End With

End Sub



--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP

wrote in message
oups.com...
Hi have slightly modified Doug Robbin's code to merge 160 emails all
with attachments (some client specific, some generic). Thanks for code
Doug!!

From reading other posts in here, I gather the emails I send out (using

Word 2002 XP SP3) should retain formatting...but they don't.

Is there any extra code to send as HTML or is this just the default?

Code I'm using is:

Sub emailmergewithattachments()

Dim Source As Document, Maillist As Document
Dim Datarange As Range
Dim Counter As Integer, i As Integer
Dim bStarted As Boolean
Dim oOutlookApp As Outlook.Application
Dim oItem As Outlook.MailItem
Dim mysubject As String, message As String, title As String

Set Source = ActiveDocument

' Check if Outlook is running. If it is not, start Outlook
On Error Resume Next
Set oOutlookApp = GetObject(, "Outlook.Application")
If Err 0 Then
Set oOutlookApp = CreateObject("Outlook.Application")
bStarted = True
End If

' Open the catalog mailmerge document
With Dialogs(wdDialogFileOpen)
.Show
End With
Set Maillist = ActiveDocument

' Show an input box asking the user for the subject to be inserted into
the email messages
message = "Enter the subject to be used for each email message." '
Set prompt.
title = " Email Subject Input" ' Set title.

' Display message, title
mysubject = InputBox(message, title)

' Iterate through the rows of the catalog mailmerge document,
extracting the information
' to be included in each email.

Counter = 1

While Counter = Maillist.Tables(1).Rows.Count
Source.Sections.First.Range.Copy
Documents.Add
Selection.Paste

' Add Name to first line

Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst, Count:=1,
Name:=""
Selection.TypeText Text:=Maillist.Tables(1).Cell(Counter, 1).Range
Selection.TypeParagraph
Selection.TypeParagraph


Set oItem = oOutlookApp.CreateItem(olMailItem)
With oItem
.Subject = mysubject
.Body = ActiveDocument.Content
Set Datarange = Maillist.Tables(1).Cell(Counter, 2).Range
Datarange.End = Datarange.End - 1
.To = Datarange
For i = 3 To Maillist.Tables(1).Columns.Count
Set Datarange = Maillist.Tables(1).Cell(Counter, i).Range
Datarange.End = Datarange.End - 1
.Attachments.Add Trim(Datarange.Text), olByValue, 1
Next i
.Send HTML
End With
Set oItem = Nothing
ActiveDocument.Close wdDoNotSaveChanges
Counter = Counter + 1
Wend

' Close Outlook if it was started by this macro.
If bStarted Then
oOutlookApp.Quit
End If

'Clean up
Set oOutlookApp = Nothing
Source.Close wdDoNotSaveChanges
Maillist.Close wdDoNotSaveChanges

End Sub


Thanks
Simon




  #5   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Doug Robbins - Word MVP Doug Robbins - Word MVP is offline
external usenet poster
 
Posts: 8,832
Default Mail Merge HTML Format Word 2002 XP SP3

No, I have not modified the code. I did however indicate how it would need
to be modified.

Personally, I would not bother trying to change it to sent the messages in
HTML format as you have no control over how the recipient reads them. Most
astute people will have the mail program set to display messaged in text
only format.

If you really want formatting in the information that is sent, send as an
attachment in .pdf format. Then you can really control how the recipient
sees it.

To see how to create the individual attachments, See the "Individual Merge
Letters" item on fellow MVP Graham Mayor's website at:

http://www.gmayor.com/individual_merge_letters.htm

If you are using Word XP or later, the "Add-in to Merge Letters to Separate
Files" that I have written and that can be downloaded from that site will
allow you to create each letter as a separate file with a filename taken
from a field in the data source with a minimum of fuss.

--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP

"LJ" wrote in message
...
Hi reading through this - this appears to answer the question I have but
I'm
a little lost! I'm trying to send emails via mail merge but want to send
them
HTML to maintain the formatting of the document I'm using the macro - from
your article Doug Mail merge to email with attachments - are you saying
you
have now modified that code to send as HTML and if so how do I do this
please.

Many thanks,
Lauretta

"Doug Robbins - Word MVP" wrote:

From the modifications that you have made to the code, it seems that
instead
of using mailmerge to create the personalised content of the email
message,
you are using code to add the name to the document that becomes the body
of
each message.

You seem to have missed the step

"Then execute to a new document the mail merge that you want to send out
by
email with the attachments and with the result of execution of that mail
merge on the screen, run a macro containing the following code."

The command

..Send HTML

that you have in your code is not correct.


The following information from the Outlook Help file is probably what you
are looking for:

MailItem.BodyFormat Property
Returns or sets an OlBodyFormat constant indicating the format of the
body
text. Read/write.

expression.BodyFormat

expression A variable that represents a MailItem object.

Remarks

The body text format determines the standard used to display the text of
the
message. Microsoft Outlook provides three body text format options: Plain
Text, Rich Text (RTF), and HTML.
All text formatting will be lost when the BodyFormat property is switched
from RTF to HTML and vice-versa.
Example

The following Microsoft Visual Basic/Visual Basic for Applications (VBA)
example creates a new MailItem object and sets the BodyFormat property to
olFormatHTML. The body text of the e-mail item will now appear in HTML
format.

Sub CreateHTMLMail()
'Creates a new e-mail item and modifies its properties.

Dim olApp As Outlook.Application
Dim objMail As MailItem
Set olApp = Outlook.Application
'Create mail item
Set objMail = olApp.CreateItem(olMailItem)

With objMail
'Set body format to HTML
.BodyFormat = olFormatHTML
.HTMLBody = "HTMLH2The body of this message will appear in
HTML./H2BODYType the message text here. /BODY/HTML"
.Display
End With

End Sub



--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP

wrote in message
oups.com...
Hi have slightly modified Doug Robbin's code to merge 160 emails all
with attachments (some client specific, some generic). Thanks for code
Doug!!

From reading other posts in here, I gather the emails I send out (using
Word 2002 XP SP3) should retain formatting...but they don't.

Is there any extra code to send as HTML or is this just the default?

Code I'm using is:

Sub emailmergewithattachments()

Dim Source As Document, Maillist As Document
Dim Datarange As Range
Dim Counter As Integer, i As Integer
Dim bStarted As Boolean
Dim oOutlookApp As Outlook.Application
Dim oItem As Outlook.MailItem
Dim mysubject As String, message As String, title As String

Set Source = ActiveDocument

' Check if Outlook is running. If it is not, start Outlook
On Error Resume Next
Set oOutlookApp = GetObject(, "Outlook.Application")
If Err 0 Then
Set oOutlookApp = CreateObject("Outlook.Application")
bStarted = True
End If

' Open the catalog mailmerge document
With Dialogs(wdDialogFileOpen)
.Show
End With
Set Maillist = ActiveDocument

' Show an input box asking the user for the subject to be inserted into
the email messages
message = "Enter the subject to be used for each email message." '
Set prompt.
title = " Email Subject Input" ' Set title.

' Display message, title
mysubject = InputBox(message, title)

' Iterate through the rows of the catalog mailmerge document,
extracting the information
' to be included in each email.

Counter = 1

While Counter = Maillist.Tables(1).Rows.Count
Source.Sections.First.Range.Copy
Documents.Add
Selection.Paste

' Add Name to first line

Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst, Count:=1,
Name:=""
Selection.TypeText Text:=Maillist.Tables(1).Cell(Counter, 1).Range
Selection.TypeParagraph
Selection.TypeParagraph


Set oItem = oOutlookApp.CreateItem(olMailItem)
With oItem
.Subject = mysubject
.Body = ActiveDocument.Content
Set Datarange = Maillist.Tables(1).Cell(Counter, 2).Range
Datarange.End = Datarange.End - 1
.To = Datarange
For i = 3 To Maillist.Tables(1).Columns.Count
Set Datarange = Maillist.Tables(1).Cell(Counter, i).Range
Datarange.End = Datarange.End - 1
.Attachments.Add Trim(Datarange.Text), olByValue, 1
Next i
.Send HTML
End With
Set oItem = Nothing
ActiveDocument.Close wdDoNotSaveChanges
Counter = Counter + 1
Wend

' Close Outlook if it was started by this macro.
If bStarted Then
oOutlookApp.Quit
End If

'Clean up
Set oOutlookApp = Nothing
Source.Close wdDoNotSaveChanges
Maillist.Close wdDoNotSaveChanges

End Sub


Thanks
Simon








  #6   Report Post  
Posted to microsoft.public.word.mailmerge.fields
lj lj is offline
external usenet poster
 
Posts: 10
Default Mail Merge HTML Format Word 2002 XP SP3

Thanks Doug - I appreciate what you are saying re the formatting - but I
would like to be able to send the email in HTML to maintain the formatting of
bullet points for example - and as the email already has a PDF attachment, so
would it be possible for you to let me know how I would need, and at which
point in your code etc, I would need to modify your original code. I'm using
office 2003.
Many thanks

"Doug Robbins - Word MVP" wrote:

No, I have not modified the code. I did however indicate how it would need
to be modified.

Personally, I would not bother trying to change it to sent the messages in
HTML format as you have no control over how the recipient reads them. Most
astute people will have the mail program set to display messaged in text
only format.

If you really want formatting in the information that is sent, send as an
attachment in .pdf format. Then you can really control how the recipient
sees it.

To see how to create the individual attachments, See the "Individual Merge
Letters" item on fellow MVP Graham Mayor's website at:

http://www.gmayor.com/individual_merge_letters.htm

If you are using Word XP or later, the "Add-in to Merge Letters to Separate
Files" that I have written and that can be downloaded from that site will
allow you to create each letter as a separate file with a filename taken
from a field in the data source with a minimum of fuss.

--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP

"LJ" wrote in message
...
Hi reading through this - this appears to answer the question I have but
I'm
a little lost! I'm trying to send emails via mail merge but want to send
them
HTML to maintain the formatting of the document I'm using the macro - from
your article Doug Mail merge to email with attachments - are you saying
you
have now modified that code to send as HTML and if so how do I do this
please.

Many thanks,
Lauretta

"Doug Robbins - Word MVP" wrote:

From the modifications that you have made to the code, it seems that
instead
of using mailmerge to create the personalised content of the email
message,
you are using code to add the name to the document that becomes the body
of
each message.

You seem to have missed the step

"Then execute to a new document the mail merge that you want to send out
by
email with the attachments and with the result of execution of that mail
merge on the screen, run a macro containing the following code."

The command

..Send HTML

that you have in your code is not correct.


The following information from the Outlook Help file is probably what you
are looking for:

MailItem.BodyFormat Property
Returns or sets an OlBodyFormat constant indicating the format of the
body
text. Read/write.

expression.BodyFormat

expression A variable that represents a MailItem object.

Remarks

The body text format determines the standard used to display the text of
the
message. Microsoft Outlook provides three body text format options: Plain
Text, Rich Text (RTF), and HTML.
All text formatting will be lost when the BodyFormat property is switched
from RTF to HTML and vice-versa.
Example

The following Microsoft Visual Basic/Visual Basic for Applications (VBA)
example creates a new MailItem object and sets the BodyFormat property to
olFormatHTML. The body text of the e-mail item will now appear in HTML
format.

Sub CreateHTMLMail()
'Creates a new e-mail item and modifies its properties.

Dim olApp As Outlook.Application
Dim objMail As MailItem
Set olApp = Outlook.Application
'Create mail item
Set objMail = olApp.CreateItem(olMailItem)

With objMail
'Set body format to HTML
.BodyFormat = olFormatHTML
.HTMLBody = "HTMLH2The body of this message will appear in
HTML./H2BODYType the message text here. /BODY/HTML"
.Display
End With

End Sub



--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP

wrote in message
oups.com...
Hi have slightly modified Doug Robbin's code to merge 160 emails all
with attachments (some client specific, some generic). Thanks for code
Doug!!

From reading other posts in here, I gather the emails I send out (using
Word 2002 XP SP3) should retain formatting...but they don't.

Is there any extra code to send as HTML or is this just the default?

Code I'm using is:

Sub emailmergewithattachments()

Dim Source As Document, Maillist As Document
Dim Datarange As Range
Dim Counter As Integer, i As Integer
Dim bStarted As Boolean
Dim oOutlookApp As Outlook.Application
Dim oItem As Outlook.MailItem
Dim mysubject As String, message As String, title As String

Set Source = ActiveDocument

' Check if Outlook is running. If it is not, start Outlook
On Error Resume Next
Set oOutlookApp = GetObject(, "Outlook.Application")
If Err 0 Then
Set oOutlookApp = CreateObject("Outlook.Application")
bStarted = True
End If

' Open the catalog mailmerge document
With Dialogs(wdDialogFileOpen)
.Show
End With
Set Maillist = ActiveDocument

' Show an input box asking the user for the subject to be inserted into
the email messages
message = "Enter the subject to be used for each email message." '
Set prompt.
title = " Email Subject Input" ' Set title.

' Display message, title
mysubject = InputBox(message, title)

' Iterate through the rows of the catalog mailmerge document,
extracting the information
' to be included in each email.

Counter = 1

While Counter = Maillist.Tables(1).Rows.Count
Source.Sections.First.Range.Copy
Documents.Add
Selection.Paste

' Add Name to first line

Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst, Count:=1,
Name:=""
Selection.TypeText Text:=Maillist.Tables(1).Cell(Counter, 1).Range
Selection.TypeParagraph
Selection.TypeParagraph


Set oItem = oOutlookApp.CreateItem(olMailItem)
With oItem
.Subject = mysubject
.Body = ActiveDocument.Content
Set Datarange = Maillist.Tables(1).Cell(Counter, 2).Range
Datarange.End = Datarange.End - 1
.To = Datarange
For i = 3 To Maillist.Tables(1).Columns.Count
Set Datarange = Maillist.Tables(1).Cell(Counter, i).Range
Datarange.End = Datarange.End - 1
.Attachments.Add Trim(Datarange.Text), olByValue, 1
Next i
.Send HTML
End With
Set oItem = Nothing
ActiveDocument.Close wdDoNotSaveChanges
Counter = Counter + 1
Wend

' Close Outlook if it was started by this macro.
If bStarted Then
oOutlookApp.Quit
End If

'Clean up
Set oOutlookApp = Nothing
Source.Close wdDoNotSaveChanges
Maillist.Close wdDoNotSaveChanges

End Sub


Thanks
Simon







  #7   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Doug Robbins - Word MVP Doug Robbins - Word MVP is offline
external usenet poster
 
Posts: 8,832
Default Mail Merge HTML Format Word 2002 XP SP3

I would suggest that you ask the question in an Outlook newsgroup. I have
no experience in that field.

--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP

"LJ" wrote in message
news
Thanks Doug - I appreciate what you are saying re the formatting - but I
would like to be able to send the email in HTML to maintain the formatting
of
bullet points for example - and as the email already has a PDF attachment,
so
would it be possible for you to let me know how I would need, and at
which
point in your code etc, I would need to modify your original code. I'm
using
office 2003.
Many thanks

"Doug Robbins - Word MVP" wrote:

No, I have not modified the code. I did however indicate how it would
need
to be modified.

Personally, I would not bother trying to change it to sent the messages
in
HTML format as you have no control over how the recipient reads them.
Most
astute people will have the mail program set to display messaged in text
only format.

If you really want formatting in the information that is sent, send as an
attachment in .pdf format. Then you can really control how the recipient
sees it.

To see how to create the individual attachments, See the "Individual
Merge
Letters" item on fellow MVP Graham Mayor's website at:

http://www.gmayor.com/individual_merge_letters.htm

If you are using Word XP or later, the "Add-in to Merge Letters to
Separate
Files" that I have written and that can be downloaded from that site will
allow you to create each letter as a separate file with a filename taken
from a field in the data source with a minimum of fuss.

--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP

"LJ" wrote in message
...
Hi reading through this - this appears to answer the question I have
but
I'm
a little lost! I'm trying to send emails via mail merge but want to
send
them
HTML to maintain the formatting of the document I'm using the macro -
from
your article Doug Mail merge to email with attachments - are you saying
you
have now modified that code to send as HTML and if so how do I do this
please.

Many thanks,
Lauretta

"Doug Robbins - Word MVP" wrote:

From the modifications that you have made to the code, it seems that
instead
of using mailmerge to create the personalised content of the email
message,
you are using code to add the name to the document that becomes the
body
of
each message.

You seem to have missed the step

"Then execute to a new document the mail merge that you want to send
out
by
email with the attachments and with the result of execution of that
mail
merge on the screen, run a macro containing the following code."

The command

..Send HTML

that you have in your code is not correct.


The following information from the Outlook Help file is probably what
you
are looking for:

MailItem.BodyFormat Property
Returns or sets an OlBodyFormat constant indicating the format of the
body
text. Read/write.

expression.BodyFormat

expression A variable that represents a MailItem object.

Remarks

The body text format determines the standard used to display the text
of
the
message. Microsoft Outlook provides three body text format options:
Plain
Text, Rich Text (RTF), and HTML.
All text formatting will be lost when the BodyFormat property is
switched
from RTF to HTML and vice-versa.
Example

The following Microsoft Visual Basic/Visual Basic for Applications
(VBA)
example creates a new MailItem object and sets the BodyFormat property
to
olFormatHTML. The body text of the e-mail item will now appear in HTML
format.

Sub CreateHTMLMail()
'Creates a new e-mail item and modifies its properties.

Dim olApp As Outlook.Application
Dim objMail As MailItem
Set olApp = Outlook.Application
'Create mail item
Set objMail = olApp.CreateItem(olMailItem)

With objMail
'Set body format to HTML
.BodyFormat = olFormatHTML
.HTMLBody = "HTMLH2The body of this message will appear in
HTML./H2BODYType the message text here. /BODY/HTML"
.Display
End With

End Sub



--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP

wrote in message
oups.com...
Hi have slightly modified Doug Robbin's code to merge 160 emails all
with attachments (some client specific, some generic). Thanks for
code
Doug!!

From reading other posts in here, I gather the emails I send out
(using
Word 2002 XP SP3) should retain formatting...but they don't.

Is there any extra code to send as HTML or is this just the default?

Code I'm using is:

Sub emailmergewithattachments()

Dim Source As Document, Maillist As Document
Dim Datarange As Range
Dim Counter As Integer, i As Integer
Dim bStarted As Boolean
Dim oOutlookApp As Outlook.Application
Dim oItem As Outlook.MailItem
Dim mysubject As String, message As String, title As String

Set Source = ActiveDocument

' Check if Outlook is running. If it is not, start Outlook
On Error Resume Next
Set oOutlookApp = GetObject(, "Outlook.Application")
If Err 0 Then
Set oOutlookApp = CreateObject("Outlook.Application")
bStarted = True
End If

' Open the catalog mailmerge document
With Dialogs(wdDialogFileOpen)
.Show
End With
Set Maillist = ActiveDocument

' Show an input box asking the user for the subject to be inserted
into
the email messages
message = "Enter the subject to be used for each email message."
'
Set prompt.
title = " Email Subject Input" ' Set title.

' Display message, title
mysubject = InputBox(message, title)

' Iterate through the rows of the catalog mailmerge document,
extracting the information
' to be included in each email.

Counter = 1

While Counter = Maillist.Tables(1).Rows.Count
Source.Sections.First.Range.Copy
Documents.Add
Selection.Paste

' Add Name to first line

Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst, Count:=1,
Name:=""
Selection.TypeText Text:=Maillist.Tables(1).Cell(Counter,
1).Range
Selection.TypeParagraph
Selection.TypeParagraph


Set oItem = oOutlookApp.CreateItem(olMailItem)
With oItem
.Subject = mysubject
.Body = ActiveDocument.Content
Set Datarange = Maillist.Tables(1).Cell(Counter, 2).Range
Datarange.End = Datarange.End - 1
.To = Datarange
For i = 3 To Maillist.Tables(1).Columns.Count
Set Datarange = Maillist.Tables(1).Cell(Counter, i).Range
Datarange.End = Datarange.End - 1
.Attachments.Add Trim(Datarange.Text), olByValue, 1
Next i
.Send HTML
End With
Set oItem = Nothing
ActiveDocument.Close wdDoNotSaveChanges
Counter = Counter + 1
Wend

' Close Outlook if it was started by this macro.
If bStarted Then
oOutlookApp.Quit
End If

'Clean up
Set oOutlookApp = Nothing
Source.Close wdDoNotSaveChanges
Maillist.Close wdDoNotSaveChanges

End Sub


Thanks
Simon









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 to put graphics on envelopes? Steve Koenig Microsoft Word Help 21 April 29th 23 02:47 AM
Why can't I get Multiple instances of word? Laverne Microsoft Word Help 14 November 17th 06 01:35 PM
WP merge file to Word sstires Tables 4 February 14th 06 06:26 PM
Automate a mail merge in Word 2002 from a macro in Access 2002 Ed B Mailmerge 9 July 8th 05 04:31 PM
My hyperlinks dont work when I use HTML format in word mail merge Jens Ole Pedersen Mailmerge 2 March 1st 05 09:51 AM


All times are GMT +1. The time now is 01:17 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"