Объект Range

Объект Range – это основной объект для работы с текстом. Он определяет фрагмент текста, включая все объекты, связанные с этим текстом, – комментарии, ссылки и пр. Создается объект чаще всего с помощью метода или свойства Range. Если некоторый объект вызвал метод Range, то возвращаемый объект Range будет содержать область определения объекта, вызвавшего метод. Каждый фрагмент имеет начало и конец, которые можно указать при определении объекта. Например:

Set R1 = ActiveDocument.Range(Start:=0, End:=10)

Set R2 = ActiveDocument.Paragraphs(l).Range

Set R3 = ActiveDocument.Range( _

Start:= ActiveDocument.Paragraphs(2).Range.Start, _

End:= ActiveDocument.Paragraphs(4). Range.End)

Set R4 = ActiveDocument.Content

R1 содержит первые 10 символов активного документа (нулевая позиция находится перед первым символом, последняя – после 10-го символа). R2 – это 1-й абзац активного документа (включая символ конца абзаца), R3 – 2, 3 и 4-й абзацы документа, R4 – весь документ.

Операции с текстом выполняются с помощью методов и свойств. Основные методы приведены в табл. 12.31, свойства – в табл. 12.32. Событий у объекта Range нет. Полный список свойств и методов объекта можно найти в статье "Range Object Members" справочной системы.

Таблица 1231

Основные методы объекта Range

Метод

Описание

Сору

Копирует значение объекта в буфер обмена, например:

ActiveDocument.Sections(1).Range.Copy

Cut

Удаляет заданный фрагмент из документа и помещает его в буфер обмена

Delete

Если параметры не указаны, удаляет весь фрагмент. С параметрами удаляет заданное количество элементов текста (символов или слов). Отрицательное Count означает, что удаляются элементы перед фрагментом, положительное – первые элементы фрагмента, или, если фрагмент сжат, элементы после фрагмента. Так удаляются первые три слова из фрагмента myR:

myR.Delete Unit:= wdWord, Count:= 3

InsertAfter

Вставляет заданный текст в конец фрагмента

Insert Before

Вставляет заданный текст перед заданным фрагментом

Insert Paragraph

Заменяет фрагмент новым абзацем. Если вы не хотите заменять содержимое фрагмента, используйте предварительно метод Collapse. Приведенные инструкции сотрут все содержимое документа, заменив его пустым абзацем:

Set myR = ActiveDocument.Range

myR.lnsertParagraph

I nsert Paragraph After

Вставляет символ абзаца после фрагмента

Insert ParagraphBefore

Вставляет новый абзац перед фрагментом:

With ActiveDocument.Content

.InsertParagraphBefore

.InsertBefore “Введение"

End With

Move

Сжимает область в точку, стягивая ее в начало или конец, и затем перемещает точку вставки. Параметр Unit определяет единицы перемещения, a Count – количество этих единиц (по умолчанию одна). Положительные значения Count задают стягивание к концу и перемещение вперед, отрицательные – стягивание в начато и перемещение назад. Метод не перемещает текст, он меняет ссылку на фрагмент документа:

Set R1 = ActiveDocument.Paragraphs(l).Range

RI.Move Unit:=wdParagraph, Count:=2

R1.Select

В результате курсор будет находиться в начале третьего абзаца

Paste

Вставляет содержимое буфера обмена в заданный фрагмент. Если вы не хотите заменять содержимое фрагмента, используйте предварительно метод Collapse

Select

Выделяет фрагмент

Collapse

Область стягивается в начальную или конечную позицию. Направление сжатия задаст параметр Direction, принимающий значения wdCollapseStart или wdCollapseEnd.

По умолчанию область стягивается в начальную точку (значение параметра: wdCollapseStart). Если сжимается абзац и он стягивается в конечную точку, точка вставки переносится за метку конца абзаца и устанавливается в начало следующего абзаца. Если такой эффект нежелателен, после сжатия применяется метод перемещения MoveEnd, передвигающий точку вставки назад на один символ:

Set myR = ActiveDocument.Paragraphs(l).Range

myR.Collapse Direction:=wdCollapseEnd

myR.MoveEnd Unit:=wdCharacter, Count:=-1

Expand

Расширяет фрагмент до указанного элемента. Например, фрагмент из одного слова расширяется на весь абзац:

Set myR = ActiveDocument.Words(l)

myR.Expand Unit:=wdParagraph

Таблица 12.32

Основные свойства объекта Range

Свойство

Описание

End

Позиция последнего символа фрагмента

Start

Позиция первого символа фрагмента

Font

Возвращает объект Font (шрифт). Например:

myR.Font.Name = “Arial"

Information

Информация о фрагменте. Значение зависит от аргумента. Список возможных значений аргумента приведен в статье "WdInformation Enumeration" справочной системы. Например, так мы можем проверить, что фрагмент является таблицей и узнать количество строк и столбцов в этой таблице:

If myR.lnformation(wdWithlnTable) Then

R = myR.lnformation(wdMaxNumberOfRows)

C = myR.lnformation(wdMaxNumberOfColumns)

End If

Text

Неформатированный текст фрагмента. Например:

myR.Text = “Новое значение"

Characters, Words,

Paragraphs,

Sections, Rows,

Columns, Tables

и т.д.

Коллекции элементов текста фрагмента

Find

Возвращает объект Find, который используется в операциях поиска и замены. Например, найдем в myR слово "VB" и выделим его полужирным шрифтом:

myR.Find.Execute FindText:= "VB", Forward:=True

If myR.Find.Found = True Then myR.Bold = True

Все вхождения строки "VB" в myR заменим на "VBA”:

myR.Find.Execute FindText:= "VB", _

ReplaceWith:= "VBA", _

Replace:=wdReplaceAII

Многие методы имеют параметр Unit, который определяет, с какими элементами текста выполняется операция. Основные значения этого параметра: wdCharacter (символ), wdWord (слово), wdSentence (предложение), wdParagraph (абзац), wdSection (раздел), wdCell (ячейка таблицы), wdColumn (столбец таблицы), wdRow (строка таблицы), wdTable (таблица). Возможные значения параметра конкретного метода следует уточнять в описании метода.

Объект Selection

Объект Selection указывает на выделенную часть документа. Если выделение отсутствует, то Selection – это позиция курсора в документе. Создастся объект Selection с помощью метода Select других объектов.

Объекты Range и Selection не зависят друг от друга. Вы можете определить много объектов Range, используя различные переменные, и манипулировать фрагментами документа в программе, не выделяя их. Объект Selection уникален. Нельзя создать несколько объектов Selection. Доступ к объекту производится через свойство Selection объекта Application.