Коллекция Sections
Свойство Sections, возвращающее коллекцию разделов, имеют объекты класса Documents, Selection, Range. Разделение документа на разделы позволяет придать документу подходящую структуру. Обычно раздел - довольно крупная единица текста в отличие от абзаца. Например, если документ представляет книгу, то каждый ее параграф или глава может быть выделена в отдельный раздел. При установке разделов вручную из меню Insert выбирается пункт Break, позволяющий закончить предыдущий раздел и начать новый. Раздел кончается специальным символом прерывания определенного типа. В зависимости от типа символа прерывания новый раздел может начинаться:
- на той же странице;
- на следующей странице;
- на следующей четной странице;
- на следующей нечетной странице.
Конечно, с разделом связывается не только последовательность символов, но и стиль форматирования, установки, принятые для его страниц, установки верхних и нижних колонтитулов и другие характеристики форматирования.
Вернемся к коллекции Sections. Она имеет свойства, уже известные нам по другим коллекциям. Поэтому мы их только перечислим:
Application, Count, Creator, Parent, First, Last.
Новым, ранее не упоминавшимся является свойство PageSetup. При обращении к нему возвращается объект класса PageSetup, свойства и методы которого позволяют установить характеристики страницы одновременно для всех разделов коллекции. Метод Item позволяет получить доступ к элементу коллекции. Метод Add позволяет добавить новый раздел в документ:
Add(Range, Start)
Возможный параметр Range указывает объект, перед которым будет вставлен символ прерывания, заканчивающий раздел. После символа прерывания будет начинаться новый раздел объектом Range. Если параметр Range опущен, символ прерывания вставляется в конец документа. Возможный параметр Start определяет тип символа прерывания раздела. Он может быть задан одной из констант:
wdSectionNewPage, wdSectionContinuous, wdSectionEvenPage, wdSectionOddPage, wdSectionNewColumn
Смысл, задаваемый этими константами, ранее уже был определен.
В зависимости от их значения новый раздел будет начинаться со следующей страницы, на той же странице, на четной и нечетной странице. Последняя константа используется при работе с таблицами, позволяя по-разному форматировать каждый из ее столбцов. Если параметр Start опущен, новый раздел будет начинаться со следующей страницы.
Для удаления раздела из коллекции может быть использован метод Delete объектов Selection и Range.
Взгляните на пример работы с текстом документа, в котором создаются новые разделы и добавляются абзацы:
Пример 1.6.
(html, txt)
Мы не будем подробно комментировать работу этой процедуры, так как все применяемые методы и свойства уже были описаны. На всякий случай подробно разберем выполнение одной строки этой процедуры:
Sections.Last.Range.Paragraphs(1).Range.InsertBefore (";Лекция 2";)
- Свойство Sections активного документа возвращает объект Sections, задающий коллекцию разделов этого документа.
- Свойство Last объекта возвращает объект Section, задающий последний раздел в этой коллекции.
- Свойство Range возвращает объект Range, связанный с данным разделом. Теперь становятся доступны методы и свойства объекта, в частности свойство Paragraphs, которым объект Section не обладает.
- Вызов Paragraphs(1) возвращает объект класса Paragraph, задающий первый абзац из коллекции абзацев данного раздела. Заметьте: опущен метод по умолчанию Item, так что запись Paragraphs(1) является краткой формой записи Paragraphs. Item (1)
- И снова мы получаем объект Range, теперь уже связанный с абзацем.
- На последнем шаге вызывается метод InsertBefore объекта Range, позволяющий добавить в начало абзаца текст, заданный аргументом метода. В нашем случае - лекция 2.
End Sub
Пример 1.6.
Мы не будем подробно комментировать работу этой процедуры, так как все применяемые методы и свойства уже были описаны. На всякий случай подробно разберем выполнение одной строки этой процедуры:
Sections.Last.Range.Paragraphs(1).Range.InsertBefore (";Лекция 2";)
- Свойство Sections активного документа возвращает объект Sections, задающий коллекцию разделов этого документа.
- Свойство Last объекта возвращает объект Section, задающий последний раздел в этой коллекции.
- Свойство Range возвращает объект Range, связанный с данным разделом. Теперь становятся доступны методы и свойства объекта, в частности свойство Paragraphs, которым объект Section не обладает.
- Вызов Paragraphs(1) возвращает объект класса Paragraph, задающий первый абзац из коллекции абзацев данного раздела. Заметьте: опущен метод по умолчанию Item, так что запись Paragraphs(1) является краткой формой записи Paragraphs. Item (1)
- И снова мы получаем объект Range, теперь уже связанный с абзацем.
- На последнем шаге вызывается метод InsertBefore объекта Range, позволяющий добавить в начало абзаца текст, заданный аргументом метода. В нашем случае - лекция 2.