Home |
Search |
Today's Posts |
#1
|
|||
|
|||
how do I save mail merge records
how do I save mail merge records individually in word 2002? I'm merging to
letters and need to save each letter as it's own file and cutting and pasting then doing a save as is so time consuming for 100 letters |
#2
|
|||
|
|||
For saving individual mergedocuments, you can use either of the following:
Sub splitter() ' splitter Macro ' Macro created by Doug Robbins to save each letter created by a mailmerge as a separate file. Dim i As Long, Source as Document, Target as Document, Letter as Range Set Source = ActiveDocument For i = 1 to Source.Sections.Count Set Letter = Source.Sections(i).Range Letter.End=Letter.End-1 Set Target = Documents.Add Target.Range=Letter Target.SaveAs FileName:="Letter" & i Target.Close Next i End Sub If you want each file to be named based on one of the fields in the data source, here's a method that I have used that involves creating a separate catalog type mailmerge maindocument which creates a word document containing a table in each row of which would be your data from the database that you want to use as the filename. You first execute that mailmerge, then save that file and close it. Then execute the mailmerge that you want to create the separate files from and with the result of that on the screen, run a macro containing the following code and when the File open dialog appears, select the file containing the table created by the first mailmerge ' Throw Away Macro created by Doug Robbins ' Dim Source As Document, oblist As Document, DocName As Range, DocumentName As String Dim i As Long, doctext As Range, target As Document Set Source = ActiveDocument With Dialogs(wdDialogFileOpen) .Show End With Set oblist = ActiveDocument Counter = 1 For i = 1 To oblist.Tables(1).Rows.Count Set DocName = oblist.Tables(1).Cell(i, 1).Range DocName.End = DocName.End - 1 'Change the path in the following command to suit where you want to save the documents. DocumentName = "I:\WorkArea\Documentum\" & DocName.Text Set doctext = Source.Sections(i).Range doctext.End = doctext.End - 1 Set target = Documents.Add target.Range.FormattedText = doctext target.SaveAs FileName:=DocumentName target.Close Next i -- 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 "Sherry" wrote in message ... how do I save mail merge records individually in word 2002? I'm merging to letters and need to save each letter as it's own file and cutting and pasting then doing a save as is so time consuming for 100 letters |
#3
|
|||
|
|||
Thanks so much. Mail merge used to be so easy now it's hard to even find
help for the tasks you are attempting. "Doug Robbins" wrote: For saving individual mergedocuments, you can use either of the following: Sub splitter() ' splitter Macro ' Macro created by Doug Robbins to save each letter created by a mailmerge as a separate file. Dim i As Long, Source as Document, Target as Document, Letter as Range Set Source = ActiveDocument For i = 1 to Source.Sections.Count Set Letter = Source.Sections(i).Range Letter.End=Letter.End-1 Set Target = Documents.Add Target.Range=Letter Target.SaveAs FileName:="Letter" & i Target.Close Next i End Sub If you want each file to be named based on one of the fields in the data source, here's a method that I have used that involves creating a separate catalog type mailmerge maindocument which creates a word document containing a table in each row of which would be your data from the database that you want to use as the filename. You first execute that mailmerge, then save that file and close it. Then execute the mailmerge that you want to create the separate files from and with the result of that on the screen, run a macro containing the following code and when the File open dialog appears, select the file containing the table created by the first mailmerge ' Throw Away Macro created by Doug Robbins ' Dim Source As Document, oblist As Document, DocName As Range, DocumentName As String Dim i As Long, doctext As Range, target As Document Set Source = ActiveDocument With Dialogs(wdDialogFileOpen) .Show End With Set oblist = ActiveDocument Counter = 1 For i = 1 To oblist.Tables(1).Rows.Count Set DocName = oblist.Tables(1).Cell(i, 1).Range DocName.End = DocName.End - 1 'Change the path in the following command to suit where you want to save the documents. DocumentName = "I:\WorkArea\Documentum\" & DocName.Text Set doctext = Source.Sections(i).Range doctext.End = doctext.End - 1 Set target = Documents.Add target.Range.FormattedText = doctext target.SaveAs FileName:=DocumentName target.Close Next i -- 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 "Sherry" wrote in message ... how do I save mail merge records individually in word 2002? I'm merging to letters and need to save each letter as it's own file and cutting and pasting then doing a save as is so time consuming for 100 letters |
#4
|
|||
|
|||
If you select Customize from the Tools menu, and go to the Commands tab of
the Customize dialog and then select the All Commands category and scroll down through the list until you locate the MailMerge Helper item, the click and drag that onto a toolbar or expanded menu, you can perform a mailmerge the way that you are used to. It also helps to turn on the mailmerge toolbar (ViewToolbars) as it has buttons that allow you to perform the complete mailmerge operation without having to use the wizard. -- 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 "Sherry" wrote in message ... Thanks so much. Mail merge used to be so easy now it's hard to even find help for the tasks you are attempting. "Doug Robbins" wrote: For saving individual mergedocuments, you can use either of the following: Sub splitter() ' splitter Macro ' Macro created by Doug Robbins to save each letter created by a mailmerge as a separate file. Dim i As Long, Source as Document, Target as Document, Letter as Range Set Source = ActiveDocument For i = 1 to Source.Sections.Count Set Letter = Source.Sections(i).Range Letter.End=Letter.End-1 Set Target = Documents.Add Target.Range=Letter Target.SaveAs FileName:="Letter" & i Target.Close Next i End Sub If you want each file to be named based on one of the fields in the data source, here's a method that I have used that involves creating a separate catalog type mailmerge maindocument which creates a word document containing a table in each row of which would be your data from the database that you want to use as the filename. You first execute that mailmerge, then save that file and close it. Then execute the mailmerge that you want to create the separate files from and with the result of that on the screen, run a macro containing the following code and when the File open dialog appears, select the file containing the table created by the first mailmerge ' Throw Away Macro created by Doug Robbins ' Dim Source As Document, oblist As Document, DocName As Range, DocumentName As String Dim i As Long, doctext As Range, target As Document Set Source = ActiveDocument With Dialogs(wdDialogFileOpen) .Show End With Set oblist = ActiveDocument Counter = 1 For i = 1 To oblist.Tables(1).Rows.Count Set DocName = oblist.Tables(1).Cell(i, 1).Range DocName.End = DocName.End - 1 'Change the path in the following command to suit where you want to save the documents. DocumentName = "I:\WorkArea\Documentum\" & DocName.Text Set doctext = Source.Sections(i).Range doctext.End = doctext.End - 1 Set target = Documents.Add target.Range.FormattedText = doctext target.SaveAs FileName:=DocumentName target.Close Next i -- 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 "Sherry" wrote in message ... how do I save mail merge records individually in word 2002? I'm merging to letters and need to save each letter as it's own file and cutting and pasting then doing a save as is so time consuming for 100 letters |
#5
|
|||
|
|||
I used the splitter macro and it worked great but it saves each record as
letter 1, letter 2 etc. I need to save each record as the very last line on the page. How do I tell the macro to do this? "Doug Robbins" wrote: For saving individual mergedocuments, you can use either of the following: Sub splitter() ' splitter Macro ' Macro created by Doug Robbins to save each letter created by a mailmerge as a separate file. Dim i As Long, Source as Document, Target as Document, Letter as Range Set Source = ActiveDocument For i = 1 to Source.Sections.Count Set Letter = Source.Sections(i).Range Letter.End=Letter.End-1 Set Target = Documents.Add Target.Range=Letter Target.SaveAs FileName:="Letter" & i Target.Close Next i End Sub If you want each file to be named based on one of the fields in the data source, here's a method that I have used that involves creating a separate catalog type mailmerge maindocument which creates a word document containing a table in each row of which would be your data from the database that you want to use as the filename. You first execute that mailmerge, then save that file and close it. Then execute the mailmerge that you want to create the separate files from and with the result of that on the screen, run a macro containing the following code and when the File open dialog appears, select the file containing the table created by the first mailmerge ' Throw Away Macro created by Doug Robbins ' Dim Source As Document, oblist As Document, DocName As Range, DocumentName As String Dim i As Long, doctext As Range, target As Document Set Source = ActiveDocument With Dialogs(wdDialogFileOpen) .Show End With Set oblist = ActiveDocument Counter = 1 For i = 1 To oblist.Tables(1).Rows.Count Set DocName = oblist.Tables(1).Cell(i, 1).Range DocName.End = DocName.End - 1 'Change the path in the following command to suit where you want to save the documents. DocumentName = "I:\WorkArea\Documentum\" & DocName.Text Set doctext = Source.Sections(i).Range doctext.End = doctext.End - 1 Set target = Documents.Add target.Range.FormattedText = doctext target.SaveAs FileName:=DocumentName target.Close Next i -- 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 "Sherry" wrote in message ... how do I save mail merge records individually in word 2002? I'm merging to letters and need to save each letter as it's own file and cutting and pasting then doing a save as is so time consuming for 100 letters |
#6
|
|||
|
|||
Assuming that the last line of the file comes from the data source, use
method 2 Or the following should work as long as you have an empty paragraph at the end of the mailmerge maindocument: Dim i As Long, Source As Document, Target As Document, Letter As Range, fname As Range, namefile As String Set Source = ActiveDocument For i = 1 To Source.Sections.Count - 1 Set Letter = Source.Sections(i).Range Letter.End = Letter.End - 1 Set fname = Letter.Duplicate fname.Start = fname.End - 1 fname = fname.Paragraphs(1).Range namefile = Left(fname.Text, Len(fname.Text) - 1) Set Target = Documents.Add Target.Range = Letter Target.SaveAs (namefile) Target.Close Next i -- 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 "sherry" wrote in message ... I used the splitter macro and it worked great but it saves each record as letter 1, letter 2 etc. I need to save each record as the very last line on the page. How do I tell the macro to do this? "Doug Robbins" wrote: For saving individual mergedocuments, you can use either of the following: Sub splitter() ' splitter Macro ' Macro created by Doug Robbins to save each letter created by a mailmerge as a separate file. Dim i As Long, Source as Document, Target as Document, Letter as Range Set Source = ActiveDocument For i = 1 to Source.Sections.Count Set Letter = Source.Sections(i).Range Letter.End=Letter.End-1 Set Target = Documents.Add Target.Range=Letter Target.SaveAs FileName:="Letter" & i Target.Close Next i End Sub If you want each file to be named based on one of the fields in the data source, here's a method that I have used that involves creating a separate catalog type mailmerge maindocument which creates a word document containing a table in each row of which would be your data from the database that you want to use as the filename. You first execute that mailmerge, then save that file and close it. Then execute the mailmerge that you want to create the separate files from and with the result of that on the screen, run a macro containing the following code and when the File open dialog appears, select the file containing the table created by the first mailmerge ' Throw Away Macro created by Doug Robbins ' Dim Source As Document, oblist As Document, DocName As Range, DocumentName As String Dim i As Long, doctext As Range, target As Document Set Source = ActiveDocument With Dialogs(wdDialogFileOpen) .Show End With Set oblist = ActiveDocument Counter = 1 For i = 1 To oblist.Tables(1).Rows.Count Set DocName = oblist.Tables(1).Cell(i, 1).Range DocName.End = DocName.End - 1 'Change the path in the following command to suit where you want to save the documents. DocumentName = "I:\WorkArea\Documentum\" & DocName.Text Set doctext = Source.Sections(i).Range doctext.End = doctext.End - 1 Set target = Documents.Add target.Range.FormattedText = doctext target.SaveAs FileName:=DocumentName target.Close Next i -- 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 "Sherry" wrote in message ... how do I save mail merge records individually in word 2002? I'm merging to letters and need to save each letter as it's own file and cutting and pasting then doing a save as is so time consuming for 100 letters |
#7
|
|||
|
|||
Yes the last line on the page is a merge field. There's a blank line just
before it. I guess I'm not understanding what you are meaning by an empty paragraph. "Doug Robbins" wrote: Assuming that the last line of the file comes from the data source, use method 2 Or the following should work as long as you have an empty paragraph at the end of the mailmerge maindocument: Dim i As Long, Source As Document, Target As Document, Letter As Range, fname As Range, namefile As String Set Source = ActiveDocument For i = 1 To Source.Sections.Count - 1 Set Letter = Source.Sections(i).Range Letter.End = Letter.End - 1 Set fname = Letter.Duplicate fname.Start = fname.End - 1 fname = fname.Paragraphs(1).Range namefile = Left(fname.Text, Len(fname.Text) - 1) Set Target = Documents.Add Target.Range = Letter Target.SaveAs (namefile) Target.Close Next i -- 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 "sherry" wrote in message ... I used the splitter macro and it worked great but it saves each record as letter 1, letter 2 etc. I need to save each record as the very last line on the page. How do I tell the macro to do this? "Doug Robbins" wrote: For saving individual mergedocuments, you can use either of the following: Sub splitter() ' splitter Macro ' Macro created by Doug Robbins to save each letter created by a mailmerge as a separate file. Dim i As Long, Source as Document, Target as Document, Letter as Range Set Source = ActiveDocument For i = 1 to Source.Sections.Count Set Letter = Source.Sections(i).Range Letter.End=Letter.End-1 Set Target = Documents.Add Target.Range=Letter Target.SaveAs FileName:="Letter" & i Target.Close Next i End Sub If you want each file to be named based on one of the fields in the data source, here's a method that I have used that involves creating a separate catalog type mailmerge maindocument which creates a word document containing a table in each row of which would be your data from the database that you want to use as the filename. You first execute that mailmerge, then save that file and close it. Then execute the mailmerge that you want to create the separate files from and with the result of that on the screen, run a macro containing the following code and when the File open dialog appears, select the file containing the table created by the first mailmerge ' Throw Away Macro created by Doug Robbins ' Dim Source As Document, oblist As Document, DocName As Range, DocumentName As String Dim i As Long, doctext As Range, target As Document Set Source = ActiveDocument With Dialogs(wdDialogFileOpen) .Show End With Set oblist = ActiveDocument Counter = 1 For i = 1 To oblist.Tables(1).Rows.Count Set DocName = oblist.Tables(1).Cell(i, 1).Range DocName.End = DocName.End - 1 'Change the path in the following command to suit where you want to save the documents. DocumentName = "I:\WorkArea\Documentum\" & DocName.Text Set doctext = Source.Sections(i).Range doctext.End = doctext.End - 1 Set target = Documents.Add target.Range.FormattedText = doctext target.SaveAs FileName:=DocumentName target.Close Next i -- 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 "Sherry" wrote in message ... how do I save mail merge records individually in word 2002? I'm merging to letters and need to save each letter as it's own file and cutting and pasting then doing a save as is so time consuming for 100 letters |
#8
|
|||
|
|||
After inserting that mergefield in the mailmerge main document, press Enter.
That will create an empty paragraph after that mergefield which is what the macro requires. -- 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 "sherry" wrote in message ... Yes the last line on the page is a merge field. There's a blank line just before it. I guess I'm not understanding what you are meaning by an empty paragraph. "Doug Robbins" wrote: Assuming that the last line of the file comes from the data source, use method 2 Or the following should work as long as you have an empty paragraph at the end of the mailmerge maindocument: Dim i As Long, Source As Document, Target As Document, Letter As Range, fname As Range, namefile As String Set Source = ActiveDocument For i = 1 To Source.Sections.Count - 1 Set Letter = Source.Sections(i).Range Letter.End = Letter.End - 1 Set fname = Letter.Duplicate fname.Start = fname.End - 1 fname = fname.Paragraphs(1).Range namefile = Left(fname.Text, Len(fname.Text) - 1) Set Target = Documents.Add Target.Range = Letter Target.SaveAs (namefile) Target.Close Next i -- 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 "sherry" wrote in message ... I used the splitter macro and it worked great but it saves each record as letter 1, letter 2 etc. I need to save each record as the very last line on the page. How do I tell the macro to do this? "Doug Robbins" wrote: For saving individual mergedocuments, you can use either of the following: Sub splitter() ' splitter Macro ' Macro created by Doug Robbins to save each letter created by a mailmerge as a separate file. Dim i As Long, Source as Document, Target as Document, Letter as Range Set Source = ActiveDocument For i = 1 to Source.Sections.Count Set Letter = Source.Sections(i).Range Letter.End=Letter.End-1 Set Target = Documents.Add Target.Range=Letter Target.SaveAs FileName:="Letter" & i Target.Close Next i End Sub If you want each file to be named based on one of the fields in the data source, here's a method that I have used that involves creating a separate catalog type mailmerge maindocument which creates a word document containing a table in each row of which would be your data from the database that you want to use as the filename. You first execute that mailmerge, then save that file and close it. Then execute the mailmerge that you want to create the separate files from and with the result of that on the screen, run a macro containing the following code and when the File open dialog appears, select the file containing the table created by the first mailmerge ' Throw Away Macro created by Doug Robbins ' Dim Source As Document, oblist As Document, DocName As Range, DocumentName As String Dim i As Long, doctext As Range, target As Document Set Source = ActiveDocument With Dialogs(wdDialogFileOpen) .Show End With Set oblist = ActiveDocument Counter = 1 For i = 1 To oblist.Tables(1).Rows.Count Set DocName = oblist.Tables(1).Cell(i, 1).Range DocName.End = DocName.End - 1 'Change the path in the following command to suit where you want to save the documents. DocumentName = "I:\WorkArea\Documentum\" & DocName.Text Set doctext = Source.Sections(i).Range doctext.End = doctext.End - 1 Set target = Documents.Add target.Range.FormattedText = doctext target.SaveAs FileName:=DocumentName target.Close Next i -- 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 "Sherry" wrote in message ... how do I save mail merge records individually in word 2002? I'm merging to letters and need to save each letter as it's own file and cutting and pasting then doing a save as is so time consuming for 100 letters |
Reply |
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
skipped mail merge records | Mailmerge | |||
mail merge with attachments | Mailmerge | |||
mail merge phantom records | Mailmerge | |||
save individual letters from a mail merge document | Mailmerge | |||
How to Mail merge records into a new/separate document | Mailmerge |