- •10.1. Коллекция Documents - открытые документы
- •10.2. Методы коллекции Documents
- •10.2.2. Open - открываем документы
- •10.2.3. Close - закрываем все документы
- •10.2.4. Item - обращаемся к отдельным документам
- •10.5.3. ComputeStatistics - статистика документа
- •10.5.4. FitToPages - уменьшить размер текста на одну страницу
- •10.5.5. GoTo - перемещение по документу
- •10.5.12. UndoClear - очистить историю изменений Очищает историю изменений документа. После выполнения этого метода пользователь не смо10.6. Свойства объекта Document
- •10.6.1. Application - приложение документа
- •10.6.2. AttachedTemplate - присоединенный шаблон
- •10.6.3. Bookmarks - закладки
- •10.6.4. Characters, Words, Sentences, Paragraphs и другие
- •10.5.11. Select - выделяем содержимое документа
- •10.6.5. Content - "чистый" текст документа
- •10.6.6. Endnotes, Footnotes - сноски
- •10.6.7. FullName, Name, Path - пути и имена
- •10.6.8. Saved - сохранен или нет
- •10.6.9. Tables - работа с таблицами
- •10.6.10. Omaths - математические формулы
- •10.7. События объекта Document
10.5.11. Select - выделяем содержимое документа
Выделяет все содержимое документа. После этого с документом можно работать, используя средства объекта Selection.
10.5.12. UndoClear - очистить историю изменений Очищает историю изменений документа. После выполнения этого метода пользователь не смо10.6. Свойства объекта Document
10.6.1. Application - приложение документа
Это свойство позволяет получить объект приложения документа. Вы можете подумать, что это - ошибка, что, наоборот, объект документа содержится в объекте приложения. Однако, ошибки нет. Это свойство позволяет обращаться к приложению тогда, когда у нас нет ссылки на него, а есть лишь ссылка на документ. Например, код в листинге 10.15 позволяет скрыть окно Microsoft Word вместе с окном документа, используя свойство Visible объектаApplication.
ThisDocument.Application.Visible = False
Листинг 10.15. Скрытие окна приложения (html, txt)
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. Имя присоединенного шаблона и путь к нему (html, txt)
Здесь мы сначала объявили новую переменную типа Template, потом присвоили ей ссылку на шаблон, присоединенный к активному документу, а потом воспользовались свойствами Name и Path шаблона, чтобы вывести информацию о нем.
Листинг 10.17 позволяет присоединить к документу шаблон MyTemplate.dotm, расположенный на диске C.
ActiveDocument.AttachedTemplate = "C:\MyTemplate.dotm"
Листинг 10.17. Присоединяем шаблон к документу (html, txt)
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. Выводим количество символов в документе (html, txt)
С помощью метода 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. Подсчитываем количество вхождений буквы "ф" (html, txt)
Листинг 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. Замена буквы е на е (html, txt)
В листинге 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. Переворачивание текста в документе (html, txt)
Здесь мы сначала заводим переменную для хранения ссылки на активный документ, далее - строковую переменную для временного хранения одного символа и переменную типа 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) и т.д.
