Что такое word automation

Обновлено: 06.07.2024

Пакет программ Microsoft Office — это не только фактический стандарт офисного ПО, но и весьма сложная и многофункциональная среда, позволяющая создавать решения, предназначенные прежде всего для применения возможностей Microsoft Office и автоматизации рутинных действий пользователя при работе с документами. Эта программная платформа, называемая Объектной Моделью Microsoft Office (Microsoft Office Object Model), или же Автоматизацией Microsoft Office (Microsoft Office Automation) основана на Объектной Модели COM и содержит обширный набор классов, предоставляющих доступ практически к любому элементу или действию, доступному пользователю при работе с Microsoft Office через графический интерфейс.


Объектная модель Microsoft Word (частично)

Говоря о программировании для Microsoft Office, часто подразумевают «внутренние» программы — макросы, написанные на VBA (Visual Basic for Applications, реализация Visual Basic в Microsoft Office) и встраиваемые непосредственно в документы.


Создание макроса для Microsoft Excel

Благодаря широким возможностям языка (за счет доступа к внешним dll и компонентам практически неограниченным) и удобной модели распространения (с файлами документов) макросы Microsoft Office использовались для создания зловредного ПО с момента появления VBA и получили собственное название — макровирусы. Несмотря на некоторое ужесточение настроек, связанных с макросами (на текущий момент актуальные версии Microsoft Office при настройках по умолчанию запрещают автоматическое выполнение макросов, уведомляя об этом пользователя), макровирусы активно применяются злоумышленниками и сейчас. Для эффективного использования этой технологии с двадцатилетней историей оказалось достаточно дополнить ее элементами социальной инженерии.

image


Предложение пользователю разрешить макросы в документе, содержащем зловредный код

image


Доступ к объектной модели Microsoft Office из PowerShell

Объектная Модель Microsoft Office представляет приложения Microsoft Office в виде COM-объектов. Но существует также возможность добавлять в документы и другие COM-объекты — управляющие элементы ActiveX, не относящиеся к Microsoft Office, но присутствующие в операционной системе. Будучи включенными в документ, эти элементы могут взаимодействовать с кодом макросов, либо выполнять собственный код, основанный на добавляемых в документ «свойствах» — properties объекта. В умелых руках встраивание элементов ActiveX также может приводить к выполнению произвольного кода, поэтому в последних версиях Microsoft Office по умолчанию запрещен запуск встроенных ActiveX за исключением некоторого «белого списка» элементов. Впрочем, пользователь и в этом случае при желании может явно разрешить выполнение.


Предупреждение о встроенных ActiveX

Предложение разрешить (или запретить) запуск активного содержимого поступит пользователю при открытии документа нормальным образом в соответствующем приложении. Что же случится, если открыть тот же документ, воспользовавшись Объектной Моделью Microsoft Office?
Примеров таких программ — великое множество на самых разных языках и под самые разные задачи:

Пример на VBScript

Пример на C++

Пример на PowerShell

При изучении подобных примеров лишь один раз нам попалась в коде интересная строчка:

Application.AutomationSecurity Property (Excel)

Returns or sets an MsoAutomationSecurity constant that represents the security mode Microsoft Excel uses when programmatically opening files.

MsoAutomationSecurity can be one of these MsoAutomationSecurity constants.

msoAutomationSecurityByUI. Uses the security setting specified in the Security dialog box.|
msoAutomationSecurityForceDisable. Disables all macros in all files opened programmatically without showing any security alerts.
msoAutomationSecurityLow. Enables all macros. This is the default value when the application is started.

Оказывается, если приложение Microsoft Office запущено как элемент автоматизации, то код макросов в открываемых документах будет по умолчанию выполнен. Если, конечно, специально не изменить уровень безопасности управляющей программой. Это умолчание не зависит от настроек, выставленных пользователем или администратором. Помимо макросов, будет также загружен и выполнен код любых элементов ActiveX, добавленных в документ.



Выполнение макроса при открытии документа через Автоматизацию

Эта неочевидная особенность, судя по всему, достаточно редко учитывается. К примеру, офисные программы других производителей применяют объектную модель Microsoft Office для импорта и экспорта данных в документы Word и Excel. Достаточно часто встречаются примеры для 1С:

Пример для 1С

Программы 1С, называемые «обработками», также могут использовать COM вообще и объектную модель Microsoft Office в частности. Некоторые полезные обработки предоставляются пользователям производителем, например, обработка «ЗагрузкаДанныхИзТабличногоДокумента.epf» позволяет загружать в базу данные из внешних табличных документов.



Выполнение макроса при открытии документа через обработку 1С

Как можно видеть, свойство AutomationSecurity было забыто и программистами 1С.
С одной стороны, это классический пример того, что необходимо думать о безопасности в процессе программирования, какой бы язык ни использовался. С другой стороны, какая причина заставила Microsoft при ужесточении настроек безопасности Microsoft Office оставить незащищенной объектную модель?

