Лори попросила простой способ определить, «растекается» ли абзац более чем на одну строку. Похоже, что когда Лори объединяла метки, если строка (абзац) переходит и переносится на следующую строку на этикетке, она хотела уменьшить размер точки в тексте, чтобы строка занимала именно это — одну строку.

Перенос строк — это функция Word в реальном времени (и во время печати). Word постоянно выполняет внутренние вычисления, чтобы решить, что отображать на экране или что печатать на бумаге. Там, где текст переносится от одной строки к другой, на самом деле нет ничего, что могло бы обозначить точку переноса (как в некоторых других текстовых процессорах), поэтому на самом деле нечего искать или находить. Кроме того, функция «Найти» в Word не имеет опции (специальной или иной) для поиска материала и определения количества строк, на которые распространяется найденный материал.

Можно выполнить длинную серию операций поиска и замены, чтобы попытаться «обмануть» и найти слишком длинные строки. Например, вы можете выполнить следующие общие шаги:

  1. Замените все пробелы в объединенном документе некоторой стандартной комбинацией символов, например [s].

  2. Замените все тире в объединенном документе некоторой стандартной комбинацией символов, например [d].

  3. Теперь все абзацы в документе состоят из одного сложенного слова.

  4. Запустите инструмент расстановки переносов, чтобы вручную перенести документ.

  5. Каждый раз, когда Word находит строку, которую необходимо расставить через дефис, вы можете уменьшить размер точки этой строки.

  6. Повторите замену, верните [s] и [d] в их обычные пробелы и дефисы.

Это может показаться немного запутанным, и это так. Но это будет работать достаточно хорошо, если вы не захотите писать макрос. (Хотите верьте, хотите нет, даже если вы нечасто используете макросы, этот конкретный макрос намного проще, чем повторять описанные выше шаги снова и снова.)

Когда мы пытаемся решить, как собрать макрос, нас ждет печальное открытие в VBA. Опытные пользователи Word помнят, что при использовании функции подсчета слов в Word программа показывает количество строк в документе. Это означало бы, что вы можете использовать VBA для определения количества строк в выделенном фрагменте. К сожалению, свойство ReadabilityStatistics в VBA не возвращает статистику количества строк. Это означает, что статистика, отображаемая в диалоговом окне «Счетчик слов», вычисляется внутренне по мере необходимости.

Единственное очевидное решение — полагаться на свойство Information для wdFirstCharacterLineNumber, которое возвращает номер строки для первого символа в выделенном фрагменте. К сожалению, в 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), я подготовил специальную страницу, содержащую полезную информацию.

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (9954) применим к Microsoft Word 2007, 2010, 2013, 2016, 2019 и Word в Office 365. Вы можете найти версию этого совета для пользователей старый интерфейс меню Word здесь:

link: / word-Finding_Long_Lines [Поиск длинных строк].