Основы офисного программирования и документы Word

         

Сноски, комментарии и исправления в документах


При работе с документом в нем могут быть созданы некоторые важные элементы, невидимые при обычном просмотре и появляющиеся при принятии специальных мер. Такими частями документа являются сноски, комментарии и исправления. Этим понятиям соответствуют классы объектов и коллекций этих объектов: FootNotes(FootNote), EndNotes(EndNote), Comments(Comment), Revisions( Revision)

Рассмотрим их чуть более подробно.

  • Сноски один из способов комментирования документа, применяемый, как правило, автором документа. Сноски позволяют, не прерывая плавного изложения материала, дать определение применяемого термина или сделать ссылку на соответствующую литературу. Они могут быть двух видов: подстраничные (внизу страницы) и концевые (в конце документа). Для программиста подстраничные сноски составляют коллекцию FootNotes, концевые - EndNotes.
  • Класс Comment и коллекция Comments задают комментарии. Содержательно, комментарии могут быть как авторскими, так и комментариями рецензента. Обычно, когда я пишу свои тексты, у меня время от времени возникает желание прокомментировать те или иные свои высказывания, рассказать некоторые подробности, которые, возможно, излишни в основном тексте. Конечно, в этом случае можно было бы обойтись без комментариев и оформлять свои замечания особым стилем. Наибольшую ценность приобретают комментарии, когда созданный документ посылается на рецензию. У рецензента появляется возможность комментировать основные положения документа, не меняя сам документ и не производя в нем явных вставок. Так я поступаю, когда читаю присланные мне работы моих студентов. При чтении документа с комментариями их всегда можно увидеть либо на странице комментариев, либо установив курсор мыши на номере комментария. Так что комментарий это важный элемент при совместной работе над документом. Заметьте, что объект Comment содержит не только текст комментария, но и фамилию его автора, страницу, на которой помещен комментарий, и другие подробности.
  • После создания первоначального варианта документа, над которым работает коллектив авторов, начинается его "отладка". Правку документа - внесение исправлений - может делать как один автор, так и группа авторов. Одна из "великих" возможностей Word, обеспечивающая совместную работу над документами, состоит в том, что каждый из создателей документа может править его (документ) как угодно, не испортив при этом исходный текст. Правки накапливаются в коллекции Revisions. Затем, работая в специальном режиме, каждую правку - объект класса Revision можно принять или отвергнуть.


При работе с документом в нем могут быть созданы некоторые важные элементы, невидимые при обычном просмотре и появляющиеся при принятии специальных мер. Такими частями документа являются сноски, комментарии и исправления. Этим понятиям соответствуют классы объектов и коллекций этих объектов: FootNotes(FootNote), EndNotes(EndNote), Comments(Comment), Revisions( Revision)

Рассмотрим их чуть более подробно.

  • Сноски один из способов комментирования документа, применяемый, как правило, автором документа. Сноски позволяют, не прерывая плавного изложения материала, дать определение применяемого термина или сделать ссылку на соответствующую литературу. Они могут быть двух видов: подстраничные (внизу страницы) и концевые (в конце документа). Для программиста подстраничные сноски составляют коллекцию FootNotes, концевые - EndNotes.
  • Класс Comment и коллекция Comments задают комментарии. Содержательно, комментарии могут быть как авторскими, так и комментариями рецензента. Обычно, когда я пишу свои тексты, у меня время от времени возникает желание прокомментировать те или иные свои высказывания, рассказать некоторые подробности, которые, возможно, излишни в основном тексте. Конечно, в этом случае можно было бы обойтись без комментариев и оформлять свои замечания особым стилем. Наибольшую ценность приобретают комментарии, когда созданный документ посылается на рецензию. У рецензента появляется возможность комментировать основные положения документа, не меняя сам документ и не производя в нем явных вставок. Так я поступаю, когда читаю присланные мне работы моих студентов. При чтении документа с комментариями их всегда можно увидеть либо на странице комментариев, либо установив курсор мыши на номере комментария. Так что комментарий это важный элемент при совместной работе над документом. Заметьте, что объект Comment содержит не только текст комментария, но и фамилию его автора, страницу, на которой помещен комментарий, и другие подробности.
  • После создания первоначального варианта документа, над которым работает коллектив авторов, начинается его "отладка". Правку документа - внесение исправлений - может делать как один автор, так и группа авторов. Одна из "великих" возможностей Word, обеспечивающая совместную работу над документами, состоит в том, что каждый из создателей документа может править его (документ) как угодно, не испортив при этом исходный текст. Правки накапливаются в коллекции Revisions. Затем, работая в специальном режиме, каждую правку - объект класса Revision можно принять или отвергнуть.




