Vba word выделить абзац
Иногда нам нужно удалить или отредактировать все абзацы заголовков. Первый шаг — выбрать все абзацы заголовков. В этом уроке вы научитесь следующим методам выбора всех абзацев заголовков.
Рекомендуемые инструменты повышения производительности для Word
Kutools for Word: Интеграция ИИ , более 100 расширенных функций экономят 50 % времени обработки документов. Бесплатная загрузка
Office Tab: вводит вкладки, подобные браузеру, в Word (и других инструментах Office), упрощая навигацию по нескольким документам. Бесплатная загрузка
Выделите все абзацы заголовков с помощью кнопки "Найти и заменить"
Функция «Найти и заменить в слове» — это наиболее распространенный способ выделить все абзацы заголовков.
Шаг 1: нажмите Главная > Найти И выберите Предварительный поиск отметка
Шаг 2: нажмите Ещё кнопка для вызова дополнительных параметров поиска;

Шаг 3: нажмите Формат отметьте всплывающие варианты ниже.
Шаг 4: нажмите Стиль возможность выбрать стиль заголовка вы использовали в диалоговом окне «Найти стиль».

Примечание: этот метод может каждый раз выбирать только один абзац заголовка. Редактирование всех абзацев заголовков занимает много времени.
Вкладка Office: предоставляет интерфейсы с вкладками в Word, Excel, PowerPoint.
Улучшите свой рабочий процесс прямо сейчас. Узнайте больше о вкладке «Офис» Бесплатная загрузка
Выделите все абзацы заголовков с помощью VBA
В качестве альтернативы мы можем использовать VBA для выбора всех абзацев заголовков.
Шаг 1: нажмите «Alt-F11» открыть окно Microsoft Visual Basic для приложений;
Шаг 2: нажмите Модули на Вставить вкладку, скопируйте и вставьте следующий код VBA в окно модуля;
Шаг 3: Затем нажмите Run кнопку, чтобы применить VBA.
Код VBA для выбора всех абзацев заголовка:
Sub SelectHeadingParagraphs() Dim tempTable As Paragraph Application.ScreenUpdating = False ActiveDocument.DeleteAllEditableRanges wdEditorEveryone For Each tempTable In ActiveDocument.Paragraphs 'Debug.Print tempTable.Range.Style " aaa" tempTable.Range.Editors.Add wdEditorEveryone End If Next ActiveDocument.SelectAllEditableRanges wdEditorEveryone ActiveDocument.DeleteAllEditableRanges wdEditorEveryone Application.ScreenUpdating = True End SubВыберите все абзацы заголовков с помощью Kutool for Word
Есть ли более простой способ выделить все абзацы заголовков? Kutool for Word — ваш лучший выбор. После того, как вы установили Kutool for Word, вы можете выбрать все заголовки (абзацы заголовков) одним щелчком мыши.
Kutools for Word — это идеальная надстройка Word, которая оптимизирует вашу работу и повышает ваши навыки обработки документов. Получи это сейчас!
Нажмите Кутулс > Выбрать абзац > Выберите абзацы заголовка. Смотрите скриншот

Для более подробной информации о Выбор абзаца особенность Kutools for Word, посетите наш Выбрать все виды абзацев стр.
Лучшие инструменты для офисной работы
Kutools for Word — Повысьте свой опыт работы со словом с помощью Over 100 Замечательные особенности!
Легкая очистка: Убрать Дополнительные места / Разрывы разделов / Текстовые поля / Гиперссылки / Дополнительные инструменты для снятия см. Удалить группа.
➕ Креативные вставки: Вставлять Разделители тысяч / Флажки / радио кнопки / QR код / Штрих-код / Несколько изображений / Узнайте больше в Вставить группа.

