Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

2006 г.

Word и его объекты
Лекция из курса «Основы офисного программирования и документы Word»

Биллиг Владимир Арнольдович
Интернет-Университет Информационных Технологий, 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 позволяет указать автора сделанного комментария. Комментарий можно непосредственно просмотреть в тексте документа, установив курсор на метке комментария. Метод ShowBy выводит в окно специального вида все комментарии, выполненные автором, имя которого указано как аргумент метода.

Далее добавляются в документ сноски. И здесь объект 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 при создании гиперссылок имеет больше параметров, чем при создании закладок. При создании закладки достаточно указать имя закладки и область, с ней связанную. При создании гиперссылки указывается область, связанная с гиперссылкой, точка отправления и точка назначения, заданная двумя параметрами. Параметр Address указывает имя документа, к которому будет осуществлен переход, а параметр 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, который позволяет организовать переходы от элемента к элементу уже рассмотренных нами коллекций таблицам, комментариям, страницам, разделам, элементам других коллекций, среди которых есть, конечно же, и закладки. Говоря о роли закладок, следует отметить, что они используются не только для организации гипертекстовых документов. Их роль велика и в документах типа справочников, где приходится осуществлять частый поиск внутри документа. Закладки позволяют создать систему индексов, ускоряя поиск. Всем хорошо знаком этот прием при работе с обычным словарем, когда делаются закладки на каждой из букв алфавита. Я не буду приводить сейчас примера реализации этой идеи.

Назад Оглавление Вперёд

VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...