查找长行(Microsoft Word)
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的旧菜单界面在这里:
查找长行。