2006 г.
Биллиг Владимир Арнольдович
Интернет-Университет Информационных Технологий, INTUIT.ru
Назад Оглавление Вперёд
Свойства объекта Word.Application
Свойства любого объекта делятся на две группы: свойства-участники (объекты) и терминальные свойства (обычные переменные Visual Basic). Свойства-участники Word.Application
приведены в таблицах 1.1 и 1.2. Там они были перечислены, сейчас мы рассмотрим их чуть более подробно. Но вначале несколько слов о более простой группе терминальных свойств.
Терминальные свойства
Терминальные свойства просты для понимания, и я не буду долго на них останавливаться. Большинство из них являются общими для всех объектов Application
. Попытаюсь сейчас дать небольшой обзор терминальных свойств, объединяя их в группы:
- Свойства
Top
, Left
, Heihgt
, Width
, Caption
определяют размеры и заголовок окна приложения. - Свойства, начинающиеся с префикса User, -
UserAddress
, UserName
и другие задают характеристики пользователя. - Группа булевых свойств, начинающихся с префикса
Display
, - DisplayScreenTips
, DisplayStatusBar
и другие позволяют включать или выключать отображение на экране тех или иных элементов интерфейса. - Группа свойств, начинающихся префиксом Default -
DefaultSaveFormat
, DefaultTableSeparator
позволяет устанавливать некоторые характеристики, используемые приложением по умолчанию. - Группа булевых свойств, использующих суффикс Available -
MAPIAvailable
, MouseAvailable
, MathCoprocessorAvailable
устанавливают доступность некоторых устройств. - Другие свойства - булевы и не булевы задают другие многочисленные характеристики, например, CapsLock и NumLock позволяют определить, нажаты ли на клавиатуре соответствующие клавиши, Path - путь к каталогу, содержащему Word, ActivePrinter - активный принтер и так далее.
Я приведу лишь один простой пример на использование терминальных свойств, полагая, что и так все понятно.
Public Sub WorkWithTerm()
'Работа с терминальными свойствами
'Выключаю опции
Application. DisplayStatusBar = False
Application. DisplayRecentFiles = False
End Sub
Листинг 1: html, txt
Изменяя терминальные свойства DisplayStatusBar
и DisplayRecentFiles
, я выключил панель статуса и показ в меню File файлов последнего использования. Убедившись в том, что они действительно выключились, я немедленно включил их уже руками, взведя соответствующие флажки в меню Tools|Options.
Рассмотрю подробнее лишь одно терминальное свойство, не столь тривиальное и отличающееся по своему духу от других свойств. Свойство IsObjectValid
(obj As Object) и свойством назвать нельзя. Скорее это метод, аргументом которого является некоторый объект произвольного класса, а возвращаемое значение булевого типа показывает, существует ли объект, заданный аргументом метода (свойства). Это свойство полезно применять при работе, например, с коллекциями. Прежде чем начинать работу с тем или иным элементом коллекции, полезно проверить, а существует ли такой элемент, или, возможно, он уже был удален. Вот пример работы с этим свойством:
Public Sub IsObjectProp()
'В этом примере используется свойство IsObjectValid
Dim MyPath As String
Dim SecondDoc As Document
MyPath = ActiveDocument.Path
'Определяем объект
Set SecondDoc = Documents.Open(MyPath & "\DocTwo.doc")
'Удаляем объект, возможно, по ошибке
Documents(1).Close
'Теперь нам объект понадобился
If Not IsObjectValid(SecondDoc) Then
'Добавляем элемент в коллекцию
Set SecondDoc = Documents.Open(MyPath & "\DocTwo.doc")
End If
'Работа с документом DocTwo
Debug.Print SecondDoc.Name
End Sub
Листинг 1: html, txt
Заметьте, при работе с этим свойством я использую созданный мной объект SecondDoc
, поскольку не могу написать IsObjectValid
(Documents("DocTwo")). Написать то, конечно, могу, но при выполнении возникнет ошибка. Ошибка не связана с самой функцией IsObject
, - она возникнет раньше при вычислении значения аргумента - Documents
("DocTwo"), поскольку в коллекции Documents
этот элемент
Свойства - участники
Конечно, центральные объекты мира Word - это объекты, входящие в коллекции Documents
и Templates
, документы и шаблоны, открытые в приложении. Им-то и посвящена большая часть этой лекции. Но пока давайте хотя бы кратко коснемся объектов "второго плана".
Заголовки (CaptionLabels)
Коллекция объектов CaptionLabels
(CaptionLabel) представляет заголовки, которые вставляются в документ одновременно со вставкой таблиц, рисунков, диаграмм и других подобных элементов документа. Следует отметить, что при вставке в документ каждого нового элемента определенного типа и его заголовка происходит автоматическая нумерация заголовков, (например, Рисунок 1, Рисунок 2 и т.д.).
В коллекцию разрешается добавлять новые заголовки и удалять существующие. При работе вручную следует выбрать в пункте Insert (Вставка) главного меню Word команду Caption
(Название). В открывающемся диалоговом окне есть раскрывающийся список заголовков, из которого можно выбрать подходящий элемент и вставить его в документ. Кнопка New Label (Создать) позволяет добавить новый заголовок к уже имеющемуся списку. Кнопка Delete (Удалить) позволяет удалить заголовок. Вот как выглядит это окно:
Рис. 1.4. Окно заголовков
Работа руками нас интересует в малой степени, хотя, конечно, программист должен уметь это делать. Но давайте посмотрим, как это делается программно. Вначале добавим к существующей коллекции заголовков три своих заголовка:
Public Sub AddCaptions()
'Работа с коллекцией заголовков
Dim Item As CaptionLabel
With CaptionLabels
Debug.Print .Count
'Добавление трех заголовков
.Add "Мой Рисунок"
.Add "Диаграмма Excel"
.Add "Мой Пример"
Debug.Print .Count
For Each Item In CaptionLabels
Debug.Print Item .Name
Next Item
'Удаление последнего заголовка
.item(.Count).Delete
End With
End Sub
Листинг 1: html, txt
Вот результаты отладочной печати, появляющиеся в окне отладки (Immediate):
Листинг 1: html, txt
Этот пример типичен для работы с коллекциями. Здесь добавляются и удаляются элементы коллекции, определяется их число, организуется цикл по всем элементам. Покажем теперь, как, используя эту коллекцию, можно программно вставлять в текст документа в нужном месте те или иные заголовки:
Public Sub InsertLabelInDoc()
'Вставка заголовка в текст документа
'Вставка заголовков
With ActiveDocument
.Paragraphs.Add
.Paragraphs.Last.Range.Select
Selection.InsertCaption Label:="Диаграмма Excel"
.Paragraphs.Add
.Paragraphs.Last.Range.Select
Selection.InsertCaption Label:=CaptionLabels(CaptionLabels.Count)
End With
End Sub
Листинг 1: html, txt
В данном примере дважды будет вставлен заголовок "Диаграмма Excel". Конечно, реально этот заголовок следует вставлять после (перед) соответствующей диаграммой, но в примере заголовки вставляются в конец документа, в последний его абзац. Заметьте, при вставке происходит автоматическая нумерация заголовков, так что в тексте документа появятся два таких заголовка:
Листинг 1: html, txt
Автозаголовки (AutoCaptions)
Коллекция объектов AutoCaptions
(AutoCaption) представляет заголовки, которые могут быть автоматически добавлены при вставке в документ OLE-объектов. В эту коллекцию, конечно же, ни добавлять, ни удалять элементы не разрешается, но можно включить или отключить автоматическое добавление заголовка при вставке того или иного OLE-объекта. Работа вручную идет в уже упомянутом диалоговом окне, открываемом по команде Caption
. Программно это можно делать так:
Public Sub >WorkWithAutoLabels()
'Работа с коллекцией автозаголовков
Dim Item As AutoCaption
Debug.Print AutoCaptions.Count
For Each Item In AutoCaptions
'Включение автоматической вставки заголовка
item.AutoInsert = True
Debug.Print Item .Name
Next Item
End Sub
Листинг 1: html, txt
Процедура WorkWithAutoLabels
включает все автозаголовки и распечатывает их имена. Приведем первую семерку имен OLE-объектов из 28 объектов, которые можно добавить в текущий момент у меня на компьютере:
Листинг 1: html, txt
Автокоррекция (AutoCorrect)
Объект AutoCorrect
поддерживает работу по автоматической коррекции набираемых текстов. Я широко использую возможности автокоррекции в своей работе. Чтобы не переключаться с русского на английский при печатании различных терминов, я ввел таблицу соответствующих замен. Теперь я печатаю "Ап", а получаю Application
, печатаю "Во", а получаю Word и так далее. Возможности объекта AutoCorrect
во многом совпадают с возможностями команды AutoCorrect
(Автозамена) меню Tools. В следующем примере включаются все флажки, регулирующие процесс замены, и в коллекцию Entries
, вложенную в объект, добавляются два элемента. Каждый элемент задается парой строк, первая из которых задает исходную строку, а вторая строку, заменяющую ее при автокоррекции печатаемого текста:
Public Sub WorkWithAutoCorrect()
'Работа с объектом AutoCorrect
'Включаются все флажки
With AutoCorrect
.CorrectInitialCaps = True
.CorrectSentenceCaps = True
.CorrectDays = True
.CorrectCapsLock = True
.ReplaceText = True
.ReplaceTextFromSpellingChecker = True
.CorrectKeyboardSetting = True
'В коллекцию Entries, задающую замены при автокоррекции,
'добавляются два элемента.
.Entries.AddName:="ДЕ", Value:="Диаграмма Excel"
.Entries.AddName:="ГЕ", Value:="График Excel"
End With
End Sub
Листинг 1: html, txt
Перемещение по тексту. Объект Browser
Объект Browser
позволяет перемещать точку вставки, указывающую на объекты в документе. Перейти можно к предыдущей или следующей точке редактирования документа. Можно также предварительно выбрать целевой объект, это может быть таблица, заголовок, комментарий или другой из некоторого набора возможных объектов, а затем переходить к следующему или предыдущему объекту выбранного типа. Вручную это делается с помощью трех инструментальных кнопок, расположенных в самом низу вертикальной полосы прокрутки окна документа. Покажем, как программно, перемещаясь по заголовкам, можно помочь пользователю найти в документе нужный ему заголовок. Вот соответствующая процедура:
Листинг 1: html, txt
Назад Оглавление Вперёд