#1
|
|||
|
|||
Mail Merge to multiple .doc files named after a mergefield
Hi,
I have a mail merge .doc file. I use the directory function to create a single .doc file with all the records in it. I have the following code (taken from this website : http://vbaexpress.com/kb/getarticle.php?kb_id=727 Code:
Option Explicit 'This goes in the Declarations section of your code module. 'Hopefully it is already there because you have ticked the 'Require Variable Declaration' _ checkbox. (Tools/Options, Editor tab.) Sub SplitIntoPages() Dim docMultiple As Document Dim docSingle As Document Dim rngPage As Range Dim iCurrentPage As Integer Dim iPageCount As Integer Dim strNewFileName As String Application.ScreenUpdating = False 'Makes the code run faster and reduces screen _ flicker a bit. Set docMultiple = ActiveDocument 'Work on the active document _ (the one currently containing the Selection) Set rngPage = docMultiple.Range 'instantiate the range object iCurrentPage = 1 'get the document's page count iPageCount = docMultiple.Content.ComputeStatistics(wdStatisticPages) Do Until iCurrentPage > iPageCount If iCurrentPage = iPageCount Then rngPage.End = ActiveDocument.Range.End 'last page (there won't be a next page) Else 'Find the beginning of the next page 'Must use the Selection object. The Range.Goto method will not work on a page Selection.GoTo wdGoToPage, wdGoToAbsolute, iCurrentPage + 1 'Set the end of the range to the point between the pages rngPage.End = Selection.Start End If rngPage.Copy 'copy the page into the Windows clipboard Set docSingle = Documents.Add 'create a new document docSingle.Range.Paste 'paste the clipboard contents to the new document 'remove any manual page break to prevent a second blank docSingle.Range.Find.Execute Findtext:="^m", ReplaceWith:="" 'build a new sequentially-numbered file name based on the original multi-paged file name and path strNewFileName = Replace(docMultiple.FullName, ".doc", "_" & Right$("000" & iCurrentPage, 4) & ".doc") docSingle.SaveAs strNewFileName 'save the new single-paged document iCurrentPage = iCurrentPage + 1 'move to the next page docSingle.Close 'close the new document rngPage.Collapse wdCollapseEnd 'go to the next page Loop 'go to the top of the do loop Application.ScreenUpdating = True 'restore the screen updating 'Destroy the objects. Set docMultiple = Nothing Set docSingle = Nothing Set rngPage = Nothing End Sub It splits the document in separate .doc files. First, I would like to add code to have the new word document have specific margins and paragraph parameters since the splitted files have default parameters and does not fit in a single page. Second, I would like the code to name the files after a mergefield instead of adding 1,2,3,etc... to the filename. Could you please help me add the necessary code in the above macro? Thank you. |
#2
|
||||
|
||||
hi nicnad,
Since you obtained the macro from another forum, you should post any queries about it there - as much as anything as a prompt to the author who, after all, will also be more familiar with the code than someone who's not been involved in its development. Having said that, you might find it worthwhile visiting: http://www.gmayor.com/individual_merge_letters.htm
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Mail Merge and Files on Network Drive | Joe Switch | Mail Merge | 0 | 09-15-2011 09:06 AM |
Multiple Mail Merge? | imogul | Mail Merge | 1 | 06-24-2011 07:20 PM |
convert multiple csv files to multiple excel files | mit | Excel | 1 | 06-14-2011 10:15 AM |
email as pdf attachment - subject line and attachment named after mail merge | Nexus | Mail Merge | 12 | 04-13-2011 11:34 PM |
Mergefield date error | michielvanderbiest | Mail Merge | 1 | 04-12-2010 11:22 PM |