vba - MS Word Mail Merge and Split Documents saving, Header and footer issue -


i using below macro split mail merged separate documents. need split separate documents keeping whole page including header , footers , saving in first merged field on page, first piece of information on merged letters.

however, macro runs on 1 letter not rest, , format incorrect. changes font, page layout , not include headers , footers. saves 'ref' rather first merged field on letter.

does have idea how amend code below correctly updates above , letters please? understand if looks bad new vba , no 1 on project ask help. in advance

sub splitter() ' based on macro doug robbins save each letter created mailmerge separate file. ' http://www.productivitytalk.com/forums/topic/3927-visual-basic-question-for-merge-fields/ dim integer dim source document dim target document dim letter range dim ofield field dim ref string set source = activedocument = 1 source.sections.count     set letter = source.sections(i).range     letter.end = letter.end - 1         each ofield in letter.fields         if ofield.type = wdfieldmergefield             if instr(ofield.code.text, "ref") > 0             'get result , store ref variable             ref = ofield.result             end if         end if         next ofield     set target = documents.add     target.range = letter     target.saveas filename:="\\svr4958file01\libraries\u20480\documents\on hold letters template\20150512 on hold letters customers active , cancelled\" & "ref"   target.close next end sub 

this answer second part:

this line:

if instr(ofield.code.text, "ref") > 0 

is finding mergefield "ref" in it. if need different mergefield, should put name of mergefield wish save file "ref" is, if mergefield is, "addressee" change to:

if instr(ofield.code.text, "address") > 0 

also, last line saving filename string "ref" instead of variable. need remove quotes around ref. should read:

target.saveas filename:="\\svr4958file01\libraries\u20480\documents\on hold letters template\20150512 on hold letters customers active , cancelled\" & ref 

as far rest, use alternative approach (i don't have time provide code right now). find first , last page of each range (which set variable letter) , print out these pages word doc. keep headers , footers. code need enter be:

letter.information(wdactiveendpagenumber)  

to page number of end of range (not sure assume (wdactivestartpagenumber) or similar first page of range

and

application.printout from:=firstpagenum, to:=lastpagenum, outputfilename:=:="\\svr4958file01\libraries\u20480\documents\on hold letters template\20150512 on hold letters customers active , cancelled\" & ref & ".doc" 

will update more later if time.


Comments

Popular posts from this blog

Email notification in google apps script -

c++ - Difference between pre and post decrement in recursive function argument -

javascript - IE11 incompatibility with jQuery's 'readonly'? -