Конечно, также как и тексты, сноски, комментарии и исправления создаются, как правило, вручную. Тем не менее, часто приходится программно работать с этими объектами. Вот, например, типично возникающие задачи: собрать все комментарии данного автора, принять или отвергнуть все исправления, сделанные автором N.

Я приведу сейчас пример, где в документ будут добавлены комментарии и сноски:

Листинг 1.38.

(html, txt)

Вначале в документ добавляется комментарий, для чего используется метод Add, имеющий в данной ситуации два параметра. Первый - Range - задает точку (область) вставки, второй - текст комментария. При выполнении метода область, заданная объектом Range, подсвечивается и помечается специальной меткой комментария. Свойство Author позволяет указать автора сделанного комментария. Комментарий можно непосредственно просмотреть в тексте документа, установив курсор на метке комментария. Метод ShowBy выводит в окно специального вида все комментарии, выполненные автором, имя которого указано как аргумент метода.

Далее добавляются в документ сноски. И здесь объект Range указывает точку вставки сносок. Заметьте: в этом фрагменте при работе с объектом Range используется метод Move. Его первый параметр - Unit - задает единицы текста, в которых ведется счет при перемещении объекта Range; второй - задает количество единиц и направление перемещения: положительные значения задают перемещение вперед по тексту, отрицательные - назад. Сами сноски вставляются аналогично комментариям методом Add. Подстраничные сноски нумеруются арабскими цифрами, концевые - римскими. Параметр Reference метода Add позволяет задать для нумерации сносок специальные символы.

Наш следующий пример связан с введением исправлений. Я уже говорил, что исправления, как и любая работа с текстом, делаются обычно вручную, а программно они лишь обрабатываются. Но в моем примере я демонстрирую программное введение исправлений, более того, эти исправления выполняются от имени двух различных авторов. Исправления, сделанные одним из них, будут приняты, второго отвергнуты. Заметьте: для программной вставки исправлений метод Add неприменим. Исправления делаются точно так же, как и обычные изменения исходного документа, но выполняются они в специальном режиме правки. Чтобы его включить, требуется задать свойству Track Revisions значение True. Но давайте обратимся к примеру:

Листинг 1.39.

(html, txt)

Обратите внимание, что в отличие от объектов Comment свойство Author объектов Revision может быть использовано только для чтения, поэтому мне пришлось менять фамилию автора правок более хитрым способом. Конечно, выполнять эту программу рекомендуется в пошаговом режиме, чтобы можно было проследить за процесссом появления правок в документе, а затем их принятия в одном случае и отказа от них во втором.

Вот так выглядит окно комментариев и фрагмент нашего тестового документа, в ходе выполнения этой программы в тот момент, когда правки были сделаны обоими авторами:


увеличить изображение
Рис. 1.12.  Документ, содержащий комментарии, сноски и правки



Конечно, также как и тексты, сноски, комментарии и исправления создаются, как правило, вручную. Тем не менее, часто приходится программно работать с этими объектами. Вот, например, типично возникающие задачи: собрать все комментарии данного автора, принять или отвергнуть все исправления, сделанные автором N.

Я приведу сейчас пример, где в документ будут добавлены комментарии и сноски:

Public Sub WorkWithComments() 'работа с комментариями, сносками 'Открываем документ DocTwo Dim MyPath As String Dim myRange As Range Dim Fnote As Footnote, Enote As Endnote MyPath = Documents("DocOne").Path 'DocOne должен быть открыт Documents.Open MyPath & "\DocTwo.doc" Documents("DocTwo").Activate With ActiveDocument Set myRange = .Sections(2).Range.Paragraphs(2).Range .Comments.Add myRange, "Программный проект этого документа" _ & vbCrLf & " содержит примеры главы 1" .Comments(1).Author = "Владимир Биллиг" 'Показ комментария ActiveWindow.View.SplitSpecial = wdPaneComments .Comments. ShowBy = "Владимир Биллиг"

'Передвигается объект Range и устанавливаются сноски: 'подстраничная и конечная myRange.Move Unit:=wdParagraph, Count:=1 .Footnotes.Add Range:=myRange, _ Text:="документ DocTwo используется для экспериментов." myRange.Move Unit:=wdParagraph, Count:=1 'нумерация конечных сносок с начала страницы '.Endnotes.NumberingRule = wdRestartPage .Endnotes.Add Range:=myRange, _ Text:="документ DocThree используется для экспериментов." 'Печать сносок For Each Fnote In .Footnotes Debug.Print Fnote.Range Next Fnote For Each Enote In .Endnotes Debug.Print Enote.Range Next Enote

