Word.Tips.Net Welcome toWord.Tips.Net

Helpful Links

Tips.Net Home
WordTips Home

Ask a Word Question
Make a Comment

Tips.Net Store

WordTips FAQ
WordTips Premium

Learn Access Now
Free Printable Forms

Beauty Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Legal Tips
Money Tips
Organizing Tips
Pest Tips
Pet Tips
Wedding Tips
Word2007 Tips
WordTips

Advertise on the
WordTips Site

Newest Tips

Arranging Document Windows

Specifying a Backup Location

Controlling Chart Gridlines

Merging Table Cells

Collapsing and Expanding Subdocuments

Zooming With the Keyboard

Initiating a New Search

 

Finding Long Lines

Summary: Word is very dynamic in how it "flows" text from one line to another and one page to another. In most cases we are willing to allow Word to do its job in this area. In some situations, however, you may need to know if a paragraph has flowed to a new line so that you can "force" it to fit all on one line. Making this determination is not as easy as you might like. (This tip works with Microsoft Word 97, Word 2000, Word 2002, Word 2003, and Word 2007.)

Lori asked for an easy way to determine if a paragraph "spills over" to more than one line. It seems that when Lori was merging labels, if a line (paragraph) runs over and wraps to the next line on the label, she wanted to reduce the point size on the text so that the line occupied just that—a single line.

Wrapping lines is a real-time (and print-time) feature of Word. Word performs internal calculations continuously to work out what to display on screen or what to print on paper. Where text wraps from one line to another there is actually nothing to mark the point of wrap (as there is in some other word processors), so there's nothing to actually search for or find. In addition, Word's Find feature does not have an option (special or otherwise) to seek stuff and say how many lines the found stuff spreads over.

It is possible to do a long series of search-and-replace operations to try to "fudge" and find out the too-long lines. For instance, you could follow these general steps:

  1. Replace all spaces in a merged document with some standard character combination, such as [s].
  2. Replace all dashes in a merged document with some standard character combination, such as [d].
  3. Now, all paragraphs in the document consist of a single, run-together word.
  4. Run the hyphenation tool to manually hyphenate the document.
  5. Whenever Word finds a line that needs to be hyphenated, you can decrease the point size of that line.
  6. Redo your replacements, return [s] and [d] to their normal spaces and dashes.

This may sound a bit convoluted, and it is. But it will work fairly well, unless you want to get into writing a macro. (Believe it or not, even if you don't use macros that often, this particular macro is much easier than doing the above steps over and over again.)

When trying to decide how to put the macro together, a sad discovery awaits us in VBA. Veteran Word users will remember that when you use the Word Count feature in Word, the program shows you the number of lines in your document. This would imply that you can use VBA to determine the number of lines in a selection. Unfortunately, the ReadabilityStatistics property in VBA doesn't return a statistic for the number of lines. That means that the statistic shown in the Word Count dialog box is internally calculated as needed.

The only apparent solution is to rely upon the Information property for wdFirstCharacterLineNumber, which returns the line number for the first character in a selection. Unfortunately, there is no wdLastCharacterLineNumber specified in VBA, so the macro must make a selection for the first character in a paragraph, compare it to a selection of the last character in a paragraph, and see if the same two line numbers are returned. If they aren't, then the point size of the paragraph can be reduced and another calculation done.

The following VBA macro, ParaforceOneLine, does just this process. It examines each paragraph in a document, and if any given paragraph runs over a single line, the point size of that particular paragraph is reduced until it can fit on a single line.

Sub ParaForceOneLine()
    Dim objPara As Paragraph
    Const ChangeSize = 0.5

    For Each lobjPara In ActiveDocument.Paragraphs
        With objPara.Range
            While .Information(wdFirstCharacterLineNumber) <> _
              .Characters(Len(.Text)).Information(wdFirstCharacterLineNumber)
                .Font.Size = .Font.Size – ChangeSize
            Wend
        End With
    Next objPara
End Sub

Tip #1415 applies to Microsoft Word versions: 97 | 2000 | 2002 | 2003 | 2007

Take Control! Master the real power behind Word! Successfully master the secrets of powerful formatting and create documents that stand out from the rest. Best of all, you can create documents that are easy to maintain and quick to change.
 
Check out Word 2007 Styles and Templates today!