Хотите попробовать эти функции? Загрузите Kutools for Word прямо сейчас!
Бесплатная загрузка Купить Узнайте больше о Kutools для Word
Лучшие инструменты для офисной работы
Kutools for Word — 100+ инструментов для Word
- Kutools AI Особенности: Создать, Перезапись, Суммировать, Переведите Документы / Получите быстрые ответы / Польский документ (сохранить формат)
- Владение документами: Разделить страницы / Объединить документы / Пакетное преобразование в PDF
- ✏ Редактирование содержания: Пакетный поиск и замена / Изменить размер всех изображений
- Легкая очистка: Удалить лишние пробелы / Удалить разрывы разделов
- ➕ Креативные вставки: Вставить разделители тысяч / Вставьте флажки / Создание QR-кодов
Vba word выделить абзац
Объекты, задающие программный проект, являются общими для всех документов Office 2000, в том числе и документа Word. Этой важной теме — программной работе с такими объектами посвящена лекция 4
Текст и объекты Range и Selection
Основной частью документа Word является, конечно, текст этого документа. Уже было сказано, как структурирован текст документа, рассмотрены коллекции — Characters , Words , Sentences , Paragraphs , которые позволяют работать с символами, словами, предложениями и абзацами текста.
Говорил я также и о том, что только этими коллекциями не обойтись, и необходим общий класс объектов, позволяющий задать произвольную область текста. Таковыми являются два важных класса Range и Selection . Объекты этих классов широко используются при работе с текстом. Документы, поддокументы, разделы, все вышеупомянутые коллекции от Characters до Words имеют метод или свойство Range , возвращающие в качестве результат объект Range . Каждый объект Range задает область определения некоторого объекта, включая текст и все объекты, связанные с этим текстом — комментарии, ссылки и прочее. Так, если некоторый объект вызвал метод Range , то возвращаемый объект Range будет содержать область определения объекта, вызвавшего метод.
Объект Selection представляет выделенную область. Поскольку в каждом окне может быть только одна выделенная область, то одновременно может существовать лишь несколько объектов Selection по одному на каждое существующее окно или подокно. Заметим также, что, объект Selection всегда существует в окне, даже если и не сделано явного выделения некоторой области, в последнем случае объект Selection задает точку вставки, определенную позицией курсора.
Объект Document имеет метод Range , возвращающий объект Range , и метод Select , создающий объект Selection . Метод Range — это функция, возвращающая в качестве результата объект Range ; метод Select — это процедура без параметров, которая создает объект Selection в качестве побочного эффекта. Заметьте существенную разницу между методами Range и Selection . В первом случае возвращается сам объект и поэтому можно запомнить возвращаемый объект и в программе одновременно работать с несколькими такими объектами. В случае вызова метода Selection объект не возвращается, следовательно, запомнить его нельзя, что и гарантирует уникальность объекта Selection .
Объект Range имеет метод Select , выделяющий область объекта Range , и определяющий, тем самым, новый объект Selection . Симметрично, объект Selection имеет свойство Range , возвращающее объект Range , соответствующий выделенной области.
Объекты Range и Selection столь же многообразны по своей структуре, как и объект Document . И даже большинство свойств у этих трех объектов одни и те же. Эти три объекта являются схожими. Это понятно, так как большинство частей документа: предложения, абзацы, разделы, таблицы, рисунки, комментарии, ссылки и многое другое — может составлять любую подобласть документа, в том числе и выделенную подобласть. Значит, большинство ранее описанных частей документа являются и частями (свойствами) объектов Range и Selection . Это приятно — ведь с большинством свойств этих объектов мы уже знакомы!
Объект Range напоминает матрешку: в каждую область вложена область поменьше. Вот пример корректного (хоть и не самого эффективного) задания объекта Range :
Сколько объектов Range упоминается в этом предложении? Правильный ответ: 6, но не 3. Напомним: на нижнем уровне отсутствуют классы, определяющие символ, слово или предложение — все эти объекты принадлежат классу Range .
Для объекта Selection нельзя построить такую хитрую цепочку вложений — ведь метод Select не возвращает объект Selection . Но можно построить такую же "хитрую" последовательность операторов, которая задает сужающуюся область выделения:
Работа с текстом
Объекты Range и Selection позволяют выполнять основные операции над текстом (и не только над текстом): "выделить", "добавить", "заменить", "удалить". У наших объектов большой набор методов, позволяющих реализовать эти операции. Все рассматриваемые здесь методы принадлежат обоим объектам, если не сделана специальная оговорка.
Говоря в этом параграфе о выделении, я имею в виду не применение метода Select , а выделение в более широком смысле, умение задать некоторую подобласть данной области. Выделить некоторую часть текста означает, по существу, определение объекта Range или Selection . Оба объекта задают непрерывную область, а их свойства Start и End позволяют задать начало и конец области. Меняя эти свойства, можно задать нужную область выделения. Этот основной способ выделения мы не раз демонстрировали в наших примерах:
Dim myRange As Range, myRange1 As Range With ActiveDocument Set myRange = .Range(Start:=.Sections(2).Range.Paragraphs(3).Range.Start, _ End:=.Sections(3).Range.Paragraphs(5).Range.End) Set myRange1 = .Sections(3).Range.Paragraphs(1).Range End With
В первом случае при задании области используются параметры Start и End , во втором — задается вся область данного объекта. Область может изменяться автоматически при добавлении или удалении из нее части текста.
Изменить область можно и путем ее перемещения. Этим занимается специальная группа методов перемещения Move. Прежде чем говорить о перемещении, рассмотрим сжатие области. Нередко нужна пустая область — точка вставки, параметры Start и End которой совпадают. Поэтому простейший способ сжатия — задать совпадающие значения этих параметров:
Для сжатия области можно применять специальный метод сжатия — Collapse(Direction). Область стягивается в начальную или конечную позицию. Направление сжатия задает параметр Direction, принимающий значения wdCollapseStart или wdCollapseEnd . По умолчанию область стягивается в начальную точку (значение параметра: wdCollapseStart ). Если сжимается абзац, и он стягивается в конечную точку, точка вставки переносится за метку конца абзаца и устанавливается в начало следующего абзаца. Если такой эффект нежелателен, после сжатия применяется метод перемещения MoveEnd , передвигающий точку вставки назад на один символ:
Set myRange = ActiveDocument.Paragraphs(1).Range myRange.Collapse Direction:=wdCollapseEnd myRange.MoveEnd Unit:=wdCharacter, Count:=-1
Если есть методы сжатия области, то должны быть и методы расширения области. Основным из них является метод Expand (Unit). В зависимости от значения параметра Unit область можно расширить на слово, предложение, абзац, раздел, на строку или столбец таблицы, или на всю таблицу. Для объекта Selection область можно расширить на всю строку. Для расширения области на весь фрагмент можно использовать метод WholeStory , что впрочем эквивалентно вызову метода Expand (Unit := wdStory)
Метод Move является основным методом перемещения. Остальные методы — в той или иной степени его модификации. Метод Move ( Unit , Count ) сжимает область в точку, стягивая ее в начало или конец, и затем перемещает точку вставки. Параметр Unit определяет единицы перемещения, а Count — количество этих единиц и направление стягивания и перемещения (по умолчанию 1).
Положительные значения этого параметра задают стягивание к концу и перемещение вперед, отрицательные — стягивание в начало и перемещение назад. Само стягивание означает перемещение на одну единицу. Метод возвращает количество единиц, на которое фактически произошло перемещение, или 0, если оно не осуществлено. Параметр Unit принимает значения wdCharacter (по умолчанию), wdWord, wdSentence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow и wdTable.
Методы перемещения на сам текст не влияют — лишь изменяют область, заданную объектами Range и Selection . Поэтому эти методы применимы только к переменным типа Range , но не к фиксированным областям. Например, запись:
не имеет эффекта, поскольку область первого абзаца — вещь неизменяемая.
Метод Move стягивает область в точку, которая и перемещается, поэтому после его выполнения область исчезает, и остается только точка вставки. Методы MoveStart и MoveEnd перемещают начальную или конечную точку области, обычно расширяя тем самым область.
Конечно, для перемещения по тексту документу есть много различных возможностей, кроме группы методов Move . Стоит упомянуть группу методов Next, основным из которых является метод Next(Unit,Count). Основное отличие от метода Move с теми же параметрами состоит в том, что метод Next возвращает сам объект Range , в отличие от метода Move , возвращающего число символов, на которое произошло перемещение. Напомним также о тех возможностях перемещения, которыми обладают объекты Browser и Hyperlink , напомним о закладках, специально предназначенных для перехода к ним.
Удаление текста
Метод Delete позволяет удалить текст. Вызванный без параметров, он удаляет вызывающий его объект Range или Selection . Если он применен в форме Delete(Unit,Count), удаляется часть текста в указанной области. Параметр Unit задает единицы, но при удалении возможны только два значения: wdWord и wdCharacter. Параметр Count задает количество удаляемых единиц. Если область стянута в точку, удаляются символы перед точкой вставки или после нее в зависимости от знака параметра Count . Вот несколько примеров:
'Удаляется текст в области объекта myRange myRange.Delete ' Удаляются первые три слова из области myRange1 myRange1.Delete Unit:= wdWord, Count :=3 'Область стягивается в точку myRange1.Collapse Direction := wdCollapseStart 'Удаляются три первых слова из области, предшествующей myRange1 myRange1.Delete Unit:= wdWord, Count :=-3
Вставка текста
Группа методов Insert объектов Range и Selection позволяет осуществлять вставки в документ. Для вставки текста используются методы InsertBefore(Text) и InsertAfter(Text). Параметр Text типа String задает текст, вставляемый до или после области, заданной объектами Range или Selection . После вставки текста область автоматически расширяется, включая в себя добавляемый текст. Вот пример вставки нового абзаца в начало документа:
Dim myRange As Range Set myRange = ActiveDocument.Range(Start:=0, End:=0) myRange.Text = "дорогой " myRange.InsertBefore "Мой " myRange.InsertAfter "друг! " myRange.InsertParagraphAfter
Свойство Text позволяет заменять текст в выделенной области, поэтому нет нужды вызывать метод Insert(Text), — лучше использовать свойство. Методы InsertBefore и InsertAfter безопасны, так как текст добавляется, не изменяя содержимого области. При вставке внутрь области, например, при использовании метода InsertSymbol или InsertParagraph, заменяется содержимое области. Эта вроде бы безобидная программка сотрет все содержимое документа, заменив его пустым абзацем:
Set myRange = ActiveDocument.Range myRange.InsertParagraph
Говоря о методах вставки текста, нельзя не упомянуть о таком мощном методе, как InsertFile — он позволяет вставлять не только текст или таблицу Excel, но и целый документ, хранящийся в файле. Вот простой пример вызова метода, при котором в начало активного документа вставляется существующий документ:
Работа с буфером
Известно, как полезен буфер при работе с одним и, особенно, с несколькими документами. Объекты Range и Selection в полной мере позволяют задействовать все возможности буфера. Метод Copy, не имеющий параметров, копирует объект (содержимое области) в буфер. Метод Cut, действуя аналогично, копирует объект в буфер, заодно удаляя его.
Заметьте, что в отличие от предыдущей версии, теперь метод Cut работает, как ему положено, не только копируя объект, но и удаляя его, ранее удаления не происходило, вместо этого объект, вызывавший метод стягивался в точку. Метод Paste позволяет приклеить объект, помещенный в буфер. Рассмотрим пример:
.Public Sub test1() Dim myRange As Range Set myRange = ActiveDocument.Paragraphs(5).Range myRange.Select 'Добавляем новый абзац myRange.InsertAfter "New Text" myRange.InsertParagraphAfter 'Выделяем и затем вырезаем добавленный абзац и помещаем его в буфер myRange.MoveStart Unit:=wdParagraph myRange.Select Selection.Cut 'Добавляем новый абзац Selection.InsertAfter "Новый текст!" Selection.InsertParagraphAfter 'Добавляем абзац из буфера Selection.Collapse Direction:=wdCollapseEnd Selection.Paste End Sub
Метод Paste позволяет "вклеить" содержимое буфера в область, заданную объектами Range и Selection . Эта операция опасна, так как происходит замена, а не добавление текста. Поэтому обычно метод Paste применяется к объектам Range и Selection , стянутым в точку вставки. В выполнении этого метода есть нюансы. У объекта Range содержимое буфера включается в его область, Объект Selection остается точкой вставки, расположенной после текста, добавленного из буфера.
Заметьте, в буфер можно копировать не только текст. В нашем следующем примере в буфер копируется рисунок, являющийся элементом коллекции TableOfFiguress . Напомню, что элементы этой коллекции вставляются аналогично символам текста и являются частью абзаца. В тестовом документе DocOne, с которым я работаю, в начало текста вставлен рисунок мышки. Я буду работать с первым абзацем этого текста, содержащим этот рисунок, как с обычным текстом, выделю рисунок, помещу его в буфер, а затем приклею в другом месте текста. Вот код соответствующей процедуры:
Public Sub CopyImage() 'Копирование рисунка через буфер Dim MyRange As Range Set MyRange = Documents("DocOne").Paragraphs(1).Range With MyRange 'Первый абзац этого документа содержит рисунок ' - элемент коллекции TableOfFiguress.Выделяем рисунок .MoveEnd Unit:=wdCharacter, Count:=-7 .Select .Copy End With Set MyRange = ActiveDocument.Paragraphs(6).Range MyRange.Select Selection.Collapse Direction:=wdCollapseEnd Selection.Paste End SubИногда в буфер копируют формат текста. Этим занимается метод CopyFormat , копирующий формат по первому символу объекта Selection . Если этот символ — метка абзаца, копируется формат абзаца. Методом CopyFormat обладает только объект Selection .
Метод PasteFormat применяет форматирование, хранящееся в буфере к объекту Selection .
Метод PasteSpecial позволяет явно управлять форматированием в момент вставки объекта из буфера.
VBA в Word Свойства и методы объекта Word.Selection
Метод EndOf() здесь для того, чтобы не перезаписывать один и тот же текст 100 раз, поскольку после ввода текст остается выделенным.
- Type — еще одно проверочное свойство, которое позволяет предупредить ошибку, если пользователь выделил что-то неположенное. Например, при обычном выделении значение этого свойства будет равно 1, а если выделены несмежные участки текста — 2.
- Words — аналогично такому же свойству Document.
Методов у объекта Selection гораздо больше, чем свойств:
- Calculate() — возможность посчитать математическое выражение прямо в процессе ввода текста и вернуть его результат (только используя тип данных Single).
- ClearFormatting() — очистить форматирование (и на уровне текста, и на уровне параграфа). Свойство можно применять не только для объекта Selection, но и для объектов Find и Replace.
- Collapse() — превратить выделение в точку вставки. Можно использовать два варианта: точка вставки на начало выделения и на конец выделения. Очень удобно, если вам требуется только вставить новый текст без удаления старого.
- Copy(), CopyAsPicture(), Cut(), Paste() и Delete() — комментировать эти методы, видимо, необходимости нет.
- EndKey() — этот метод так называется, поскольку он очень похож по функциональности на нажатие клавиши . Он позволяет (в зависимости от переданных параметров) перейти на конец DocumentStory, строки, столбца или записи в таблице (по умолчанию — на конец строки) и либо выделить до этого момента, либо установить на нем точку вставки. Чтобы вставить перевести курсор вставки на конец текста документа, можно воспользоваться командой
Selection.EndKey Unit:=wdStory, Extend:=wdMove
Если же нужно перейти на начало элемента, используется аналогичный метод HomeKey().
- EndOf() — в том же режиме, что и EndKey(), перейти на конец символа, слова, предложения, абзаца, секции, текста документа, таблицы и т.п. Чтобы перейти на начало, существует метод StartOf().
- Expand() — расширить выделение на слово, предложение, абзац и т.п. — в зависимости от переданного параметра. Метод Extend() позволяет расширить выделение (вместо слова — предложение, вместо предложения — абзац и т.п.). Метод, обратный методу Expand() — Shrink().
- GoTo() — работает практически аналогично такому же метода объекта Document.
- GotoNext() — перейти на следующую строку, страницу, закладку и т.п. Аналогично работает метод GotoPrevious() (переход на предыдущий элемент).
- назначение многочисленных методов Insert() очевидно. Чаще всего используются методы InsertBefore() (вставить перед выделением) и InsertAfter() (вставить после выделения).
- методы Move() Встречаются едва ли не в любой программе, связанной с вводом текста в Word. Самые важные и удобные из этих методов:
- MoveLeft() , MoveRight(), MoveUp(), MoveDown(), MoveEnd(), MoveStart() — назначение этих методов очевидно . Каждый из них принимает дополнительные параметры, при помощи которых можно определить, на сколько позиций будет перемещаться указатель, будет ли двигаться выделение, распространяясь на новую область и т.п.
- MoveStartUntil(), MoveStartWhile(), MoveEndUntil(), MoveStartWhile() отличаются тем, что курсор вставки перемещается не на определенное количество символов, а пока не будет найдено (или пока встречается) определенная последовательность символов. Также очень удобно для установки курсора в нужное место в документе для ввода текста.
- метод Move() — более гибкий. Он позволяет отсчитывать не только определенное количество символов, но и слов, предложений, абзацев, разделов, столбцов и строк в таблице и т.п. Позволяет обойтись минимальным количеством изменений в коде, если изменился исходный шаблон для ввода данных.
- Next() — перейти вперед на определенное количество символов, слов, предложений, абзацев, разделов, столбцов и строк в таблице и т.п. Перейти назад позволяет метод Previous().
- NextField() — перейти на следующее поле в форме (или проверить, не кончились ли поля (в этом случае этот метод вместо объекта Field возвратит Nothing). Есть также метод PreviousField().
- SelectColumn(), SelectRow(), SelectCell() — очень удобные методы для выполнения различных операций в таблице Word.
- SelectCurrent… Alignment(), Font(), Indent(), Color() и т.п. — выделить текст до изменения выравнивания, шрифта, отступа, цвета и т.п. Также очень удобно для целей форматирования или для выделения специальным образом добавленного текста.
- SetRange() — самый простой способ настроить выделение. Передаются номер первого и последнего символа того участка текста, который нужно выделить. Нумерация начинается с 0, скрытые служебные символы также считаются. Такой же метод существует для объекта Range.
- Sort(), SortAscending(), SortDescending() — возможность расставить по алфавиту, датам и т.п. абзацы или столбцы в таблице (которые входят в выделение). Этот метод сможет сэкономить вам множество времени и сил.
- ToggleCharacterCode() — позволяет ввести код служебного символа и тут же преобразовать его в символ Unicode. Например, чтобы ввести символ Евро, можно воспользоваться командами
- TypeText() — самый простой, надежный и часто используемый метод ввода текста. Принимает единственный параметр — текст, который нужно ввести. Будет ли перезаписан текущий текст выделения, зависит от свойства ReplaceSelection объекта Options.
- WholeStory() — выделить текущую часть документа (document story). Обычно используется, чтобы выделить текст документа без сносок, редакторской правки, колонтитулов и т.п.




