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
Post a Comment