Тверской государственный университет
Опубликован: 13.09.2006 | Доступ: свободный | Студентов: 2721 / 260 | Оценка: 4.03 / 3.74 | Длительность: 19:48:00
Специальности: Программист, Менеджер
Лекция 5:

Общность и схожесть объектов Office 2000

< Лекция 4 || Лекция 5: 123456 || Лекция 6 >

Свойства документа

Все документы Office имеют общие встроенные свойства, начиная с имени автора, заглавия документа, даты его создания, кончая такими свойствами, как размер, дата последней модификации или, например, дата последней печати документа. Наряду со встроенными свойствами ко всем документам разрешается добавлять собственные свойства, определенные пользователем. В объектной модели Office эти факты нашли отражение в существовании коллекции DocumentProperties, элементы которой являются объектами класса DocumentProperty. Следует заметить, что в каждом конкретном приложении (Word, Excel, Power Point и так далее) у документов нет свойства DocumentProperties, а есть два свойства BuiltinDocumentProperties и CustomDocumentProperties. Эти свойства возвращают две подколлекции встроенных и пользовательских свойств с элементами, принадлежащими общему классу DocumentProperty и в совокупности составляющих коллекцию DocumentProperties.

Работа с этими объектами достаточно проста. В коллекцию можно добавлять элементы, используя метод Add, а для удаления используется метод Delete, который, как это часто бывает с коллекциями Office 2000, принадлежит не самой коллекции, а классу, связанному с элементом, в данном случае - классу DocumentProperty. Должно быть также понятно, что методы Add и Delete применимы только к пользовательским свойствам, поскольку встроенные свойства нельзя ни добавлять, ни удалять.

Значения всех свойств доступны как для чтения, так и для записи. Однако встроенные свойства, как правило, формируются автоматически при работе с документом, как, например, дата создания документа. Еще одно важное замечание, состоит в том, что в коллекцию встроенных свойств включены не только свойства, общие для всех приложений Office 2000, но и некоторые свойства, характерные только для определенных приложений. Например, свойства "Number Of Paragraphs" или "Number Of Slides" не определены в приложении Excel и их вызов приводит к ошибке. Приведем теперь пару процедур, в которых добавляются пользовательские свойства, устанавливаются и анализируются значения некоторых встроенных свойств документа:

Public Sub AddCustomProperties()
	'Добавление в документ трех пользовательских свойств
	With ActiveDocument.CustomDocumentProperties
		If Not ExistProperty("Кому") Then
			.Add name:="Кому", _
			LinkToContent:=False, _
			Type:=msoPropertyTypeString, _
			Value:="Документ предназначен программистам!", _
			LinkSource:=""
		End If
		If Not ExistProperty("Оценка") Then
			.Add name:="Оценка", _
			LinkToContent:=False, _
			Type:=msoPropertyTypeNumber, _
			Value:=5, _
			LinkSource:=""
		End If
		 If Not ExistProperty("NewProp") Then
			.Add name:="NewProp", _
			LinkToContent:=True, _
			Type:=msoPropertyTypeString, _
			LinkSource:="Название"
		End If
	End With
End Sub

Public Function ExistProperty(PropertyName As String) As Boolean
	'Возвращает True, если в коллекции DocumentProperties
	'существует свойство с именем PropertyName
	Dim prop As DocumentProperty, Exist As Boolean
	Exist = False
	For Each prop In ActiveDocument.CustomDocumentProperties
		If prop.name = PropertyName Then
			Exist = True
			Exit For
		End If
	Next prop
	ExistProperty = Exist
End Function
Листинг 5.4.

В процедуре AddCustomProperties к активному документу добавляются три пользовательских свойства. В двух первых случаях указывается имя свойства, его тип и значение. При задании значения свойства булев параметр LinkToContent должен быть установлен как False. Если же этот параметр установлен как True, то должен быть задан параметр LinkSource, определяющий источник в документе, связываемый со свойством. Заметьте, добавление свойства в коллекцию приводит к ошибке, если в ней уже есть свойство с аналогичным именем. По этой причине для корректности перед добавлением свойства производится проверка на существование.

