Андрей Колесов

Сегодня уже никого не может удивить позиционирование семейства офисных приложений Microsoft в качестве платформы разработки специализированных бизнес-систем. Основой данной технологии стала реализация еще в версии Office 97 унифицированной иерархической объектной модели на основе OLE Automation (несколько сотен объектов, более половины из которых являются общими), создание единого внутреннего механизма программирования приложений на основе VBA, а также интеграция с другим средствами разработки Microsoft, в первую очередь с Visual Basic.

В последующих версиях Office (2000 и XP) в целом прослеживается эволюционное развитие этой платформы без каких-то революционных изменений (что, наверное, совсем неплохо). Из новшеств Office 2000 двухлетней давности стоит выделить следующие элементы технологии:

  • создан единый для всех приложений (а также для сред разработки VB и VBA) механизм разработки и подключения функциональных расширений COM Add-Ins;
  • завершено объединение языков VB и VBA на основе версии VB 6.0 (хотя целый ряд труднообъяснимых различий, в том числе в среде разработки, остается);
  • реализован механизм авторизации программных проектов с помощью цифровой подписи;
  • появился ряд ActiveX-компонентов, получивших название Office Web Components, которые фактически реализуют некоторые функции Excel и предназначены для использования в составе HTML-страниц и панелей Digital Dashboard;
  • есть возможность применения дополнительных средств разработки приложений, а также вспомогательных утилит и приложений, включенных в состав специального выпуска пакета Office Developer и наборов SDK (в частности, Digital Dashboard, - см. "BYTE/Россия" № 2/2001).

Среди новых функций и средств Office XP для разработчиков можно отметить в первую очередь поддержку технологии Smart Tags, широкое использование XML-стандартов, модифицированные возможности Office Web Components, Web-службы коллективной работы SharePoint Team Services, а также ряд дополнительных инструментов, в том числе для автоматизации управления потоками работы (WorkFlow).

Новые технологии и инструменты Office XP

Для набора Web Components XP применяется новая система лицензирования. Теперь компоненты могут свободно загружаться и устанавливаться поверх HTTP-протокола, при этом наличия Office XP на компьютере не требуется. Обновленные компоненты расширяют возможности форматирования данных, а также настройки панелей инструментов и меню.

Технология интеллектуальной обработки текста Smart Tags (в русской версии пакета она называется смарт-теги) впервые реализована в Word 2002 и Excel 2002*, а также в новом браузере Internet Explorer 6.0 (но только если на компьютере установлен пакет Office XP). Она доступна и в Outlook 2002, если эта система использует Word 2002 в качестве редактора почтовых сообщений (такой режим взаимодействия двух приложений реализован впервые).


*Автономные приложения, входящие в состав пакета Microsoft Office XP, имеют номер версии 2002, однако для названий их компонентов обычно используется фактический порядковый номер версии - 10.

Применяя смарт-теги, пользователь может связывать наборы терминов с различными "присоединенными" к ним функциями. В Microsoft Office XP входят готовые англоязычные модули Smart Tags для обработки имен персон, дат, телефонных номеров, адресов и пр. Кроме того, можно создавать собственные "распознаватели" (recognizers) в виде XML-файлов (для чего может подойти даже самый примитивный текстовый редактор типа NotePad) или компонентов ActiveX DLL. Последний вариант обеспечивает наиболее широкие функциональные возможности. Подробнее эта технология рассматривается в статье "Smart Tags в офисных приложениях".

Весной нынешнего года Microsoft представила технологию SharePoint, предназначенную для создания Web-порталов. Технология реализована в двух вариантах: SharePoint Portal Server и SharePoint Team Services. SharePoint Portal Server - это самостоятельный серверный продукт, предназначенный для развертывания Web-порталов масштаба предприятия. Набор SharePoint Team Services (он ранее имел рабочее название Office Web Server) ориентирован на создание Web-серверов для обеспечения коллективной работы рабочих групп (50-75 человек) и поставляется сейчас только вместе с пакетом FrontPage 2002 (например, в составе Office XP Professional Special Edition и Office XP Developer). Предполагается, что эта технология войдет в состав будущих серверных версий операционных систем Windows.

Фактически SharePoint Team Services (рис. 1) представляет собой расширенный вариант набора FrontPage Server Extensions 2002. (Сама архитектура FrontPage Server Extensions 2002 не содержит существенных отличий от версии 2000.). Однако необходимо обратить внимание на следующие особенности SharePoint Team Services. Во-первых, в качестве хранилища данных в дополнение к файловой системе могут использоваться базы данных SQL Server или инструментарий MSDE (последний входит в состав поставки). Во-вторых, в качестве программного интерфейса используется только ISAPI, а в качестве Web-сервера - только Microsoft IIS. Соответственно, все это работает лишь на платформе Windows (расширения FrontPage Server Extensions поддерживают также CGI и FrontPage Attache и могут применяться на многих популярных UNIX-платформах).

