Добрый день! Поясните, пожалуйста, 3000 р. стоит документ об окончании курса. Если он не нужен, то можно учиться бесплатно? |
Работа с документами
10.6. Свойства объекта Document
10.6.1. Application - приложение документа
Это свойство позволяет получить объект приложения документа. Вы можете подумать, что это - ошибка, что, наоборот, объект документа содержится в объекте приложения. Однако, ошибки нет. Это свойство позволяет обращаться к приложению тогда, когда у нас нет ссылки на него, а есть лишь ссылка на документ. Например, код в листинге 10.15 позволяет скрыть окно Microsoft Word вместе с окном документа, используя свойство Visible объекта Application.
ThisDocument.Application.Visible = FalseЛистинг 10.15. Скрытие окна приложения
10.6.2. AttachedTemplate - присоединенный шаблон
Свойство AttachedTemplate позволяет узнать, какой шаблон присоединен к документу, а так же - изменить этот шаблон на другой. Это очень полезное свойство - ведь шаблоны могут содержать множество нужных макросов, стилей и т.д., а с помощью AttachedTemplate можно удобно управлять ими.
Например, такой листинг 10.16. позволяет вывести имя присоединенного шаблона и путь к нему:
Dim obj_Templ As Template Set obj_Templ = ActiveDocument.AttachedTemplate MsgBox ("Имя шаблона: " & obj_Templ.Name & _ ", путь к шаблону: " & obj_Templ.Path)Листинг 10.16. Имя присоединенного шаблона и путь к нему
Здесь мы сначала объявили новую переменную типа Template, потом присвоили ей ссылку на шаблон, присоединенный к активному документу, а потом воспользовались свойствами Name и Path шаблона, чтобы вывести информацию о нем.
Листинг 10.17 позволяет присоединить к документу шаблон MyTemplate.dotm, расположенный на диске C.
ActiveDocument.AttachedTemplate = "C:\MyTemplate.dotm"Листинг 10.17. Присоединяем шаблон к документу
10.6.3. Bookmarks - закладки
Возвращает коллекцию Bookmarks, которая содержит все закладки в документе. Закладки позволяют удобно организовать навигацию по документу, особенно удобно с их помощью автоматизировать создание новых документов на основе шаблонов. Подробнее о закладках мы поговорим ниже.
10.6.4. Characters, Words, Sentences, Paragraphs и другие
10-04-Символы.docm - пример к п. 10.6.4.
Все эти свойства возвращают объекты, предназначенные для работы с различными частями документа.
- Characters (Символы) - возвращает одноименную коллекцию, каждый объект которой представляет собой отдельный символ в документе. Каждый объект коллекции Characters представляет собой диапазон ( Range ), содержащий один символ
- Words (Слова) - то же самое, но уже для слов.
- Sentences (Предложения) - то же самое для предложений.
- Paragraphs (Абзацы) - коллекция абзацев документа.
- Помимо этих коллекций документ может содержать и другие подобные. В частности, следующие:
- Hyperlinks - гиперссылки. При добавлении гиперссылки обратите внимание на то, что метод Add использует объект привязки гиперссылки - Anchor (Якорь) - им может быть, например, графический или текстовый элемент.
- Indexes - индексы.
- InlineShapes, Shapes - фигуры, графические элементы
- Lists - списки.
- OMaths - формулы.
- Sections - разделы.
- Tables - таблицы.
Работа со всеми этими коллекциями схожа. Давайте рассмотрим ее на примере коллекции Characters, которую, как уже было сказано, можно использовать для работы с отдельными символами документа. Работу с некоторыми другими коллекциями мы рассмотрим ниже.
Листинг 10.18 позволяет вывести в окне сообщения информацию о количестве символов в документе (включая пробелы).
MsgBox ("Количество символов: " & _ ActiveDocument.Characters.Count)Листинг 10.18. Выводим количество символов в документе
С помощью метода Item коллекции, мы можем получить доступ к каждому символу документа. Например, с помощью этого метода можно проводить различные статистические подсчеты. листинг 10.19. позволяет узнать, сколько раз в документе использована буква "ф" в верхнем и нижнем регистре.
Dim var_Fcount var_Fcount = 0 For i = 1 To ActiveDocument.Characters.Count If ActiveDocument.Characters.Item(i) = "ф" Or _ ActiveDocument.Characters.Item(i) = "Ф" Then _ var_Fcount = var_Fcount + 1 Next i MsgBox ("Количество букв 'Ф' в документе: " & _ var_Fcount)Листинг 10.19. Подсчитываем количество вхождений буквы "ф"
Листинг 10.20 позволяет заменить букву "ё" в верхнем и нижнем регистре на "е".
Dim obj_D As Document Set obj_D = ActiveDocument For i = 1 To obj_D.Characters.Count If obj_D.Characters.Item(i) = "ё" _ Then obj_D.Characters.Item(i) = "е" If obj_D.Characters.Item(i) = "Ё" _ Then obj_D.Characters.Item(i) = "Е" Next iЛистинг 10.20. Замена буквы е на е
В листинге 10.21 вы можете найти программу, которая "переворачивает" весь текст в документе - меняет последний символ с первым, второй - с предпоследним и так далее.
Dim obj_D As Document Dim str_Chr As String Dim var_Count As Variant Set obj_D = Documents.Add obj_D.Range.Text = "Привет!" var_Count = obj_D.Characters.Count For i = 1 To var_Count \ 2 str_Chr = obj_D.Characters.Item(i) obj_D.Characters.Item(i) = _ obj_D.Characters.Item(var_Count - i + 1) obj_D.Characters.Item(var_Count - i + 1) = _ str_Chr Next iЛистинг 10.21. Переворачивание текста в документе
Здесь мы сначала заводим переменную для хранения ссылки на активный документ, далее - строковую переменную для временного хранения одного символа и переменную типа Variant, в которой будем хранить количество символов в документе.
Далее создаем новый документ и добавляем в него текст "Привет" с помощью свойства Text объекта Range. Именно этот текст мы и будем переворачивать.
Итак, мы используем цикл длительностью, равной количеству символов в документе, деленному на 2, причем обратите внимание на оператор деления. Это - целочисленное деление, то есть для четного числа символов в обмене будут участвовать все символы, а для нечетного - один, "центральный" символ останется на своем месте.
В цикле мы сначала присваиваем i -й символ переменной, потом присваиваем i -му символу противоположный ему символ, а в конце - противоположному символу - символ, хранящийся в переменной. Обратите внимание на алгоритм расчета противоположного символа. Var_Count - i + 1 дает нам последний символ при i = 1, то есть - для первого символа и т.д. В этом несложно убедиться путем расчетов. Например, если в тексте 10 символов, то для обмена с первым символом ( i = 1) мы получим последний символ (10-1+1=10), для второго ( i =2) - девятый (10-2+1=9) и т.д.
10.6.5. Content - "чистый" текст документа
10-05-Content.docm - пример к п. 10.6.5.
Свойство документа Content возвращает объект Range - текст документа без сносок, колонтитулов и т.д.
В листинге 10.22 вы можете найти пример использования свойства Content для настройки шрифта документа.
Dim obj_C As Range Set obj_C = ActiveDocument.Content With obj_C.Font .Name = "Arial" .Size = 12 .Spacing = 1.5 End WithЛистинг 10.22. Настраиваем шрифт текста документа
В этом коде мы объявили объектную переменную типа Range, связали с ней объект Range, возвращаемый свойством Content активного документа, после чего, воспользовавшись свойством Font объекта Range, установили гарнитуру ( Name ) шрифта Arial, размер ( Size ) - 12 пунктов и расстояние между символами в 1.5 пункта.
Чтобы записать текст документа в строковую переменную, можно воспользоваться кодом листинга 10.23.
Dim str_Text As String str_Text = ActiveDocument.Content.TextЛистинг 10.23. Записываем текст документа в переменную
Cвойство Text объекта Range возвращает текст объекта. Записав текст в переменную, мы сможем работать с ней средствами VBA.
10.6.6. Endnotes, Footnotes - сноски
10-06-Сноски.docm - пример к п. 10.6.6.
Эти свойства возвращают, соответственно, коллекцию Endnotes и Footnotes. В коллекции Endnotes находятся объекты Endnote - то есть концевые ссылки - ссылки, которые расположены в конце документа. В коллекции Footnotes расположены объекты Footnote - обычные ссылки, которые расположены в конце страницы.
Давайте рассмотрим работу с этими объектами на примере Footnotes. Работа с Endnotes аналогична работе с Footnotes.
Добавить в документ новую ссылку можно с помощью метода Add коллекции Footnotes.
Полный вызов метода Add выглядит так:
- ActiveDocument.Footnotes.Add(Range, Reference, Text)
- Range - область текста, для которой вставляется сноска.
- Reference - определяет символ сноски. По умолчанию используется автоматическая нумерация сносок.
- Text - текст сноски.
В листинге 10.24. вы можете видеть код, добавляющий сноску для выделенного фрагмента текста (как правило, выделяют слово):
ActiveDocument.Footnotes.Add _ Range:=Selection.Range, _ Text:="Новая сноска!"Листинг 10.24. Добавление сноски к выделенному фрагменту документа
Свойство Count коллекции Footnotes позволяет узнать количество ссылок в документе.
Чтобы обращаться к отдельным сноскам (объектам Footnote ), можно пользоваться либо их индексами в коллекции Footnotes, либо - оператором For Each - Next.
Свойство Range каждого объекта Footnote возвращает ссылку на объект Range, представляющий собой диапазон, который сноска занимает в документе. С помощью методов объекта можно настраивать различные параметры сноски.
Свойство Reference возвращает объект типа Range, который представляет собой область, занимаемую значком-ссылкой на сноску в теле документа.
В листинге 10.25 приведен пример форматирования сносок и ссылок на них.
Dim obj_D As Document Dim obj_Footnote As Footnote Set obj_D = ActiveDocument 'Форматируем сноски For Each obj_Footnote In obj_D.Footnotes obj_Footnote.Range.Font.Size = 11 Next 'Форматируем знаки-ссылки на сноски For i = 1 To obj_D.Footnotes.Count obj_D.Footnotes.Item(i).Reference _ .Font.Color = wdColorRed Next iЛистинг 10.25. 10.25. Форматирование сносок и ссылок на них
Сначала мы, с помощью конструкции For-Each перебираем все сноски и устанавливаем размер шрифта для каждой из них равным 11 пунктов.
Далее, с помощью цикла For-Next мы обходим все ссылки на сноски в тексте и делаем цвет их шрифта красным.
Чтобы удалить сноску, можно воспользоваться методом Delete объекта Footnote.
Узнать номер сноски в коллекции Footnotes можно, используя свойство Index. Например, код листинга 10.26 позволяет вывести поочередно все сноски с их номерами в окне сообщения.
Dim obj_D As Document Dim obj_Footnote As Footnote Set obj_D = ActiveDocument 'Выводим информацию о сносках For Each obj_Footnote In obj_D.Footnotes MsgBox ("Номер сноски: " & obj_Footnote.Index & _ vbCrLf & "Текст сноски: " & obj_Footnote.Range.Text) NextЛистинг 10.26. 10.26. Выводим все сноски и их номера
Константа vbCrLf заменяет собой знак перевода строки, в итоге при выполнении этого кода для каждой сноски будет выведено такое окно (рис. 10.2.).