Lori要求一种简单的方法来确定段落是否溢出到多个行中。看起来Lori合并标签时,如果一行(段落)越过并绕到标签的下一行,她希望减小文本上的磅值,以便该行仅占据一行(单行)。

换行是Word的实时(和打印时)功能。 Word会连续执行内部计算,以计算出在屏幕上显示的内容或在纸上打印的内容。在文本从一行换行到另一行的情况下,实际上没有任何标记换行的地方(就像其他一些文字处理程序一样),因此实际上没有什么要搜索或查找的。此外,Word的“查找”功能没有选项(特殊或其他)来查找内容并说出找到的内容散布了多少行。

可以执行一系列搜索和替换操作,以尝试“捏造”并找出太长的行。例如,您可以按照以下一般步骤进行:

。用某些标准字符组合(例如[s])替换合并文档中的所有空格。

。用某些标准字符组合(例如[d])替换合并文档中的所有破折号。

。现在,文档中的所有段落都由一个单独的单词组成。

。运行断字工具以手动断字文档。

。只要Word找到需要连字符的行,就可以减小该行的磅值。

。重做替换项,将[s]和[d]返回到其正常空格和破折号。

这听起来有点令人费解,事实确实如此。但是,除非您想编写宏,否则它将很好地工作。 (信不信由你,即使你不经常使用宏,这个特定的宏也比一遍又一遍地执行上述步骤容易得多。)

当试图决定如何将宏放在一起时,在VBA中等待着我们一个悲伤的发现。资深的Word用户会记住,当您在Word中使用“字数统计”功能时,该程序将向您显示文档中的行数。这意味着您可以使用VBA确定所选内容中的行数。不幸的是,VBA中的ReadabilityStatistics属性不会返回行数的统计信息。这意味着将根据需要在内部计算“字数统计”对话框中显示的统计信息。

唯一明显的解决方案是依靠wdFirstCharacterLineNumber的Information属性,该属性返回所选内容中第一个字符的行号。不幸的是,在VBA中没有指定wdLastCharacterLineNumber,因此宏必须对段落中的第一个字符进行选择,将其与段落中的最后一个字符进行选择,并查看是否返回相同的两个行号。如果不是,则可以减小段落的磅值并进行其他计算。

下面的VBA宏ParaforceOneLine只是执行此过程。它检查文档中的每个段落,如果任何给定的段落都在一行上,则该特定段落的磅值会减小,直到它适合一行为止。

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

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(9954)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。 Word的旧菜单界面在这里: