2006 г.
Биллиг Владимир Арнольдович
Интернет-Университет Информационных Технологий, INTUIT.ru
Назад Оглавление Вперёд
Списки в документах
Коллекции Lists
(List), ListParagraphs
(ListParagraph), ListTemplates
(ListTemplate) используются при работе со списками. Списки широко используются в документах всякий раз, когда имеешь дело с перечислением, скажем, пунктов повестки дня или деталей какого-либо механизма или объекта. Списки можно оформлять в соответствии с некоторым шаблоном. Существуют две группы шаблонов: нумерованные списки и списки-бюллетени. Коллекция ListTemplates содержит шаблоны оформления списков, а класс ListTemplate
описывает конкретный шаблон. Шаблон применяется к списку абзацев и придает ему структуру, заданную шаблоном. Коллекция Lists содержит те списки документа (списки абзацев), что оформлены как нумерованные списки или списки-бюллетени. Коллекция ListParagraphs
представляет список абзацев всех списков документа. Свойством ListParagraphs
, которое возвращает объект соответствующего класса, обладает не только документ, но и объекты List
и Range
. Так что при наличии списка - объекта List
можно выделить список его абзацев. Чаще приходится выполнять обратную операцию - применять к списку абзацев один из возможных шаблонов, придав ему "настоящую" структуру списка. Тогда используют объект ListFormat
, как показано в следующей процедуре:
Листинг 1: html, txt
Заметьте, что для того чтобы отменить форматирование совокупности абзацев как списка, применяется тот же метод ListFormat
. Приведем результаты отладочной печати:
Списков в документе - 1
Они занимают - 3 абзацев
Теперь списков - 2
Они занимают - 7 абзацев
Теперь списков - 1
Они занимают - 3 абзацев
Листинг 1: html, txt
Вначале в документе был один список из трех пунктов. Затем мы выделили некоторую область (4 абзаца), создали связанный с ней объект ListFormat
и применили к нему шаблон списка-бюллетеня, вызвав метод ApplyBulletDefault. В результате появился еще один список заданной структуры из четырех пунктов, что подтверждает отладочная печать и что можно видеть при пошаговом выполнении этой программы. Заметьте, список абзацев теперь содержит все абзацы обоих списков. Использование объекта ListParagraphs
может быть весьма полезным в ряде случаев, когда возникает необходимость обработки всех списков документа или его части. Обратите внимание, для отмены форматирования абзацев в виде списка я использовал тот же оператор, что и для включения форматирования.
Сноски, комментарии и исправления в документах
При работе с документом в нем могут быть созданы некоторые важные элементы, невидимые при обычном просмотре и появляющиеся при принятии специальных мер. Такими частями документа являются сноски, комментарии и исправления. Этим понятиям соответствуют классы объектов и коллекций этих объектов: FootNotes(FootNote), EndNotes(EndNote), Comments
(Comment), Revisions
( Revision
)
Рассмотрим их чуть более подробно.
- Сноски один из способов комментирования документа, применяемый, как правило, автором документа. Сноски позволяют, не прерывая плавного изложения материала, дать определение применяемого термина или сделать ссылку на соответствующую литературу. Они могут быть двух видов: подстраничные (внизу страницы) и концевые (в конце документа). Для программиста подстраничные сноски составляют коллекцию
FootNotes
, концевые - EndNotes
. - Класс
Comment
и коллекция Comments
задают комментарии. Содержательно, комментарии могут быть как авторскими, так и комментариями рецензента. Обычно, когда я пишу свои тексты, у меня время от времени возникает желание прокомментировать те или иные свои высказывания, рассказать некоторые подробности, которые, возможно, излишни в основном тексте. Конечно, в этом случае можно было бы обойтись без комментариев и оформлять свои замечания особым стилем. Наибольшую ценность приобретают комментарии, когда созданный документ посылается на рецензию. У рецензента появляется возможность комментировать основные положения документа, не меняя сам документ и не производя в нем явных вставок. Так я поступаю, когда читаю присланные мне работы моих студентов. При чтении документа с комментариями их всегда можно увидеть либо на странице комментариев, либо установив курсор мыши на номере комментария. Так что комментарий это важный элемент при совместной работе над документом. Заметьте, что объект Comment
содержит не только текст комментария, но и фамилию его автора, страницу, на которой помещен комментарий, и другие подробности. - После создания первоначального варианта документа, над которым работает коллектив авторов, начинается его "отладка". Правку документа - внесение исправлений - может делать как один автор, так и группа авторов. Одна из "великих" возможностей Word, обеспечивающая совместную работу над документами, состоит в том, что каждый из создателей документа может править его (документ) как угодно, не испортив при этом исходный текст. Правки накапливаются в коллекции
Revisions
. Затем, работая в специальном режиме, каждую правку - объект класса Revision
можно принять или отвергнуть.
Конечно, также как и тексты, сноски, комментарии и исправления создаются, как правило, вручную. Тем не менее, часто приходится программно работать с этими объектами. Вот, например, типично возникающие задачи: собрать все комментарии данного автора, принять или отвергнуть все исправления, сделанные автором N.
Я приведу сейчас пример, где в документ будут добавлены комментарии и сноски:
Листинг 1: html, txt
Вначале в документ добавляется комментарий, для чего используется метод Add
, имеющий в данной ситуации два параметра. Первый - Range
- задает точку (область) вставки, второй - текст комментария. При выполнении метода область, заданная объектом Range
, подсвечивается и помечается специальной меткой комментария. Свойство Author
позволяет указать автора сделанного комментария. Комментарий можно непосредственно просмотреть в тексте документа, установив курсор на метке комментария. Метод Show
By выводит в окно специального вида все комментарии, выполненные автором, имя которого указано как аргумент метода.
Далее добавляются в документ сноски. И здесь объект Range
указывает точку вставки сносок. Заметьте: в этом фрагменте при работе с объектом Range
используется метод Move. Его первый параметр - Unit
- задает единицы текста, в которых ведется счет при перемещении объекта Range
; второй - задает количество единиц и направление перемещения: положительные значения задают перемещение вперед по тексту, отрицательные - назад. Сами сноски вставляются аналогично комментариям методом Add
. Подстраничные сноски нумеруются арабскими цифрами, концевые - римскими. Параметр Reference
метода Add
позволяет задать для нумерации сносок специальные символы.
Наш следующий пример связан с введением исправлений. Я уже говорил, что исправления, как и любая работа с текстом, делаются обычно вручную, а программно они лишь обрабатываются. Но в моем примере я демонстрирую программное введение исправлений, более того, эти исправления выполняются от имени двух различных авторов. Исправления, сделанные одним из них, будут приняты, второго отвергнуты. Заметьте: для программной вставки исправлений метод Add
неприменим. Исправления делаются точно так же, как и обычные изменения исходного документа, но выполняются они в специальном режиме правки. Чтобы его включить, требуется задать свойству Track Revisions
значение True. Но давайте обратимся к примеру:
Листинг 1: html, txt
Обратите внимание, что в отличие от объектов Comment
свойство Author
объектов Revision
может быть использовано только для чтения, поэтому мне пришлось менять фамилию автора правок более хитрым способом. Конечно, выполнять эту программу рекомендуется в пошаговом режиме, чтобы можно было проследить за процесссом появления правок в документе, а затем их принятия в одном случае и отказа от них во втором.
Вот так выглядит окно комментариев и фрагмент нашего тестового документа, в ходе выполнения этой программы в тот момент, когда правки были сделаны обоими авторами:
увеличить изображение: увеличить изображение,
Рис. 1.12. Документ, содержащий комментарии, сноски и правки
Гипертекстовый документ. Закладки и гиперссылки
Гипертекстом называется текст, содержащий ссылки. Конечно, настоящим гипертекстовым документом может быть только документ в электронной форме, поскольку в этом случае становится возможным непосредственный переход по ссылкам. Гипертекстовый документ перестает быть линейным текстом, читаемым от начала до конца. Порядок его чтения (работы с документом) определяется в момент просмотра документа и зависит от выбора гиперссылок лицом, работающим с документом. Когда я говорю о гипертекстовом документе, то применительно к документам Office 2000 это не отражает в полной мере истинную картину. В Office 2000 следует говорить о системе гипертекстовых документов, связанных ссылками. Действительно ссылки в документе Word могут задавать переход к:
- элементу того же документа, заданного с помощью закладки или стиля Heading,
- элементу другого документа Word,
- элементу, расположенному на Web-странице,
- именованному элементу рабочей книги Excel,
- именованному слайду Power Point,
- другому документу, файлу или Web-странице.
Гиперссылки и закладки это два основных инструмента, используемых при создании гипертекстовых документов. Закладка создается в точке, в которую производится переход, точке назначения, а гиперссылка - в точке, из которой производится переход, точке отправки.
Гипертекстовые документы являются одним из широко используемых типов документов. Так строятся сегодня практически все справочные системы. Пожалуй, для всех учебных пособий, особенно в электронной форме, гипертекстовая форма представления материала является наиболее подходящей, поскольку позволяет самому ученику определять оптимальный путь изучения учебного материала. Замечу, что, несмотря на всю полезность гиперссылок, злоупотреблять этим средством не стоит. Изобилие ссылок также плохо, как и линейный текст.
Давайте рассмотрим теперь пример, в котором два документа Word и один документ Excel будут связаны между собой взаимными гиперссылками. Я покажу, как программно устанавливаются закладки и гиперссылки. В документе Excel роль закладок играют имена элементов. Вот процедура, устанавливающая закладки:
Public Sub CreateBookmarks()
'Создание закладок
'Создадим закладку в документе DocOne и свяжем ее с рисунком
Dim MyPath As String
Documents("DocOne").Activate
With ActiveDocument
MyPath = .Path
.InlineShapes(1).Select 'рисунок мышки
.Bookmarks.Add "PictureOfMouse", Selection.Range
End With
'Создадим закладку в документе ExampleOfTable и свяжем ее с таблицей
Documents.Open (MyPath & "\ExampleOfTable")
Documents("ExampleOfTable").Activate
With ActiveDocument
.Tables(1).Select 'таблица Менделеева
.Bookmarks.Add "ТаблицаМенделеева", Selection.Range
End With
End Sub
Листинг 1: html, txt
Здесь, в двух разных документах создаются две закладки. Одна из них связывается с рисунком, вторая с таблицей. Конечно, чаще всего, закладки связываются с текстом, обычно с началом параграфа или определением понятия.
Рассмотрим теперь создание гиперссылок, некоторые из них будут ссылаться на только что созданные закладки:
Листинг 1: html, txt
Обратите внимание, метод Add
при создании гиперссылок имеет больше параметров, чем при создании закладок. При создании закладки достаточно указать имя закладки и область, с ней связанную. При создании гиперссылки указывается область, связанная с гиперссылкой, точка отправления и точка назначения, заданная двумя параметрами. Параметр Add
ress указывает имя документа, к которому будет осуществлен переход, а параметр SubAddress
указывает имя элемента внутри этого документа. Если поле адреса не указано, то переход осуществляется внутри того же документа, где находится точка отправления. Может быть опущено поле, задающее имя элемента, тогда осуществляется переход к самому документу. Одно из этих полей должно быть задано. Именем элемента в документах Word чаще всего выступает имя закладки. В документах Excel, как уже говорилось, в качестве имени элемента может выступать имя, содержащееся в коллекции именNames
данного документа, как показано в нашем примере. Заметьте, для двух первых точек отправления, определяющих положение гиперссылки, я выбрал текст, расположенный достаточно глубоко внутри группового объекта TableOfFigures
. Сделано это специально, чтобы продемонстрировать некоторые особенности коллекции Hyperlinks
документов Word. Взгляните, как выглядит эта часть документа, после установления гиперссылок:
увеличить изображение: увеличить изображение,
Рис. 1.13. Документ с закладками
Конечно, чаще всего, установление закладок и гиперссылок делается вручную, а вот обработку уже созданных коллекций этих объектов приходится иногда выполнять программно. В следующем примерах я продемонстрирую работу по просмотру и удалению закладок и гиперссылок в процессе диалога с пользователем. Начнем с удаления закладок активного документа. Вот код процедуры, решающей эту задачу:
Public Sub RemoveBookmarks()
' Удаляет по запросу закладки активного документа
Dim MyBM As Bookmark
Dim Answer As String
With ActiveDocument
For Each MyBM In .Bookmarks
Answer = InputBox(Prompt:="Удалить закладку? " & vbCrLf _
& "Имя закладки - " & MyBM.Name, _
Title:="Удаление закладок", Default:="Да")
If Answer = "Да" Then MyBM.Delete
Next MyBM
End With
End Sub
Листинг 1: html, txt
Все делается достаточно естественно, свойствоName
позволяет в диалоге указать имя закладки, а метод Delete удалить ее, если получено согласие пользователя. Аналогичная процедура просмотра и удаления гиперссылок выглядит немного сложнее:
Листинг 1: html, txt
Как видите, для определения имени объекта, связанного с гиперссылкой, приходится вначале определить тип объекта, в зависимости от которого выбирается способ доступа к имени объекта. Однако главное, на что следует обратить внимание, это то, что коллекция Hyperlinks
документа не содержит всех установленных в документе гиперссылок. В частности, в ней не содержатся те гиперссылки, которые я связал с текстами, находящимися внутри группового объекта TableOfFigures
и показанными на предыдущем рисунке. Добраться программно до этих гиперссылок конечно можно, но через коллекцию Hyperlinks
соответствующего объекта Range
.
В следующем примере показано применение метода Follow, позволяющего осуществить переход по ссылке. Процедура позволяет перейти по ссылке в результате диалога с пользователем. Вот ее текст:
Листинг 1: html, txt
Заметьте, переход по ссылке не означает прерывания работы программы. Открыв соответствующий документ и перейдя к указанному элементу внутри этого документа, процедура продолжит свое выполнение до завершения своей работы.
До сих пор в этом параграфе я много говорил о гипертекстовых документах и переходах по гиперссылке. Но хочу напомнить, что переходы внутри документа могут быть организованы и другими средствами. В частности в этой лекции я рассматривал работу с объектом Browser
, который позволяет организовать переходы от элемента к элементу уже рассмотренных нами коллекций таблицам, комментариям, страницам, разделам, элементам других коллекций, среди которых есть, конечно же, и закладки. Говоря о роли закладок, следует отметить, что они используются не только для организации гипертекстовых документов. Их роль велика и в документах типа справочников, где приходится осуществлять частый поиск внутри документа. Закладки позволяют создать систему индексов, ускоряя поиск. Всем хорошо знаком этот прием при работе с обычным словарем, когда делаются закладки на каждой из букв алфавита. Я не буду приводить сейчас примера реализации этой идеи.
Назад Оглавление Вперёд