Этот раздел содержит общий обзор дополнений и усовершенствований в Word Automation Services для разработчиков. В Microsoft SharePoint основным дополнением к службам автоматизации word является поддержка запросов на преобразование файлов "по запросу". Наиболее значительное улучшение для Word Automation Services добавлена поддержка использование потоков в качестве входных данных и выходные данные задания преобразования.

Создайте на преобразование файла запросами

В Word Automation Services в Microsoft SharePoint теперь можно создавать запросы на преобразование файлов по запросу, в результате чего преобразование файлов обрабатывается немедленно. В SharePoint 2010 вам нужно создать задание преобразования файлов в коде и затем запустить преобразование, с помощью метода ConversionJob.Start. Задание преобразования нажмите Начать на основе интервала, задайте в Word Automation Services как часто следует запускать задания преобразования. Периодичностью, SharePoint задание таймера будет запустить задание преобразования. С помощью метода задания таймера на основе soonest можно начать преобразование задания равен 1 минуте.

Теперь в службе автоматизации word в Microsoft SharePoint добавлена возможность создания запроса на преобразование файлов, который обрабатывается сразу после отправки и преобразование начинается немедленно и не зависит от задания SharePoint timer.

Одним из способов, учитывайте следующее различие между в очередь запросов на преобразование файла запросами и SharePoint на основе временного задания преобразования заданий — понять, в очередь запросов на преобразование файла запросами обрабатываются синхронно, тогда как задания преобразования на основе задание таймера SharePoint происходят асинхронно. Архитектура Word Automation Services была переработана для поддержки нового типа для запроса на преобразование файла запросами и существующих преобразования файлов задания таймера на основе SharePoint.

На рисунке 1. Архитектура Word Automation Services 2013

Архитектура Word Automation Services 2013

На рисунке 1, можно убедиться, что архитектура Word Automation Services поддерживается 2 отдельных очередей для преобразования: одна очередь для на запросами (Интерпретация) файла преобразования запросов и одной очереди для заданий преобразования на основе задания таймера SharePoint на запросы с запросами помещаются в интерпретации основе очереди документов, где преобразования обрабатываются немедленно.

С другой стороны задания преобразования на основе задания таймера SharePoint, помещаются в очередь документ на основе задания таймера. Задания преобразования для этих запросов на запуск периодичностью для службы Word Automation Services. Запросов на преобразование в очереди документ на основе интерпретации всегда имеют приоритет над задания преобразования в документ на основе задание таймера очереди.

Ключевые моменты

По запросу преобразования файлов запросами-это дополнительный компонент и не замените существующее задание преобразования на основе задания таймера SharePoint. Это означает, что решения, которые компилировали и запускали SharePoint 2010 г., будут продолжать компилировать и запускать в SharePoint.

Чтобы на запросов на преобразование файла запросами только для одного файла за раз

Word Automation Services всегда будет определять приоритеты для задания преобразования файлов запросами через задания преобразования на основании SharePoint задания таймера. Если Word Automation Services уже работает на задание преобразования файлов, который использует SharePoint задание таймера, Word Automation Services прерывать задания и переключения на работают на задание преобразования файлов запросами до его завершения. Оно будет переключитесь в работать на задание преобразования файлов на основе задание таймера SharePoint

Преобразования файлов потоков

Другой новой функцией Службы автоматизации word в Microsoft SharePoint является поддержка преобразования потоков. В SharePoint 2010 может только преобразовать файлы, которые были сохранены в библиотеках SharePoint. Теперь можно преобразовать файлы, которые хранятся за пределами SharePoint с помощью потоков.

Ключевые моменты

Можно использовать только потоков как входные данные при создании на задание преобразования файлов запросами

Из-за описанные выше точки можно преобразовать только один поток за раз

С добавлением в очередь запросов на преобразование файла запросами и для поддержки преобразования потоков Word Automation Services значительно улучшено для включения с повышенной сценариев для преобразования документов.

Дата последнего изменения: 23 сентября 2010 г.

Применимо к: SharePoint Server 2010

В этом разделе описывается процесс настройки Word Automation Services для разработки.

Если сервер настроен как автономная установка или служба Word Automation Services настроена с помощью Мастера настройки фермы SharePoint Server 2010, то настраивать Word Automation Services вручную необязательно; впрочем, может потребоваться выполнить действия, описанные далее в разделе «Дополнительная настройка для конкретного разработчика».

Настройка Word Automation Services

Выполнив начальную настройку конфигурации SharePoint Server 2010, можно настроить Word Automation Services, используя следующие инструменты:

Центр администрирования SharePoint 2010.

Использование центра администрирования SharePoint 2010

Word Automation Services можно настроить с помощью центра администрирования SharePoint Server 2010.

Настройка Word Automation Services с помощью центра администрирования SharePoint 2010

На странице SharePoint Server 2010 Центр администрирования в разделе Управление приложениями щелкните Управление приложениями-службами.

На вкладке Приложения-службы нажмите кнопку Создать, а затем выберите Приложение Word Automation Services.

В диалоговом окне Создание приложения-службы Word Automation Services заполните следующие поля:

