
11.5. Объект Range
Объект Range имеет некоторые преимущества перед объектом Selection. В частности, при работе с Range нет необходимости выделять текст или перемещать по тексту курсор.
В документе может быть сколько угодно объектов Range, в то время, как объект Selectionможет быть лишь один. Объект Range задается первым и последним символом.
Особенность работы с Range заключается в том, что этот объект может быть создан лишь программно. Получить Range для различных частей документа можно разными способами.
11.5.1. Как получить объект Range
Можно преобразовать в Range выделение и больше не зависеть от действий пользователя — с помощью свойства Range объекта Selection. В п.6.6.2.5 мы рассматривали пример такого перехода.
Объект Range, в свою очередь, может быть преобразован в выделение — с помощью методаSelect. Поэтому мы можем легко переходить от объектов Range к объектам Selection и наоборот.
Можно задать Range напрямую — указав диапазон. Например, следующий код позволяет получить диапазон активного документа от 20 до 1500-го символа (листинг 11.6.)
Dim obj_Range As Range
Set obj_Range = _
ActiveDocument.Range(10, 1500)
Листинг 11.6. Задаем объект Range напрямую (html, txt)
Минус этого метода очевиден: чтобы программно работать с определенным участком документа, нужно знать его "координаты" — даже если предварительно вычислить их, любое изменение документа вызовет необходимость пересчета.
Можно получить Range для любого объекта документа, обратившись к соответствующему свойству объекта типа Character, Word и т.д. Например, следующий код (листинг 11.7.) записывает в объектную переменную ссылку на Range для 5-го слова активного документа.
Dim obj_Range As Range
Set obj_Range = _
ActiveDocument.Words(5).Range
Листинг 11.7. Получаем объект Range из объекта Word (слово) (html, txt)
Очень часто используется разновидность этого метода, связанная со свойством Range объекта Bookmark — закладки. На практике это — один из самых удобных способов автоматического создания документов на основе шаблонов. Ниже мы подробнее поговорим об использовании закладок.
11.5.2. Свойства и методы объекта Range
Если вы ориентируетесь в методах и свойствах объекта Selection — это значит, что вы сможете работать и с Range. Между этими объектами очень много общего. Здесь мы отметим лишь уже упомянутый метод Select объекта Range — он позволяет выделить диапазон, соответствующий ему, а так же свойство Text, которое предназначено для модификации текста, который содержится вRange. Практику работы с Range мы рассмотрим в следующем разделе, когда будем говорить о закладках.
11.6. Коллекция Bookmarks, шаблоны
11-02-Закладки и шаблоны.dotm — пример к п. 11.6.
Коллекция Bookmarks содержит закладки. Эта коллекция может использоваться совместно с объектами Document, Selection иRange. Причем, когда речь идет о коллекции Document.Bookmarks, мы можем работать с закладками в масштабах всего документа, коллекция Selection.Bookmarks содержит закладки в пределах выделения, а Range.Bookmarks — в пределах диапазона.
Закладки, добавленные в документы, хранятся там постоянно. Объекты Bookmarks имеют очень мало свойств и методов. Главная задача закладки — это точно указать место в документе, а все остальное — это уже забота либо объектов Selection, либо — Range. Для получения объекта Range из закладки достаточно воспользоваться ее свойством Range.
С помощью закладок очень удобно автоматизировать создание документа. Зная имя или позицию нужной закладки в коллекции, можно обращаться к ней, вставляя определенный текст. В частности, использование закладок для автоматизации создания документа может предусматривать следующую схему действий.
Вручную создать шаблон, содержащий постоянные части и переменные части, выделяемые закладками.
Создать новый документ, используя шаблон
Заполнить новый документ данными, используя закладки
Давайте рассмотрим пример, который иллюстрирует вышеописанные шаги. Мы будем создавать шаблон приглашения с несколькими переменными частями.