Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
Formatting in attachment email merge (a la Doug Robbins)
I am using Doug Robbins' solution to email merge with attachments and it
works really well (thanks Doug!), except that I lose the formatting in my document when it is turned into an email. Normally, when I email merge, the formatting is retained (although I do it as an email type merge doc rather than a letter, which is required for the attachments). I have HTML as the default message format in Outlook 2007. Any help would be appreciated! |
#2
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
Formatting in attachment email merge (a la Doug Robbins)
Here is a version of the macro that will send the message in HTML format
Sub emailmergewithattachments() 'To create the email messages in HTML format Dim source As Document, Maillist As Document, TempDoc As Document Dim datarange As Range Dim i As Long, j As Long 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 Sections of the Source document and the rows of the catalog mailmerge document, ' extracting the information to be included in each email. For j = 1 To source.Sections.Count source.Sections(j).Range.Copy Set oItem = oOutlookApp.CreateItem(olMailItem) With oItem .Subject = mysubject .BodyFormat = olFormatHTML .Display Set objDoc = .GetInspector.WordEditor Set objSel = objDoc.Windows(1).Selection objSel.Paste Set datarange = Maillist.Tables(1).Cell(j, 1).Range datarange.End = datarange.End - 1 .To = datarange For i = 2 To Maillist.Tables(1).Columns.Count Set datarange = Maillist.Tables(1).Cell(j, i).Range datarange.End = datarange.End - 1 .Attachments.Add Trim(datarange.Text), olByValue, 1 Next i .Send End With Set oItem = Nothing Next j Maillist.Close wdDoNotSaveChanges ' Close Outlook if it was started by this macro. If bStarted Then oOutlookApp.Quit End If MsgBox source.Sections.Count & " messages have been sent." 'Clean up Set oOutlookApp = Nothing 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 "George" wrote in message ... I am using Doug Robbins' solution to email merge with attachments and it works really well (thanks Doug!), except that I lose the formatting in my document when it is turned into an email. Normally, when I email merge, the formatting is retained (although I do it as an email type merge doc rather than a letter, which is required for the attachments). I have HTML as the default message format in Outlook 2007. Any help would be appreciated! |
#3
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
Formatting in attachment email merge (a la Doug Robbins)
Thanks Doug, but when I cut and paste this new macro and try to run it I get
a Compile Error: Sub or Function not defined. It highlights the work Email from the part of the macro below: ' Show an input box asking the user for the subject to be inserted into the Email messages I'm not sure how to fix this. Any ideas? "Doug Robbins - Word MVP" wrote: Here is a version of the macro that will send the message in HTML format Sub emailmergewithattachments() 'To create the email messages in HTML format Dim source As Document, Maillist As Document, TempDoc As Document Dim datarange As Range Dim i As Long, j As Long 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 Sections of the Source document and the rows of the catalog mailmerge document, ' extracting the information to be included in each email. For j = 1 To source.Sections.Count source.Sections(j).Range.Copy Set oItem = oOutlookApp.CreateItem(olMailItem) With oItem .Subject = mysubject .BodyFormat = olFormatHTML .Display Set objDoc = .GetInspector.WordEditor Set objSel = objDoc.Windows(1).Selection objSel.Paste Set datarange = Maillist.Tables(1).Cell(j, 1).Range datarange.End = datarange.End - 1 .To = datarange For i = 2 To Maillist.Tables(1).Columns.Count Set datarange = Maillist.Tables(1).Cell(j, i).Range datarange.End = datarange.End - 1 .Attachments.Add Trim(datarange.Text), olByValue, 1 Next i .Send End With Set oItem = Nothing Next j Maillist.Close wdDoNotSaveChanges ' Close Outlook if it was started by this macro. If bStarted Then oOutlookApp.Quit End If MsgBox source.Sections.Count & " messages have been sent." 'Clean up Set oOutlookApp = Nothing 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 "George" wrote in message ... I am using Doug Robbins' solution to email merge with attachments and it works really well (thanks Doug!), except that I lose the formatting in my document when it is turned into an email. Normally, when I email merge, the formatting is retained (although I do it as an email type merge doc rather than a letter, which is required for the attachments). I have HTML as the default message format in Outlook 2007. Any help would be appreciated! |
#4
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
Formatting in attachment email merge (a la Doug Robbins)
This is all comment text - if you copied/pasted the macro, long lines
tend to be split into two, but without the necessary VB continuation marks. So e.g. the following... ' Show an input box asking the user for the subject to be inserted into the email messages should either be all on one line, or split over two, where both lines start with ', e.g. ' Show an input box asking the user for the subject ' to be inserted into the email messages It will probably be worth checking the rest of the code for similar things. Peter Jamieson http://tips.pjmsn.me.uk GeorgeA wrote: Thanks Doug, but when I cut and paste this new macro and try to run it I get a Compile Error: Sub or Function not defined. It highlights the work Email from the part of the macro below: ' Show an input box asking the user for the subject to be inserted into the Email messages I'm not sure how to fix this. Any ideas? "Doug Robbins - Word MVP" wrote: Here is a version of the macro that will send the message in HTML format Sub emailmergewithattachments() 'To create the email messages in HTML format Dim source As Document, Maillist As Document, TempDoc As Document Dim datarange As Range Dim i As Long, j As Long 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 Sections of the Source document and the rows of the catalog mailmerge document, ' extracting the information to be included in each email. For j = 1 To source.Sections.Count source.Sections(j).Range.Copy Set oItem = oOutlookApp.CreateItem(olMailItem) With oItem .Subject = mysubject .BodyFormat = olFormatHTML .Display Set objDoc = .GetInspector.WordEditor Set objSel = objDoc.Windows(1).Selection objSel.Paste Set datarange = Maillist.Tables(1).Cell(j, 1).Range datarange.End = datarange.End - 1 .To = datarange For i = 2 To Maillist.Tables(1).Columns.Count Set datarange = Maillist.Tables(1).Cell(j, i).Range datarange.End = datarange.End - 1 .Attachments.Add Trim(datarange.Text), olByValue, 1 Next i .Send End With Set oItem = Nothing Next j Maillist.Close wdDoNotSaveChanges ' Close Outlook if it was started by this macro. If bStarted Then oOutlookApp.Quit End If MsgBox source.Sections.Count & " messages have been sent." 'Clean up Set oOutlookApp = Nothing 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 "George" wrote in message ... I am using Doug Robbins' solution to email merge with attachments and it works really well (thanks Doug!), except that I lose the formatting in my document when it is turned into an email. Normally, when I email merge, the formatting is retained (although I do it as an email type merge doc rather than a letter, which is required for the attachments). I have HTML as the default message format in Outlook 2007. Any help would be appreciated! |
#5
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
Formatting in attachment email merge (a la Doug Robbins)
I figured it was something like that. After resetting the commented code,
everything works perfectly. Thanks very much!! "Peter Jamieson" wrote: This is all comment text - if you copied/pasted the macro, long lines tend to be split into two, but without the necessary VB continuation marks. So e.g. the following... ' Show an input box asking the user for the subject to be inserted into the email messages should either be all on one line, or split over two, where both lines start with ', e.g. ' Show an input box asking the user for the subject ' to be inserted into the email messages It will probably be worth checking the rest of the code for similar things. Peter Jamieson http://tips.pjmsn.me.uk GeorgeA wrote: Thanks Doug, but when I cut and paste this new macro and try to run it I get a Compile Error: Sub or Function not defined. It highlights the work Email from the part of the macro below: ' Show an input box asking the user for the subject to be inserted into the Email messages I'm not sure how to fix this. Any ideas? "Doug Robbins - Word MVP" wrote: Here is a version of the macro that will send the message in HTML format Sub emailmergewithattachments() 'To create the email messages in HTML format Dim source As Document, Maillist As Document, TempDoc As Document Dim datarange As Range Dim i As Long, j As Long 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 Sections of the Source document and the rows of the catalog mailmerge document, ' extracting the information to be included in each email. For j = 1 To source.Sections.Count source.Sections(j).Range.Copy Set oItem = oOutlookApp.CreateItem(olMailItem) With oItem .Subject = mysubject .BodyFormat = olFormatHTML .Display Set objDoc = .GetInspector.WordEditor Set objSel = objDoc.Windows(1).Selection objSel.Paste Set datarange = Maillist.Tables(1).Cell(j, 1).Range datarange.End = datarange.End - 1 .To = datarange For i = 2 To Maillist.Tables(1).Columns.Count Set datarange = Maillist.Tables(1).Cell(j, i).Range datarange.End = datarange.End - 1 .Attachments.Add Trim(datarange.Text), olByValue, 1 Next i .Send End With Set oItem = Nothing Next j Maillist.Close wdDoNotSaveChanges ' Close Outlook if it was started by this macro. If bStarted Then oOutlookApp.Quit End If MsgBox source.Sections.Count & " messages have been sent." 'Clean up Set oOutlookApp = Nothing 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 "George" wrote in message ... I am using Doug Robbins' solution to email merge with attachments and it works really well (thanks Doug!), except that I lose the formatting in my document when it is turned into an email. Normally, when I email merge, the formatting is retained (although I do it as an email type merge doc rather than a letter, which is required for the attachments). I have HTML as the default message format in Outlook 2007. Any help would be appreciated! |
#6
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
Formatting in attachment email merge (a la Doug Robbins)
Doug, this works great but I thought it worth mentioning that the last
recipient receives 2 emails - one has the message in the body of the email and the attachments and the second has only the attachments and no message in the body. Not a big deal, just thought you should know. Thanks, George "Doug Robbins - Word MVP" wrote: Here is a version of the macro that will send the message in HTML format Sub emailmergewithattachments() 'To create the email messages in HTML format Dim source As Document, Maillist As Document, TempDoc As Document Dim datarange As Range Dim i As Long, j As Long 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 Sections of the Source document and the rows of the catalog mailmerge document, ' extracting the information to be included in each email. For j = 1 To source.Sections.Count source.Sections(j).Range.Copy Set oItem = oOutlookApp.CreateItem(olMailItem) With oItem .Subject = mysubject .BodyFormat = olFormatHTML .Display Set objDoc = .GetInspector.WordEditor Set objSel = objDoc.Windows(1).Selection objSel.Paste Set datarange = Maillist.Tables(1).Cell(j, 1).Range datarange.End = datarange.End - 1 .To = datarange For i = 2 To Maillist.Tables(1).Columns.Count Set datarange = Maillist.Tables(1).Cell(j, i).Range datarange.End = datarange.End - 1 .Attachments.Add Trim(datarange.Text), olByValue, 1 Next i .Send End With Set oItem = Nothing Next j Maillist.Close wdDoNotSaveChanges ' Close Outlook if it was started by this macro. If bStarted Then oOutlookApp.Quit End If MsgBox source.Sections.Count & " messages have been sent." 'Clean up Set oOutlookApp = Nothing 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 "George" wrote in message ... I am using Doug Robbins' solution to email merge with attachments and it works really well (thanks Doug!), except that I lose the formatting in my document when it is turned into an email. Normally, when I email merge, the formatting is retained (although I do it as an email type merge doc rather than a letter, which is required for the attachments). I have HTML as the default message format in Outlook 2007. Any help would be appreciated! |
#7
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
Formatting in attachment email merge (a la Doug Robbins)
George,
That should be fixed in this version: Sub emailmergewithattachments() 'To create the email messages in HTML format Dim source As Document, Maillist As Document, TempDoc As Document Dim datarange As Range Dim i As Long, j As Long 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." Title = " Email Subject Input" ' Display message, title mysubject = InputBox(message, Title) ' Iterate through the Sections of the Source document and the rows of the ' catalog mailmerge document, ' extracting the information to be included in each email. For j = 1 To source.Sections.Count - 1 source.Sections(j).Range.Copy Set oItem = oOutlookApp.CreateItem(olMailItem) With oItem .Subject = mysubject .BodyFormat = olFormatHTML .Display Set objDoc = .GetInspector.WordEditor Set objSel = objDoc.Windows(1).Selection objSel.Paste Set datarange = Maillist.Tables(1).Cell(j, 1).Range datarange.End = datarange.End - 1 .To = datarange For i = 2 To Maillist.Tables(1).Columns.Count Set datarange = Maillist.Tables(1).Cell(j, i).Range datarange.End = datarange.End - 1 .Attachments.Add Trim(datarange.Text), olByValue, 1 Next i .Send End With Set oItem = Nothing Next j Maillist.Close wdDoNotSaveChanges ' Close Outlook if it was started by this macro. If bStarted Then oOutlookApp.Quit End If MsgBox source.Sections.Count - 1 & " messages have been sent." 'Clean up Set oOutlookApp = Nothing 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 "GeorgeA" wrote in message ... Doug, this works great but I thought it worth mentioning that the last recipient receives 2 emails - one has the message in the body of the email and the attachments and the second has only the attachments and no message in the body. Not a big deal, just thought you should know. Thanks, George "Doug Robbins - Word MVP" wrote: Here is a version of the macro that will send the message in HTML format Sub emailmergewithattachments() 'To create the email messages in HTML format Dim source As Document, Maillist As Document, TempDoc As Document Dim datarange As Range Dim i As Long, j As Long 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 Sections of the Source document and the rows of the catalog mailmerge document, ' extracting the information to be included in each email. For j = 1 To source.Sections.Count source.Sections(j).Range.Copy Set oItem = oOutlookApp.CreateItem(olMailItem) With oItem .Subject = mysubject .BodyFormat = olFormatHTML .Display Set objDoc = .GetInspector.WordEditor Set objSel = objDoc.Windows(1).Selection objSel.Paste Set datarange = Maillist.Tables(1).Cell(j, 1).Range datarange.End = datarange.End - 1 .To = datarange For i = 2 To Maillist.Tables(1).Columns.Count Set datarange = Maillist.Tables(1).Cell(j, i).Range datarange.End = datarange.End - 1 .Attachments.Add Trim(datarange.Text), olByValue, 1 Next i .Send End With Set oItem = Nothing Next j Maillist.Close wdDoNotSaveChanges ' Close Outlook if it was started by this macro. If bStarted Then oOutlookApp.Quit End If MsgBox source.Sections.Count & " messages have been sent." 'Clean up Set oOutlookApp = Nothing 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 "George" wrote in message ... I am using Doug Robbins' solution to email merge with attachments and it works really well (thanks Doug!), except that I lose the formatting in my document when it is turned into an email. Normally, when I email merge, the formatting is retained (although I do it as an email type merge doc rather than a letter, which is required for the attachments). I have HTML as the default message format in Outlook 2007. Any help would be appreciated! |
Reply |
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
DOUG ROBBINS | Mailmerge | |||
Doug Robbins Merge with Attachments | Mailmerge | |||
ATTN: Doug Robbins Mail Merge with Attachments | Microsoft Word Help | |||
Thank you, Doug Robbins | Microsoft Word Help | |||
Doug Robbins | Mailmerge |