Опубликован: 13.09.2006 | Уровень: для всех | Доступ: платный | ВУЗ: Тверской государственный университет
Лекция 1:

Word и его объекты

Лекция 1: 123456789101112 || Лекция 2 >
Проверка правильности написания текста

Три объекта, связанные с проверкой грамматики и орфографии: 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.
Лекция 1: 123456789101112 || Лекция 2 >
Андрей Галушко
Андрей Галушко
Украина, Конотоп, КИПТ
Анар Каныбетова
Анар Каныбетова
Казахстан, Кызылорда