
Tips.Net > WordTips Home > Files > Saving Personalized Copies of a Document
Summary: Do you need to save individualized copies of documents for a series of individuals? This tip describes how to do just that, without using mail merge. Individual names are pulled from a text file and placed in the header of each document just before the document is saved. (This tip works with Microsoft Word 97, Word 2000, Word 2002, and Word 2003.)
This tip is a variation on one that appeared in WordTips a few weeks ago. That tip provided a way to print personalized copies of a document. With this variation you can create personalized copies of a document. All you need to do is create a regular text file that contains the names of individuals who are to receive your document, one name per line. The macro will then stuff the name into the header of a document and save the document under that person's name. Thus, if your text file has fifteen people in it, you'll end up with fifteen copies of the document, one per person. Each will be personalized with the individual's name in the header.
The process to perform such a task is fairly straightforward: open the text file, grab a name, put it in the header, and then save the document. Another name is grabbed, and the process is repeated until there are no more names in the file. The following macro implements such a process:
Sub SaveNameFiles()
Dim sName As String
Dim sFile As String
Open "c:/names.txt" For Input As #5
On Error Resume Next
Do While Not EOF(5)
' get the name
Line Input #5, sName
sFile = sName & ".doc"
sFile = "c:\mypath\" & sFile
ActiveWindow.ActivePane.View.SeekView = _
wdSeekCurrentPageHeader
Selection.WholeStory
Selection.Delete
Selection.TypeText Text:=sName
ActiveWindow.ActivePane.View.SeekView = _
wdSeekMainDocument
ActiveDocument.SaveAs FileName:=sFile
Loop
Close #5
ActiveWindow.ActivePane.View.SeekView = _
wdSeekCurrentPageHeader
Selection.WholeStory
Selection.Delete
ActiveWindow.ActivePane.View.SeekView = _
wdSeekMainDocument
End Sub
The tricky part of the macro is using the .SeekView property to specify which story in the document you want to work with. As implemented here, the .SeekView property is used repeatedly to switch between the header area and the main document.
Note, as well, that the sFile variable specifies the name of the file in which the personalized document will be saved. Right after the name is grabbed from the text file, the sFile variable is constructed by adding the .doc file extension and the path to the front of the file name. (You should change the path to one that is appropriate for your system.)
The actual save operation is relatively easy; the .SaveAs method is used with a filename. This is the most error-prone line of code in the macro, since one of the names read from the file could include characters that are inappropriate for valid filenames. If this is the case, an error is generated and the macro continues with the next line. The document, however, will not be saved under the offending name.
After the loop (grabbing names and saving) is completed, the header area is cleared and the .SeekView is switched back to the main document.
Tip #195 applies to Microsoft Word versions: 97 2000 2002 2003
Great Idea! Word is a tool to get what you really want—printed output. This means you need to make sure that Word works as well as possible with your printer, whether it is sitting on your desk or in a room down the hall.
Check out WordTips: Printing and Printers today!
Word includes two powerful search engines. Do you know how to use them both? You can discover new knowledge with WordTips: Find and Replace. (more information...)
Ask a Word Question
Make a Comment
Beauty Tips
Bugs and Pests Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Money Tips
Organizing Tips
Pet Tips
Word2007 Tips
WordTips