Поиск границ (Microsoft Word)
Word имеет очень мощную функцию, которая позволяет вам искать что угодно под солнцем. Однако одна вещь, которую вы не можете найти, — это границы абзацев. Например, если вы хотите найти все абзацы с включенной левой границей, вы не сможете этого сделать. Однако есть несколько способов обойти это.
Первый обходной путь — просто использовать стили для форматирования абзацев.
Если вы используете стиль, и этот стиль требует наличия левой границы абзаца, вы можете легко искать абзацы, используя этот стиль.
(То, как именно искать стили, описано в других выпусках WordTips.)
Второй возможный обходной путь — выполнить поиск с помощью макроса.
Используя макрос, вы можете легко проверить, установлены ли какие-либо атрибуты границы для абзаца. Следующий макрос проходит через каждый абзац в документе. Когда он находит абзац, у которого установлен какой-либо из атрибутов границы, этот абзац выбирается, и макрос останавливается.
Sub SearchForBorders1() Dim k As Word.Paragraph Dim bFound As Boolean For Each k In ActiveDocument.Paragraphs bFound = False If k.Borders(wdBorderTop).LineStyle <> wdLineStyleNone _ Then bFound = True If k.Borders(wdBorderLeft).LineStyle <> wdLineStyleNone _ Then bFound = True If k.Borders(wdBorderBottom).LineStyle <> wdLineStyleNone _ Then bFound = True If k.Borders(wdBorderRight).LineStyle <> wdLineStyleNone _ Then bFound = True If bFound Then k.Range.Select Exit Sub End If Next k End Sub
Этот макрос может быть очень удобен, если у вас не так много абзацев с рамками. Зачем? Поскольку макрос всегда начинает поиск с начала документа и поэтому найдет только первый абзац с установленной рамкой.
Для поиска границ в абзацах за пределами того, в котором находится точка вставки, можно использовать другой макро-подход. Следующий макрос делает именно это — он начинает поиск после текущего абзаца и останавливается, когда достигает абзаца, для которого установлен какой-либо из атрибутов границы. Обратите внимание, что этот макрос не выделяет весь абзац; он просто перемещает точку вставки в абзац с установленной рамкой.
Sub SearchForBorders2() Static a As Long, l As Long Dim b As Boolean Dim bd As Border Dim bds As Borders Dim prg As Paragraph Dim prgs As Paragraphs Dim re As Range Dim se As Selection Dim doc As Word.Document Set se = Selection Set re = se.Range Set doc = ActiveDocument If se.Start < l Then a = se.Start With doc.Content Set bds = .Borders re.Start = a re.End = .End End With For Each bd In bds b = bd = True If b Then Exit For Next If Not b Then Exit Sub Set prgs = re.Paragraphs For Each prg In prgs Set re = prg.Range If InStr(re.Text, Chr(13)) = 0 Then re.End = re.End + 1 End If Set bds = re.Borders For Each bd In bds b = bd = True If b Then Exit For Next If b Then a = re.Start se.Start = re.Start se.End = re.Start a = re.End l = se.Start Exit Sub End If Next a = 0 MsgBox "No more borders found" End Sub
_Примечание: _
Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
WordTips — ваш источник экономичного обучения работе с Microsoft Word.
(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (9833) относится к Microsoft Word 2007, 2010, 2013, 2016, 2019 и Word в Office 365. Вы можете найти версию этого совета для пользователей старый интерфейс меню Word здесь:
link: / word-Searching_for_Borders [Поиск границ]
.