Объект 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.