Fig.1
Рис. 1. Архитектура SharePoint Team Services.

Выпуск Microsoft Office XP Developer (поставляется только в англоязычном варианте), как и ранее, включает набор средств, объединенных в набор Developer Tools. В нем отдельную группу составляют расширения среды разработки VBA для создания библиотек ActiveX DLL (в том числе расширений COM AddIn для приложений Office), а также дополнительный комплект конструкторов, мастеров и утилит. Среди новинок следует отметить DashBoard Project для разработки компонентов Web Parts.

Кроме того, в составе этого выпуска имеется целый ряд автономных приложений: средства поддержки групповой разработки Visual SourceSafe, специальные издания для разработчиков SQL Server 2000 и Exchange 2000 Server, а также два новых инструмента Microsoft для создания приложений для управления бизнес-процессами - WorkFlow Designer for SQL Server и WorkFlow Designer for Exchange 2000 Server. Выпуск Developer содержит модули поддержки для дистрибуции приложений Access, средства создания справочных систем и подробную документацию для разработчиков на компакт-дисках.

VBA и объектная модель Office XP

И все же, несмотря на появление различных "сопутствующих" технологий, разработка приложений на платформе Microsoft Office по-прежнему базируется на системе объектов приложений и среде программирования VBA. В этой связи подчеркнем, что расширение функционала программ для конечного пользователя автоматически повышает возможности и создания специализированных бизнес-приложений.

Как и раньше, инструментарий VBA используется в шести приложениях из состава Microsoft Office - Word, Excel, Access, PowerPoint, FrontPage и Outlook. Кроме того, он применяется в продуктах Microsoft Project и Microsoft Visio, а также распространяется в виде SDK для интеграции в приложениях третьих фирм (знакомую среду VBA можно найти в продуктах десятков ведущих мировых разработчиков ПО). Новшества VB.NET пока не нашли отражения в Microsoft Office XP: среда разработки и язык программирования VBA остались примерно такими же, как в Office 97/2000. Office XP включает VBA версии 6.3, которая, как говорится в комментариях Microsoft, содержит ряд модернизаций по сравнению с VBA 6.0 в составе Office 2000, но пока их не удалось обнаружить. Такой "консерватизм", наверное, обрадует большинство VBA-программистов, но следует иметь в виду, что тем самым будет нарушена совместимость VBA и VB, к которой многие разработчики уже привыкли. К тому же можно ожидать, что это лишь временная отсрочка в процессе перехода к VB.NET.

Объектная модель Microsoft Office XP не претерпела каких-либо радикальных структурных изменений, хотя она продолжает расширяться и модифицироваться. Напомним, что эта модель состоит из большой группы общих объектов под названием Office Objects и наборов объектов отдельных приложений. Полную информацию о новшествах объектной модели Office XP можно найти в электронной справке. В частности, в справочной системе Word 2002 (рис. 2) имеются разделы "What's New for Microsoft Office Developers" (общий для всех приложений) и " What's New for Microsoft Word 2002 Developers" (только для Word).

Fig.2
Рис. 2. Новшества объектной модели Microsoft Office XP описаны в электронной справке.

Даже простое перечисление новых объектов, свойств, методов и событий заняло бы слишком много места, поэтому далее мы приведем лишь несколько примеров.

Office XP Shared Components

Раньше для операций открытия/сохранения файлов на программном уровне использовались ActiveX-элемент управления Common Dialog (помимо работы с файлами он выполняет многие другие операции, в том числе выбор шрифта и печать) или соответствующие функции Win API. Теперь же Office 10 Object Library содержит собственный объект FileDialog для работы с файловой системой. Он позволяет наряду с традиционными окнами Open и Save As реализовать режимы File Picker и Folder Picker. В результате выполнения такого кода:

Dim objFileDialog As FileDialog
    Set objFileDialog = Application.FileDialog(msoFileDialogFilePicker)
    With objFileDialog
        .Title = "Окно File Picker"
        .InitialFileName = "C:\"
        .InitialView = msoFileDialogViewDetails
        .ButtonName = "Выбрать файл"
        .AllowMultiSelect = True
        '
        If .Show = USER_CLICKED_BUTTOM Then
          MsgBox "Выбрано = " & .SelectedItems.Count & " файлов"
        End If
    End With

мы сможем выбрать нужные файлы (рис. 3).

Fig.3
Рис. 3. Новый объект FileDialog предлагает новые режимы при работе с файловой системой.

Access 2002

Access 2002 и Excel 2002 теперь поддерживают экспорт и импорт данных в формате XML. Кроме того, Access включает методы ExportXML и ImportXML для программного ввода-вывода XML-файлов. Например, вывод таблицы можно осуществить с помощью одной строки кода:

Application.ExportXML ObjectType:= acExportTable, _
        DataSource:="Товары", DataTarget:="c:\MyXMLFiles\Products.xml"

Допустим, у вас есть следующая таблица "Товары":

 
Наименование Цена Количество
Сапоги 101,40 6
Брюки 45,50 8

В этом случае файл Products.xml будет в Internet Explorer выглядеть следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata">
    <Товары>
        <Наименование>Сапоги<Наименование>
        <Цена>101.40<Цена>
        <Количество>6<Количество>
    <Товары>
    <Товары>
        <Наименование>Брюки<Наименование>
        <Цена>45.50<Цена>
        <Количество>8<Количество>
    <Товары>
</dataroot>

Тут стоит обратить внимание, что плавающая точка преобразовалась в запятую. К тому же этот же русский текст в NotePad будет выглядеть совсем иначе, так как тут используется кодировка UTF-8.

Библиотека объектов Access 10 Object Library включает также новый объект Printer, с помощью которого можно получать информацию о принтерах, подключенных к компьютерам, а также управлять их установками. Разработчики приложений Access могут также воспользоваться дополнительными событиями (например, при подключении или отключении от источника данных) при программировании окон просмотра PivotTable и PivotChart.

Excel 2002

Одно из интересных новшеств Excel 2002 - модернизированная модель защиты рабочих листов, с более гибкими (по сравнению с предыдущими версиями) возможностями. Разработчик теперь может разрешить пользователям выполнять ряд операций (например, вставку или удаление ячеек) в защищенные листы. Кроме того, можно задавать диапазоны ячеек, доступные для редактирования только определенным пользователям.

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

Dim objWks As Worksheet
For Each objWks In ActiveWorkbook.Worksheets
    objWks.Protect Password:="Пароль", Contents:=True, _
            AllowFormattingCells:=True
Next objWks

Панель инструментов Watch Window в Excel 2002 обеспечивает слежение за содержимым ячеек таблицы. Хотя распечатывать выводимую информацию непосредственно средствами панели нельзя, новый объект Watch позволяет программным образом создавать и печатать отчеты на базе содержимого этого окна.

Word 2002

Появление целого ряда новых объектов в библиотеке Word 10.0 Object Library связано с решением задач коллективной работы над документами. С их помощью можно, например, написать макрос, который будет показывать документ таким образом, чтобы были видны изменения, сделанные лишь заданным кругом пользователей. Этот код выполняет следующие преобразования для одного корректора:

Dim objReviewer As Reviewer
Dim objView As View

Set objView = Application.ActiveWindow.View

With objView
        'Выдать на экран все изменения в документе
        .ShowInsertionsAndDeletions = True
        .ShowComments = True
        .ShowFormatChanges = True

        'Скрыть всех других корректоров текста
        For Each objReviewer In .Reviewers
            objReviewer.Visible = False
        Next objReviewer

        ' Показать только исправления, сделанные
        ' одним сотрудником
        .Reviewers("Kolesov Andrei").Visible = True
  End With

Однако следует обратить внимание, что объект Reviewer почему-то позволяет получить лишь число "корректоров" документов, но не их конкретный список.

Большинство новых свойств, методов и событий Word 2002 связано с управлением режимами почтовой рассылки документов, а также программной настройкой нового мастера Mail Merge Wizard. Например, можно открыть этот мастер, указав с помощью набора свойств "ShowStep", какие шаги нужно будет выполнять:

With ActiveDocument.MailMerge
   If .WizardState = 0 Then  
      MsgBox "Мастер уже открыт!"
   Else ' Мастер не был открыт 
        ' Не выполнять пятый шаг (предварительный просмотр письма)
        ' и показать мастер на шестом шаге
        .ShowWizard InitialState:=1, ShowPreviewStep:=False
   End If
End With

Outlook 2002

Для создания пользовательских интерфейсов (они обозначаются термином "view") в Outlook 2002 широко применяются XML-схемы, которые можно модифицировать с помощью нового свойства XML, объекта View. Например, выполним следующий код для текущего окна "Входящие":

Dim olView As Outlook.View 
Set olView = Application.ActiveExplorer.CurrentView 
Debug.Print olView.XML

