Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

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

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

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

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

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

VPS/VDS серверы. 30 локаций на выбор

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

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

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

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

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

2006 г.

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

Биллиг Владимир Арнольдович
Интернет-Университет Информационных Технологий, 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

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

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

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

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

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

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

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

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

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

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

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

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

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

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