Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Редактирование_документо...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
179.2 Кб
Скачать

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 напрямую (htmltxt)

Минус этого метода очевиден: чтобы программно работать с определенным участком документа, нужно знать его "координаты" — даже если предварительно вычислить их, любое изменение документа вызовет необходимость пересчета.

Можно получить Range для любого объекта документа, обратившись к соответствующему свойству объекта типа Character, Word и т.д. Например, следующий код (листинг 11.7.) записывает в объектную переменную ссылку на Range для 5-го слова активного документа.

Dim obj_Range As Range

Set obj_Range = _

ActiveDocument.Words(5).Range

Листинг 11.7. Получаем объект Range из объекта Word (слово) (htmltxt)

Очень часто используется разновидность этого метода, связанная со свойством 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.

С помощью закладок очень удобно автоматизировать создание документа. Зная имя или позицию нужной закладки в коллекции, можно обращаться к ней, вставляя определенный текст. В частности, использование закладок для автоматизации создания документа может предусматривать следующую схему действий.

  • Вручную создать шаблон, содержащий постоянные части и переменные части, выделяемые закладками.

  • Создать новый документ, используя шаблон

  • Заполнить новый документ данными, используя закладки

Давайте рассмотрим пример, который иллюстрирует вышеописанные шаги. Мы будем создавать шаблон приглашения с несколькими переменными частями.