В результате в окне Immediate получим его XML-описание следующего вида:

<?xml version="1.0"?>
<view type="table">
    <viewname>Messages</viewname>
    <viewstyle>font-family:Tahoma;font-style:normal;
      font-weight:normal;font-size:8pt;color:Black;
      table-layout:fixed;width:100%</viewstyle>
    <viewtime>210748977</viewtime>
    <linecolor>8421504</linecolor>
    <linestyle>3</linestyle>
    <collapsestate></collapsestate>
    <rowstyle>background-color:#ffffff</rowstyle>
    <headerstyle>background-color:#d3d3d3</headerstyle>
    <previewstyle>color:Blue</previewstyle>
    <column>
        <name>HREF</name>
        <prop>DAV:href</prop>
        <checkbox>1</checkbox>
    </column>
    ...
</view>

Работая с XML-описанием окна, можно применить Microsoft XML Parser для программной коррекции объекта View. В приведенном ниже примере выполняется изменение размера шрифта при выводе данных:

Sub LargeView()
    ' создание нового View с увеличенным размером шрифта
    Dim olLargeView As Outlook.View
    Dim clViews As Outlook.Views
    Dim oXMLDOM As New DOMDocument
    Dim oNode As IXMLDOMNode
    '
    Set clViews = Application.ActiveExplorer.CurrentFolder.Views
    Set olLargeView = clViews.Add("Large View", _
       olTableView, olViewSaveOptionThisFolderEveryone)
    ' Загрузить XML-описание нового View в виде XMLDOM
   '  Debug.Print olLargeView.XML ' распечатать
    oXMLDOM.loadXML (olLargeView.XML)
    ' элемент, который мы хотим изменить
    Set oNode = oXMLDOM.selectSingleNode("view/rowstyle")
    ' установим для него новый размен шрифта
    oNode.Text = oNode.Text & ";font-size:14pt"
    'запишем модифицированный XML-код в объект View
    olLargeView.XML = oXMLDOM.XML
    olLargeView.Save  ' сохранить
    olLargeView.Apply  ' применить к текущему окну
    Debug.Print olLargeView.XML ' распечатать
End Sub

В результате мы получим новое описание окна (рис. 4) и соответственно новый пользовательский интерфейс (рис. 5).

Fig.4 Рис. 4. XML-описания окна Large View.

Fig.5
Рис. 5. Применение описания Large View в среде Outlook 2002.

Еще два полезных новшества Outlook 2002 - объекты Search и Result для поиска данных (писем, контактов и т.п.) и обработки полученных результатов:

Public Sub ExecuteSearch()
 Const SEARCH_SCOPE As String = "Inbox"
 Const SEARCH_FILTER As String = _
    "urn:schemas:mailheader:subject LIKE '*Microsoft*'"
    Dim objSrch As Outlook.Search
    Dim objItem As Object
    Dim strResults As String
    
    Set objSrch = Application.AdvancedSearch _
        (Scope:=SEARCH_SCOPE, Filter:=SEARCH_FILTER)
      
    For Each objItem In objSrch.Results
        strResults = strResults & objItem & vbCrLf
    Next objItem
    
    MsgBox Prompt:="Сообщения, отвечающие заданному фильтру: " & _
        vbCrLf & strResults
     
End Sub

FrontPage и PowerPoint 2002

Одно из главных направлений развития FrontPage 2002 - обеспечение коллективной работы с помощью Web-узлов, что непосредственно связано с технологий SharePoint Team Services, о чем речь ниже. Само приложение включается в ряд новых объектов, в частности BasicList, Survey и DocumentLibrary для управления потоками данных на групповых Web-сайтах.

Большинство новых объектов PowerPoint 2002 обеспечивают анимацию различных фигур. А новый объект Effect позволяет программным образом создавать презентации на базе документов Word. Полезным также будет объект Organizational Chart, который формирует диаграммы на основе базы данных о сотрудниках компании.

 

Состав различных выпусков Microsoft Office XP

Приложения Назначение Стандарт-ный Профессио-нальный Профессио-нальный (Специальное издание) Developer
Word Текстовый процессор + + + +
Excel Электронные таблицы + + + +
Outlook Диспетчер электронной почты и планирования работы + + + +
PowerPoint Программа подготовки презентаций + + + +
Access Система управления базами данных   + + +
FrontPage Инструмент для создания и поддержки Web-узлов     + +
SharePoint Team Services Инструмент для создания и поддержки Web-узлов     + +
Publisher Настольная издательская система     +  
Developer Tools Инструменты разработчика       +
IntelliMouse Explorer Óстройство "мышь"     +