В следующей процедуре печатаются данные обо всех свойствах документа - встроенных и пользовательских. Замечу сразу, что при выполнении этой процедуры будут возникать ошибки, поскольку, как я уже говорил, не все свойства определены для документов различных приложений. Поэтому в процедуре предусмотрен обработчик ошибок подобных ситуаций, позволяющий перейти к рассмотрению следующего свойства:

Public Sub PrintingProperties()
	'Печать свойств - встроенных и пользовательских
	Dim prop As DocumentProperty
	 For Each prop In ActiveDocument.BuiltInDocumentProperties
		Debug.Print "Имя свойства - ", prop.name
		On Error Resume Next
		If prop.LinkToContent Then
			Debug.Print "Источник -", prop.LinkSource
		Else: Debug.Print "Значение - ", prop.Value
		End If
	Next prop
	For Each prop In ActiveDocument.CustomDocumentProperties
		Debug.Print "Имя свойства - ", prop.name
		If prop.LinkToContent Then
			Debug.Print "Источник -", prop.LinkSource
		Else: Debug.Print "Значение - ", prop.Value
		End If
	Next prop
End Sub
Листинг 5.5.

Перейдем теперь к рассмотрению новинок, появившихся в библиотеке Office 9.0. Напомню, к ним относятся следующие группы объектов: Мастер Ответов, Com - расширения, HTML- проект и объекты Script, а также языковые предпочтения и шрифты Web-страниц.

Мастер Ответов

Мастер Ответов (Answer Wizard) хорошо знаком пользователям Office 2000, благодаря работе с Помощником (Office Assistant). Всякий раз, когда нужно получить справку, в окне Помощника можно сформулировать вопрос в свободном формате, используемом в естественных языках. Так вот, ответ на этот вопрос дает Мастер Ответов. Так ведется работа в самой системе Office 2000, но точно также можно организовать работу и в собственной системе. Для этого необходимо только использовать возможности нового объекта Answer Wizard, доступного теперь в Office 2000. Чтобы Мастер Ответов корректно готовил ответы на вопросы пользователя, касающиеся специфики разработанной программистом системы, необходимо в коллекцию файлов Мастера Ответов - объект AnswerWizardFiles добавить один или несколько специальных файлов с расширением "aw", содержащие, по сути, ответы на все возможные вопросы пользователя. Возникает естественный вопрос, где же взять такие файлы? Ответ прост, - нужно подготовить их, используя специальный инструментарий - Answer Wizard Builder. Этот Построитель Ответов строит aw- файл, используя ранее созданный chm-файл. Возникает естественный вопрос, где же взять такой файл? Ответ прост, - его нужно создать, используя специальный инструментарий - HTML Help Workshop. Я надеюсь, что Вы это все уже знаете, разобрались с двумя предыдущими лекциями этого курса, знаете все об инструментарии AWB и HHW, умеете работать с объектом Answer Wizard и применять его в собственных разработках.

COM-расширения

Технология COM лежит в основе создания продуктов Microsoft. Технология претендует на роль стандарта, ее используют многие фирмы, разрабатывающие программное обеспечение. Элементом этой технологии стали COM AddIns, появившиеся в Office 2000. Надстройки или расширения (AddIns) появились в предыдущей версии Office 97. В Office 2000 наряду с коллекцией AddIns появился и новый объект, задающий коллекцию COMAddIns.

Надстройки предназначены для расширения функциональных возможностей приложений Office 2000. Надстройка, ориентированная на конкретное приложение (AddIn), создается внутри этого приложения, не требует никакого специального инструментария, и представляет своего рода глобальный шаблон. Надстройка COM AddIn, организованная, обычно, в виде DLL может работать в разных приложениях Office 2000. Для ее создания требуется специальный инструментарий, - ее можно создать, например, в среде Visual Basic или в Office 2000 версии Developer, где имеются необходимые для этого средства.

Объекты ComAddIn и их коллекция ComAddIns устроены достаточно просто и рассказ о них не требует большого времени. Однако детальное рассмотрение всех вопросов, связанных с созданием и применением надстроек, требует, по крайней мере, отдельной главы, а подробный разговор о COM-технологии и отдельной книги. Насчет отдельной книги не знаю, а лекцию, посвященную надстройкам - Addins и ComAddIns, Вы сможете прочесть в этой книге.

HTML-проект и объект Script

