Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Mailmerge and Fax / May 2004

Tip: Looking for answers? Try searching our database.

Mail Merge label layout

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Faye - 28 May 2004 20:29 GMT
I'm using mail merge to create labels.

By default, Word lays them out horizontally.

I'd like to have them laid out vertically.

Example:
What Word does by default:
label_1   label_2   label_3
label_4   label_5   label_6
label_7   label_8   label_9

What I want:
label_1   label_4   label_7
label_2   label_5   label_8
label_3   label_6   label_9

Any ideas?

Thanks,
Faye
Doug Robbins - Word MVP - 29 May 2004 01:17 GMT
If your data source is Access, it has a label form wizard and you can use
File>Page setup to control the way in which the labels are ordered - accross
then down or down the accross.

If the data source is a Word table, run the following macro on that
document:

' Macro created by Doug Robbins to assign numbers to data source so that it
can be sorted
' to cause labels to print down columns
Dim Message, Title, Default, labelrows, labelcolumns, i As Integer, j As
Integer, k As Integer
Message = "Enter the number of labels in a row"    ' Set prompt.
Title = "Labels per Row"    ' Set title.
Default = "3"    ' Set default.
' Display message, title, and default value.
labelcolumns = InputBox(Message, Title, Default)
Message = "Enter the number of labels in a column"    ' Set prompt.
Title = "Labels per column"    ' Set title.
Default = "5"    ' Set default.
labelrows = InputBox(Message, Title, Default)
ActiveDocument.Tables(1).Columns.Add
BeforeColumn:=ActiveDocument.Tables(1).Columns(1)
ActiveDocument.Tables(1).Rows(1).Range.Cut
k = 1
For i = 1 To ActiveDocument.Tables(1).Rows.Count - labelcolumns
   For j = 1 To labelrows
       ActiveDocument.Tables(1).Cell(i, 1).Range.InsertBefore k + (j - 1) *
labelcolumns
       i = i + 1
   Next j
   k = k + 1
   i = i - 1
   If k Mod labelcolumns = 1 Then k = k - labelcolumns + labelcolumns *
labelrows
Next i
ActiveDocument.Tables(1).Sort FieldNumber:="Column 1"
ActiveDocument.Tables(1).Rows(1).Select
Selection.Paste
ActiveDocument.Tables(1).Columns(1).Delete

If the data source is something esle, first use a catalog or directory type
mailmerge with the merge fields in the first row of a one row table to
create a document with all of the data in a table, then add a header row and
then run the above macro.

Signature

Please post any further questions or followup to the newsgroups for the
benefit of others who may be interested.  Unsolicited questions forwarded
directly to me will only be answered on a paid consulting basis.

Hope this helps
Doug Robbins - Word MVP

> I'm using mail merge to create labels.
>
[quoted text clipped - 17 lines]
> Thanks,
> Faye
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.