Word и его объекты
Проверка правильности написания текста
Три объекта, связанные с проверкой грамматики и орфографии: Languages, Dictionaries, SpellingSuggestions, позволяют установить нужный язык, выбрать словарь, в том числе пользовательские словари, а также работать со списком слов, предлагаемых для исправления при обнаружении ошибки правописания. Команды SpellingAndGrammar и Language меню Tools предоставляют аналогичные возможности при работе с документом вручную. Новый объект LanguageSettings позволяет получить установки языкового предпочтения на разных этапах работы с приложением. Взгляните на пример, в котором показана работа с этими объектами:
Public Sub WorkLang() Dim Lang As Language, Dict As Dictionary Dim AppLang As Long, InterfaceLang As Long, HelpLang As Long 'Орфографический словарь Set Lang = Languages(wdRussian) Set Dict = Lang.ActiveSpellingDictionary Debug.Print Lang.Name If Not (Dict Is Nothing) Then Debug.Print Dict.Path & Application.PathSeparator & Dict.Name End If 'Установки языка общения AppLang = Application. LanguageSettings.LanguageID(msoLanguageIDInstall) InterfaceLang = Application. LanguageSettings.LanguageID(msoLanguageIDUI) HelpLang = Application. LanguageSettings.LanguageID(msoLanguageIDHelp) If AppLang = (InterfaceLang) And (AppLang = HelpLang) _ And (AppLang = wdRussian) Then Debug.Print "Установлен русский язык" _ & " в качестве языка инсталляции, интерфейса и справки" ElseIf AppLang = (InterfaceLang) And (AppLang = HelpLang) _ And (AppLang = wdEnglishUS) Then Debug.Print "Установлен английский язык" _ & " в качестве языка инсталляции, интерфейса и справки" End If If Application. LanguageSettings. _ LanguagePreferredForEditing(msoLanguageIDRussian) Then Debug.Print "Русский язык является" _ & " одним из предпочтительных языков редактирования" End If End SubЛистинг 1.14.
Приведем результаты работы этой процедуры, определяющие мои текущие языковые установки:
'C:\Program Files\Common Files\Microsoft Shared\Proof\MSSP_RU.LEX Русский Установлен английский язык в качестве языка инсталляции, интерфейса и справки Русский язык является одним из предпочтительных языков редактирования.Листинг 1.15.
Синонимы
Объект SynonymInfo полезен при выборе синонимов, антонимов или слов и предложений, связанных по смыслу с текущим проверяемым словом.
Письма
Существует несколько объектов, которые могут быть полезны при работе с почтой. Объект MailingLabel позволяет работать с конвертами и адресами. Он позволяет распечатать адрес на конверте или создать страницу с адресами, которую можно затем распечатать и использовать адреса как наклейки. Его возможности во многом совпадают с тем, что можно делать вручную при выборе пункта Envelopes and Labels (Конверты и наклейки) меню Tools (Сервис). Приведем пример работы с этим объектом. В этом примере один адрес печатается непосредственно на конверте, а для другого, отмеченного специальной закладкой с именем EnvelopeAddress, создается документ с наклейками:
Public Sub WorkWithMail() 'Работа с почтовыми сообщениями Dim MyAddr As String, MyName As String Dim MailLab As CustomLabel MyName = Application.MailingLabel.DefaultLabelName Debug.Print MyName Set MailLab = Application.MailingLabel.CustomLabels _ .Add(Name:="My Friend", DotMatrix:=True) MyAddr = "Россия" & vbCrLf & "Мой город" & vbCr & "Моя улица, 41, 7" & vbCr _ & "Моему другу" 'MailLab.PageSize = wdCustomLabelLetter If Documents("DocOne").Bookmarks.Exists("EnvelopeAddress") Then Application.MailingLabel.PrintOut _ Name:=MyName, ExtractAddress:=True, SingleLabel:=True End If Application.MailingLabel.CreateNewDocument _ Name:="My Friend", Address:=MyAddr End SubЛистинг 1.16.
Мне не удалось установить размер страницы у объекта MailLab класса CustomLabel. Полагаю, что это небольшой "жучок", не имеющий, впрочем, принципиального значения.
Электронные письма
Объект MailMessage представляет активное EMail-сообщение. Для работы с методами этого объекта помимо активности сообщения требуется дополнительно, чтобы Word использовался, как редактор этого сообщения.
Несмотря на то, что я выполнил условия, необходимые для работы с этим объектом, ни один из его методов мне вызвать не удалось. Лишь свойство Application этого объекта вызывалось корректно, как показано в следующем примере:
Public Sub WorkWithMailMessage() Dim mes As MailMessage Documents("test").Activate Set mes = Application.MailMessage If Not (mes Is Nothing) Then Debug.Print mes.Application.Name 'mes. DisplaySelectNamesDialog 'mes.CheckName 'mes.GoToNext 'mes. DisplayMoveDialog End If End SubЛистинг 1.17.
Новый появившийся в Office 2000 объект EmailOptions позволяет устанавливать некоторые общие опции, в частности, автоматически добавляемую подпись. В нашем следующем примере добавляемая подпись выбирается в зависимости от выбранного языка. На самом деле выбирается не сама подпись, а ее имя из списка уже подготовленных подписей. Сами подписи должны быть созданы вручную на вкладке Email Options меню Tools|General.
Public Sub WorkEmail() With Application.EmailOptions.EmailSignature If Selection.LanguageID = wdRussian Then .NewMessageSignature = "Подпись" .ReplyMessageSignature = "Подпись" Else .NewMessageSignature = "sign1" .ReplyMessageSignature = "sign1" End If Debug.Print .NewMessageSignature End With End SubЛистинг 1.18.
Настройка
С помощью объекта Options можно программным путем установить различные опции приложения и документа аналогично тому, как если бы Вы выбрали команду Options (Параметры) в меню Tools (Сервис). При работе вручную это один из наиболее часто выбираемых пунктов меню. В открывающемся окне десяток флажков, вкладок и плюс к этому пара командных кнопок. Понятно, что и соответствующий объект Options имеет десятки свойств, задавая значения которых можно программно настроить приложение нужным образом. Методов этот объект фактически не имеет. Для демонстрации я выбрал некоторое множество опций. Заметьте, что в большинстве случаев включение или отключение того или иного свойства приложения Word, распространяется на все его документы:
Public Sub WorkWithOptions() 'работа с объектом Options Options.AutoFormatAsYouTypeReplaceFractions = True Options.AllowDragAndDrop = True Options.CheckGrammarWithSpelling = True Options.EnableSound = False Options.MonthNames = wdMonthNamesEnglish Options.PrintComments = True End SubЛистинг 1.19.
Конверторы
Word позволяет работать с документами, подготовленными не только в более ранних его версиях, но и в других текстовых редакторах. Для этого используются конверторы файлов. Коллекция объектов FileConverters позволяет выбрать тот или конвертор. У коллекции нет методов Add и Delete, поэтому добавлять новые конверторы или удалять ненужные конверторы программно нельзя. Это делается в процессе инсталляции Office 2000. В следующем примере печатаются имена конверторов, доступных на моей машине и анализируются некоторые их свойства:
Public Sub ConvertDoc() 'Работа с конвертором Dim conv As FileConverter Debug.Print Application.FileConverters.Count For Each conv In Application.FileConverters Debug.Print conv.Name, conv.FormatName, conv.ClassName If conv.CanOpen And conv.CanSave Then Debug.Print "Конвертор может открывать и сохранять файлы" End If Next conv End SubЛистинг 1.20.
Приведем результаты работы этой процедуры. Нет смысла приводить полный список всех 26 доступных конверторов, поэтому мы ограничимся несколькими строчками:
26 Text with Layout Text with Layout Конвертор может открывать и сохранять файлы MS-DOS Text with Layout MS-DOS Text with Layout Конвертор может открывать и сохранять файлы WordPerfect 5.x for Windows WrdPrfctWin WordPerfect 5.1 for DOS WrdPrfctDOS51Листинг 1.21.
Поиск файлов
Объект Filesearch позволяет найти нужный файл. Это общий объект, и о нем подробно рассказывается в "Общность и схожесть объектов Office 2000"
Характеристики
Объект FontNames отвечает за список всех доступных шрифтов. Аналогичные возможности предоставляет команда Font меню Format.
Объект RecentFiles позволяет работать со списком файлов наиболее позднего использования.
Объект System ведает информацией о характеристиках компьютера и операционной системы. Приведем пример работы с этим объектом, в котором определяются некоторые рабочие характеристики моего компьютера и окружения:
Public Sub WorkWithSystem() 'Получение характеристик компьютера и окружения Dim env As System Set env = Application.System 'Debug.Print "Тип компьютера - ", env.ComputerType Debug.Print "Тип процессора - ", env.ProcessorType Debug.Print "Операционная система - ", env.OperatingSystem Debug.Print "Язык - ", env.LanguageDesignation Debug.Print "Свободного дискового пространства - ", env.FreeDiskSpace Debug.Print "Курсор - ", env.Cursor End SubЛистинг 1.22.
Вот результаты работы этой процедуры:
Тип процессора - Pentium Операционная система - Windows NT Язык - Russian (Russia) Свободного дискового пространства - 807567360 Курсор - 2Листинг 1.23.
Заметьте, на этой платформе не удается получить тип компьютера.
Задачи
Коллекция объектов Tasks содержит задачи, выполняемые системой в текущий момент. Возможно, Вы и не подозреваете, как много задач выполняется за кулисами операционной системы. В следующем примере распечатывается список имен задач, входящих в момент запроса в коллекцию:
Public Sub WorkWithTasks() 'Работа с задачами Dim Tsk As Task Debug.Print Application.Tasks.Count For Each Tsk In Application.Tasks Debug.Print Tsk.Name Next Tsk End SubЛистинг 1.24.
Весь список из 65 текущих задач я приводить не буду, хотя познакомиться с ним полезно. Я ограничусь приведением имен лишь некоторых задач из начала и конца списка:
65 Microsoft Agent Microsoft Office Shortcut Bar Menu Parent Window NetDDE Agent Edit Microsoft Visual Basic - DocOne [running] - [Examples (Code)] Ch1 - Microsoft Word Run Sub/UserForm View DocOne - Microsoft Word Edit Transmission window MarshalingWindow OLEChannelWnd MarshalingWindow Microsoft Outlook Program ManagerЛистинг 1.25.