Имя. Введите уникальное имя для данного экземпляра приложения Word Automation Services. Это имя используется в Word Automation Services для поиска экземпляра приложения-службы при создании новых заданий преобразования в объектной модели.

Пул приложений. Выберите пул приложений для данного экземпляра приложения Word Automation Services.

Запустить в режиме секционирования. Этот параметр позволяет указать, должен ли данный экземпляр приложения Word Automation Services выполняться в среде с несколькими разделами. В обычных конфигурациях такой режим не используется.

Если настройка Word Automation Services осуществляется в рамках пошагового руководства, представленного в данной документации, настраивать данный параметр не требуется.

Добавить в список прокси по умолчанию. Этот параметр позволяет указать, следует ли добавить прокси приложения для данного экземпляра приложения Word Automation Services в группу прокси по умолчанию.

База данных. Введите имя базы данных, которая будет использоваться для хранения очереди документов в данном экземпляре, и введите имя сервера, на котором установлена эта база данных.

В большинстве случаев рекомендуется указывать имя базы данных и имя сервера базы данных, используемые по умолчанию.

Использование Windows PowerShell

Word Automation Services можно настроить с помощью Windows PowerShell 1.0.

Настройка Word Automation Services с помощью Windows PowerShell

Откройте Windows PowerShell на компьютере, на котором установлен сервер SharePoint Server 2010. Для этого нажмите кнопку Пуск, а затем выберите Все программы, Windows PowerShell и снова Windows PowerShell.

Программа Windows PowerShell может быть помещена в папку Стандартные.

Добавьте оснастку SharePoint Server 2010 в текущий сеанс Windows PowerShell 1.0, введя указанную ниже команду и нажав ВВОД.

Чтобы запустить приложение-службу с новым пулом приложений, введите указанную ниже команду и нажмите Enter.

В результате выполнения команды создается новый пул приложений с именем «Word Conversion Services Application Pool» (Пул приложений-служб преобразования Word).

Чтобы создать экземпляр приложения Word Automation Services и задать пул приложений, в котором этот экземпляр должен запускаться, введите следующую команду.

Для автоматизации этих действий можно использовать следующий скрипт Windows PowerShell.

В скрипте используются два входных параметра:

Имя пула приложений, используемого приложением-службой (обязательный атрибут).

Имя учетной записи, которая должна использоваться приложением-службой для запуска пула приложений. Этот параметр обязателен только в случае, если пул приложений не существует.

Дополнительная настройка для конкретного разработчика

Чтобы настроить Word Automation Services для разработки и отладки приложений, имеет смысл уменьшить частоту выполнения заданий преобразования в Word Automation Services.

Чтобы задать частоту преобразования

На странице SharePoint Server 2010Центр администрирования в разделе Управление приложениями щелкните Управление приложениями-службами.

Выберите экземпляр Word Automation Services, используемый для разработки.

На вкладке Приложения-службы щелкните Управление.

В разделе Пропускная способность преобразований в поле Начальная частота преобразований (мин.) введите 1.

Значительная часть текстовых документов сегодня создаётся и редактируется в программе Microsoft Word. Наличие этой программы практически на каждом компьютере даёт возможность автоматизировать печать, обработку и экспорт текстовых документов в PDF, используя API Microsoft Word.


Этот код выглядит очень просто. Но для автоматизации печати списка документов следует учесть ряд нюансов:

Доработанный вариант нашей программы будет выглядеть так:


Я считаю, что этого кода вполне достаточно, что бы сдать зачёт по программированию в университете. Но до внедрения его в коммерческое приложение следует решить еще несколько вопросов.

1. Этот код не будет работать, если входной файл имеет атрибут «Read only».
2. Производительность вашей программы можно увеличить в несколько раз, если открывать и закрывать только документы, а приложение Microsoft Word оставлять открытым.
3. Многим пользователям нужна возможность печати только заданного диапазона страниц, а не всего документа целиком, а так же возможность напечатать несколько копий документа.
4. Этот код не будет работать, если ваша программа запущена из Windows Tasks Scheduler или от имени Windows Service.

В этой статье я не стану рассказывать о том, как решить эти четыре задачи, что бы не делать жизнь моих читателей слишком скучной. Скажу лишь, что в программах Print Conductor, FolderMill и 2Printer они были мной успешно решены.

Для конвертирования документа в PDF нужно заменить функцию PrintOut на ExportAsFixedFormat. После этого наш код будет выглядеть так:


Этот пример будет работать, если на вашем компьютере Microsoft Word 2007 SP2 или его более новая версия.

Функция ExportAsFixedFormat не будет работать, если на компьютере не установлено ни одного принтера. Либо если один из установленных принтеров не назначен в качестве system default printer.

Код экспорта документов в PDF можно улучшить, реализовав возможность экспорта части страниц документа, а так же возможность экспорта документов в PDF/A. Обе эти возможности компания Microsoft реализовала в функции ExportAsFixedFormat.

Примеры коммерческих приложений, использующих этот код для конвертирования документов в PDF: DocuFreezer и FolderMill.

Читайте также: