Home |
Search |
Today's Posts |
#1
![]() |
|||
|
|||
![]()
I am trying to create separate files for each document that is created during
a mail merge. We have a list of 20 names and we need to create 20 letters and we need them each to be |
#2
![]() |
|||
|
|||
![]()
Here's one way - execute the merge to a new document and then with that
document active, run the following macro: Sub splitter() ' splitter Macro ' Macro created by Doug Robbins to save each letter created by a mailmerge as a separate file. Dim Letters As Integer, Counter As Integer, Source as Document, Target as Document, Letter as Range Set Source = ActiveDocument Letters = Source.Sections.Count For i = 1 to Letters Set Letter = Source.Sections(i).Range Letter.End=Letter.End-1 Set Target = Documents.Add Target.Range=Letter Target.SaveAs FileName:=€¯Letter€¯ & i, FileFormat:= _ wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _ True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _ False, SaveNativePictureFormat:=False, SaveFormsData:=False, _ SaveAsAOCELetter:=False Target.Close Next i End Sub If you want to save each document with a filename that comes from 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 -- Please post any further questions or followup to the newsgroups for the benefit of others who may be interested. Unsolicited questions forwarded directly to me will only be answered on a paid consulting basis. Hope this helps Doug Robbins - Word MVP "PhilJones" wrote in message ... I am trying to create separate files for each document that is created during a mail merge. We have a list of 20 names and we need to create 20 letters and we need them each to be |
Reply |
Thread Tools | |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Can you save individual document pages as seperate word files? | Mailmerge | |||
mail merge with attachments | Mailmerge | |||
Merge groups in large list to separate files | Microsoft Word Help | |||
Mail Merging into the current or target document | Mailmerge | |||
How do I mail merge when only merge document is shown in tools? | Microsoft Word Help |