End With End Sub

Листинг 1.38.

Вначале в документ добавляется комментарий, для чего используется метод Add, имеющий в данной ситуации два параметра. Первый - Range - задает точку (область) вставки, второй - текст комментария. При выполнении метода область, заданная объектом Range, подсвечивается и помечается специальной меткой комментария. Свойство Author позволяет указать автора сделанного комментария. Комментарий можно непосредственно просмотреть в тексте документа, установив курсор на метке комментария. Метод ShowBy выводит в окно специального вида все комментарии, выполненные автором, имя которого указано как аргумент метода.

Далее добавляются в документ сноски. И здесь объект Range указывает точку вставки сносок. Заметьте: в этом фрагменте при работе с объектом Range используется метод Move. Его первый параметр - Unit - задает единицы текста, в которых ведется счет при перемещении объекта Range; второй - задает количество единиц и направление перемещения: положительные значения задают перемещение вперед по тексту, отрицательные - назад. Сами сноски вставляются аналогично комментариям методом Add. Подстраничные сноски нумеруются арабскими цифрами, концевые - римскими. Параметр Reference метода Add позволяет задать для нумерации сносок специальные символы.

Наш следующий пример связан с введением исправлений. Я уже говорил, что исправления, как и любая работа с текстом, делаются обычно вручную, а программно они лишь обрабатываются. Но в моем примере я демонстрирую программное введение исправлений, более того, эти исправления выполняются от имени двух различных авторов. Исправления, сделанные одним из них, будут приняты, второго отвергнуты. Заметьте: для программной вставки исправлений метод Add неприменим. Исправления делаются точно так же, как и обычные изменения исходного документа, но выполняются они в специальном режиме правки. Чтобы его включить, требуется задать свойству Track Revisions значение True. Но давайте обратимся к примеру:



Public Sub WorkWith Revisions() 'работа с исправлениями ' Открываем документ DocTwo Dim MyPath As String Dim MyRange As Range Dim Revis As Revision 'DocOne должен быть открыт MyPath = Documents("DocOne").Path Documents.Open MyPath & "\DocTwo.doc" Documents("DocTwo").Activate With ActiveDocument 'Работа с исправлениями . Show Revisions = True 'Удаляем все имеющиеся исправления . Revisions.RejectAll

'Добавляем новый абзац .Paragraphs.Add .Paragraphs.Last.Range.Text = "В книгах для программистов" _ & " тексты программ играют важную роль" .Paragraphs.Last.Range.Select 'Вводим исправления в последний абзац (автор Fooler) .Track Revisions = True Application.UserName = "Fooler" Selection.Range.Text = "В книгах для программистов" _ & " тексты программ не играют особой роли," _ & " а лишь усложняют понимание" 'Добавляем новый абзац .Track Revisions = False .Paragraphs.Add .Paragraphs.Last.Range.Text = "В книгах для программистов" _ & " тексты программ играют важную роль." .Paragraphs.Last.Range.Select 'Вводим исправления в последний абзац (автор Thinker) .Track Revisions = True Application.UserName = "Thinker" Selection.Range.Text = "В книгах для программистов" _ & " тексты программ весьма полезны," _ & " если только это хорошие программы."



For Each Revis In . Revisions Debug.Print Revis.Author, Revis.Date, Revis.Range.Text If Revis.Author = "Fooler" Then Revis.Reject ElseIf Revis.Author = "Thinker" Then Revis.Accept End If Next Revis Debug.Print . Revisions.Count .Track Revisions = False . Show Revisions = False Application.UserName = "Vladimir Billig" End With

End Sub

Листинг 1.39.

Обратите внимание, что в отличие от объектов Comment свойство Author объектов Revision может быть использовано только для чтения, поэтому мне пришлось менять фамилию автора правок более хитрым способом. Конечно, выполнять эту программу рекомендуется в пошаговом режиме, чтобы можно было проследить за процесссом появления правок в документе, а затем их принятия в одном случае и отказа от них во втором.

Вот так выглядит окно комментариев и фрагмент нашего тестового документа, в ходе выполнения этой программы в тот момент, когда правки были сделаны обоими авторами:


увеличить изображение
Рис. 1.12.  Документ, содержащий комментарии, сноски и правки


Содержание раздела