Reply
 
Thread Tools Display Modes
  #1   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Adam Foot Adam Foot is offline
external usenet poster
 
Posts: 1
Default Generate Filename from MailMerge

Hi,

I have created a MailMerge that seperates all of the documents and saves
them seperately using the following in Visual Basic - does anyone know how I
could use a field from within the MailMerge itself as well as the current
date? The area where the Filename is set is:-
.SaveAs FileName:="Save Merge" & CStr(docCounter) & _
Format(Now(), "dd_mm_yyyy"),

Thanks.


Sub Seperate()
Dim MainDoc As Word.Document
Dim fld As Word.Field

Set MainDoc = ActiveDocument

With MainDoc
.MailMerge.Destination = wdSendToNewDocument
.MailMerge.Execute
End With

Dim ResultDoc As Word.Document
Set ResultDoc = ActiveDocument

' Save each record's form letter as a separate document.
SaveRecsAsFiles ResultDoc
End Sub

Sub SaveRecsAsFiles(doc As Word.Document)
' Convert all sections to Subdocs.
AllSectionsToSubDoc doc
' Save each Subdoc as a separate file.
SaveAllSubDocs doc
End Sub

Sub AllSectionsToSubDoc(ByRef doc As Word.Document)
Dim secCounter As Long
Dim NrSecs As Long

NrSecs = doc.Sections.Count
' Start from the end, because creating Subdocs inserts
' additional sections.
For secCounter = NrSecs - 1 To 1 Step -1
doc.Subdocuments.AddFromRange _
doc.Sections(secCounter).Range
Next secCounter

End Sub

Sub SaveAllSubDocs(ByRef doc As Word.Document)
Dim subdoc As Word.Subdocument
Dim newdoc As Word.Document
Dim docCounter As Long

docCounter = 1

' Must be in MasterView to work with Subdocs
' as separate files.
doc.ActiveWindow.View = wdMasterView
For Each subdoc In doc.Subdocuments
Set newdoc = subdoc.Open
' Remove NextPage section breaks originating
' from mail merge.
RemoveAllSectionBreaks newdoc
With newdoc
.SaveAs FileName:="Save Merge" & CStr(docCounter) & _
Format(Now(), "dd_mm_yyyy")
.Close
End With
docCounter = docCounter + 1

' Word 97 may requi
' Set newdoc = Nothing.
Next
End Sub

Sub RemoveAllSectionBreaks(doc As Word.Document)
With doc.Range.Find
.ClearFormatting
.Text = "^b"
With .Replacement
.ClearFormatting
.Text = ""
End With
.Execute Replace:=wdReplaceAll
End With

End Sub




  #2   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Graham Mayor Graham Mayor is offline
external usenet poster
 
Posts: 19,312
Default Generate Filename from MailMerge

See http://www.gmayor.com/individual_merge_letters.htm and in particular the
add in you can download from there.

--

Graham Mayor - Word MVP

My web site www.gmayor.com
Word MVP web site http://word.mvps.org


Adam Foot wrote:
Hi,

I have created a MailMerge that seperates all of the documents and
saves them seperately using the following in Visual Basic - does
anyone know how I could use a field from within the MailMerge itself
as well as the current date? The area where the Filename is set is:-
.SaveAs FileName:="Save Merge" & CStr(docCounter) & _
Format(Now(), "dd_mm_yyyy"),

Thanks.


Sub Seperate()
Dim MainDoc As Word.Document
Dim fld As Word.Field

Set MainDoc = ActiveDocument

With MainDoc
.MailMerge.Destination = wdSendToNewDocument
.MailMerge.Execute
End With

Dim ResultDoc As Word.Document
Set ResultDoc = ActiveDocument

' Save each record's form letter as a separate document.
SaveRecsAsFiles ResultDoc
End Sub

Sub SaveRecsAsFiles(doc As Word.Document)
' Convert all sections to Subdocs.
AllSectionsToSubDoc doc
' Save each Subdoc as a separate file.
SaveAllSubDocs doc
End Sub

Sub AllSectionsToSubDoc(ByRef doc As Word.Document)
Dim secCounter As Long
Dim NrSecs As Long

NrSecs = doc.Sections.Count
' Start from the end, because creating Subdocs inserts
' additional sections.
For secCounter = NrSecs - 1 To 1 Step -1
doc.Subdocuments.AddFromRange _
doc.Sections(secCounter).Range
Next secCounter

End Sub

Sub SaveAllSubDocs(ByRef doc As Word.Document)
Dim subdoc As Word.Subdocument
Dim newdoc As Word.Document
Dim docCounter As Long

docCounter = 1

' Must be in MasterView to work with Subdocs
' as separate files.
doc.ActiveWindow.View = wdMasterView
For Each subdoc In doc.Subdocuments
Set newdoc = subdoc.Open
' Remove NextPage section breaks originating
' from mail merge.
RemoveAllSectionBreaks newdoc
With newdoc
.SaveAs FileName:="Save Merge" & CStr(docCounter) & _
Format(Now(), "dd_mm_yyyy")
.Close
End With
docCounter = docCounter + 1

' Word 97 may requi
' Set newdoc = Nothing.
Next
End Sub

Sub RemoveAllSectionBreaks(doc As Word.Document)
With doc.Range.Find
.ClearFormatting
.Text = "^b"
With .Replacement
.ClearFormatting
.Text = ""
End With
.Execute Replace:=wdReplaceAll
End With

End Sub



Reply
Thread Tools
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
how do I generate filename from text in Word document Wombler Microsoft Word Help 1 January 7th 07 09:04 PM
How to use mailmerge feature to generate report? (i.e. SQL statem will~ Mailmerge 1 April 11th 06 09:25 AM
auto text: the word Filename precedes the actual filename. shmuelgimmel Microsoft Word Help 0 March 23rd 05 06:59 PM
Insert > Autotext is missing "filename" and "filename and path"; how to get back? StargateFan New Users 7 February 7th 05 12:17 AM


All times are GMT +1. The time now is 02:49 AM.

Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 Microsoft Office Word Forum - WordBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Word"