OK. That takes programming. What is below is the code I use for this. Note,
I only have three address lines in my form. These are Name, Street, and CSZ.
If you have more you'll need to make sure your envelope has fields to match.
It calls up a custom envelope template that I use. That template has
macrobutton fields for manual data entry. See
http://www.addbalance.com/usersguide/fields.htm#MacroButton,
http://www.gmayor.com/Macrobutton.htm and
http://www.mvps.org/word/FAQs/TblsFldsFms/UsingMacroButton.htm for more
about macrobutton fields.
Sub KenyonBillEnvelope()
'
' KenyonEnvelope Macro
' Macro written 7/5/02 by Charles Kyle Kenyon
' "&chr(10)&"New envelope based on Kenyon Envelope form
' Calls WorkgroupPath Function (below)
' Calls SelectIt subroutine (below)
'
Dim sTemplatesPath As String
Dim sName As String
Dim sAddress As String
Dim sCSZ As String
'
sTemplatesPath = WorkGroupPath & "Letters & Faxes\"
'
' Get address info from bill
'
sName = ActiveDocument.FormFields("Name").Result
sAddress = ActiveDocument.FormFields("Street").Result
sCSZ = ActiveDocument.FormFields("CSZ").Result
'
' Create new envelope document and go to place for inserting address
Documents.Add Template:= _
sTemplatesPath & "Kenyon Legal Envelope.dot", _
NewTemplate:=False
SelectIt (2)
'
'
Selection.Text = sName
SelectIt (2)
Selection.Text = sAddress
SelectIt (2)
Selection.Text = sCSZ
SelectIt (2)
Selection.Text = ""
SelectIt (2)
Selection.Text = ""
SelectIt (1)
Selection.Fields.Add Range:=Selection.Range, _
Type:=wdFieldEmpty, _
Text:="BARCODE \u """ & sCSZ & """", _
PreserveFormatting:=False
End Sub
Function WorkGroupPath() As String
' Written by Charles Kenyon
' February 28, 2003
'
' Used by templates menus to set location of templates.
' Returns workgroup tempates path with "\" at the end.
'
' This is needed because if the folder is a network drive rather
' than a folder, it will have the "\" already. If it is a folder,
' it will not have the backslash. This function gives a string
' with the backslash in either case.
'
WorkGroupPath =
Application.Options.DefaultFilePath(wdWorkgroupTemplatesPath)
If Right(WorkGroupPath, 1) <> "\" Then
WorkGroupPath = WorkGroupPath & "\"
End If
End Function
Private Sub SelectIt(iField As Integer)
' Routine goes to beginning of document and then goes to field
' iField sets number of field to go to
' Used in new document menus where fields are present
' Note - no error handlers so you better have the fields
'
Dim iNumber As Integer
Selection.HomeKey Unit:=wdStory
For iNumber = 1 To iField
Selection.NextField.Select
Next iNumber
End Sub
See
http://word.mvps.org/FAQs/MacrosVBA/CreateAMacro.htm or
http://gmayor.com/installing_macro.htm for information on how to put these
in your templates. You can download some sample envelope templates from
http://gmayor.com/Zips/Envelope.zip.
--
Charles Kenyon
Word New User FAQ & Web Directory:
http://addbalance.com/word
Intermediate User's Guide to Microsoft Word (supplemented version of
Microsoft's Legal Users' Guide)
http://addbalance.com/usersguide
--------- --------- --------- --------- --------- ---------
This message is posted to a newsgroup. Please post replies
and questions to the newsgroup so that others can learn
from my ignorance and your wisdom.