В первой лекции этой книги я отмечал, что одной из основных тенденций развития Office 2000 является миграция в Интернет. Документы Office 2000 становятся доступными для коллективной работе в сети, и Web-страницы, видимо, станут основной формой представления документов, с которыми в ближайшем будущем будет работать массовый пользователь. Office и Интернет - наиболее перспективное и интересное направление развития офисного программирования. Но в этой книге я, к сожалению, не буду подробно рассматривать эту тему. Поэтому и разговор о новых общих объектах Script, коллекции Scripts, HtmlProject, появившихся в библиотеке Office 2000, будет носить обзорный характер.

Прежде всего, поговорим о том, откуда берутся эти объекты, как они создаются, и в каких ситуациях возникает необходимость работы с ними. Начну с последнего вопроса, - необходимость работы с этими объектами возникает только в том случае, если предполагается публиковать документы Office 2000 в Internet и предоставить пользователям возможность активной работы с этими документами. Более того, эти объекты необходимы лишь тогда, когда предполагается создание VBSript-кода "на лету". Тогда без этих объектов точно уж не обойтись. А теперь несколько слов о том, как и когда эти объекты появляются. Я коротко напомню то, что уже говорилось в первой лекции. Все документы Office 2000 могут быть сохранены в формате HTML и могут просматриваться в Internet тем или иным браузером, как Web-страницы. Конечно же, в большинстве случаев простого просмотра документов недостаточно и пользователь должен иметь возможность активной работы со страницами, производить над ней те или иные действия. Активность Web-страниц всегда предполагает выполнение некоторого программного кода. В то же время современные обозреватели (браузеры) могут выполнять код, написанный только на JavaScript или VBScript. Язык сценариев VBScript, также как и язык VBA, является членом семейства Visual Basic. В отличие от VB и VBA этот язык является бестиповым или, что тоже, языком с одним единственным типом Variant. В объявлениях переменных их тип не указывается. Во многом, язык VBScript похож на язык VBA, является событийно-управляемым, имеет многие из его встроенных функций. Так что программирование на VBScript напоминает программирование на VBA, хотя и имеет свою специфику. Программирование на VBScript ведется в среде специального Редактора VBScript, вызываемого из всех приложений Office 2000. Напомню, нажатие комбинации клавиш "ALT + F11" открывает среду Редактора VBA, а нажатие - "ALT + Shift + F11" открывает похожую среду Редактора VBScript. Работа в этом Редакторе и является основным источником появления объектов Script и, соответственно, коллекции Scripts. Всякий раз, когда в Редакторе в HTML-текст вставляется тег <Script> с соответствующим кодом, в коллекцию Scripts добавляется очередной объект Script, задающий добавленный тег. Наряду с таким обычным способом создания программного кода, возможно программирование "на лету", когда Script-код создается программно. Для этой цели можно использовать либо свойства объекта Script, либо метод Add коллекции Scripts, позволяющий добавить тег Script к тексту Web-страницы. Параметры этого метода позволяю задать сам добавляемый код, местоположение тега, его ID. Метод Delete позволяет программно удалять элементы коллекции Scripts, удаляя, тем самым, соответствующие теги. Добраться до нужного элемента коллекции можно либо по индексу, либо по ID элемента. Конечно, предпочтительнее использовать ID, а не индексы, поскольку индексы элементов коллекции могут меняться в ходе редактирования HTML-текста. По этой причине желательно всегда задавать ID у тегов Script, как при программном создании кода, так и при работе в среде Редактора VBScript.

Объект HtmlProject схож с объектом VBProject. Он используется при программном создании элементов Web-страницы и позволяет программно добраться не только до Script-кода, но и до других элементов, располагаемых на Web-странице, в частности до форм и элементов управления, расположенных на форме. На самом этом объекте я не буду останавливаться подробно, но о схожем объекте - VBProject я расскажу подробно. Оба объекта описывают программные проекты, связанные с документом. Один объект описывает проект, написанный на VBA, другой - на VBScript.

В заключение хочу все-таки дать первое представление об HTML-проекте и программировании на VBScript. Приведу один небольшой и традиционный пример "Приветствие", в котором программный проект создается на VBScript, частично руками, частично программно. Взгляните, как выглядит среда Редактора VBScript.

Редактор VBScript

Рис. 5.2. Редактор VBScript
< Лекция 4 || Лекция 5: 123456 || Лекция 6 >