Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
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
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
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
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
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
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
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
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
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
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
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
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
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 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 | |
|
|
Similar Threads | ||||
Thread | Forum | |||
How to put graphics on envelopes? | Microsoft Word Help | |||
Why can't I get Multiple instances of word? | Microsoft Word Help | |||
WP merge file to Word | Tables | |||
Automate a mail merge in Word 2002 from a macro in Access 2002 | Mailmerge | |||
My hyperlinks dont work when I use HTML format in word mail merge | Mailmerge |