Использование компонента ActiveX VB для автоматизации Word из Internet Explorer
В этой статье показано, как можно использовать компонент ActiveX для клиентской автоматизации Word с веб-страницы, отображаемой в Internet Explorer. Существует несколько преимуществ использования компонента ActiveX на веб-странице, а не сценария, встроенного в веб-страницу.
- Если у вас уже есть код Visual Basic, автоматизирующий Microsoft Word, вы можете повторно использовать код в браузере, преобразовав проект Visual Basic в файл ActiveX EXE или библиотеку DLL ActiveX.
- Word не помечен как безопасный для сценариев. В зависимости от параметров безопасности в Internet Explorer код автоматизации Word в сценарии может не запускаться, или пользователь может получать предупреждение о безопасности. Предполагается, что компонент ActiveX соответствует определенным рекомендациям, поэтому он может быть помечен как безопасный для сценариев, чтобы избежать этих проблем с безопасностью.
- В Visual Basic есть несколько функций, которые нельзя использовать с скриптом на веб-странице. Например, одной из функций, доступных в Visual Basic, но не в скрипте веб-страницы, является возможность вызова программного интерфейса Windows (API).
Типичный сценарий разработчика — предоставление пользователям интерфейса веб-страницы для создания документа Word с использованием данных из внешнего источника или логики. Несмотря на то что вы можете использовать автоматизацию Word на стороне сервера для создания документа и потоковой передачи его обратно клиенту, существует множество недостатков использования серверного подхода, включающего автоматизацию слов. Основной недостаток — масштабируемость; Word является очень ресурсоемким сервером автоматизации и не рекомендуется для создания документов на веб-сервере.
Используя компонент ActiveX для создания документа на клиенте, можно переместить средство автоматизации Word, интенсивно использующее ресурсы, с веб-сервера. Это решение, которое представляет пример компонента ActiveX, рассмотренного в этой статье. Несмотря на то, что пример относится только к автоматизации Word, для автоматизации других приложений Microsoft Office, таких как Microsoft Excel, можно применять одни и те же принципы.
Дополнительные сведения
Компонент ActiveX для Visual BasicКомпонент ActiveX Visual Basic в этом примере взаимодействует с скриптом веб-страницы для создания документа с накладной заказа по запросу пользователя. Веб-приложение может разрешить компоненту ActiveX получить сведения о заказе для данного идентификатора заказа, или веб-приложение может упаковать сведения о заказе в формате XML и отправить его компоненту ActiveX для обработки. В обоих случаях после того, как компонент получает сведения о заказе, он может автоматизировать Word для создания и отображения документа счета для заказа.
Компонент ActiveX (Аутоматеворд) содержит один класс, класс Invoice, предоставляющий три метода:
- Метод GetData использует объекты данных ActiveX (ADO) для извлечения сведений о заказе в образце базы данных Northwind. Сведения о заказах хранятся в переменной m_Data Private-Member. Метод GetData можно вызвать для того, чтобы извлечение данных происходило на стороне клиента.
- Метод Сенддата использует Microsoft XML (MSXML) для заполнения m_Data закрытой переменной члена сведениями о заказе, предоставленными вызывающим абонентом. Сенддата ожидает один параметр, представляющий объект DOMDocument для сведений о заказе. Метод Сенддата может быть вызван для отправки сведений о заказе с веб-страницы в компонент. Благодаря этому подходу вы можете использовать ASP для извлечения данных на стороне сервера и представления клиента с островом XML-данных, который можно использовать для создания документа.
- Метод Макеинвоице использует автоматизацию Word для создания документа, который содержит сведения о заказе в закрытой переменной члена m_Data. Документ, хранящийся на веб-сервере, используется в качестве отправной точки для счета. Вызывающий абонент может отобразить заполненный документ Word вне браузера или сохранить готовый документ на диске для последующего использования.
В Autoword1. htm показано, как можно использовать метод GetData, чтобы позволить компоненту ActiveX получать клиентские данные заказа и создавать документ.
Сценарий в Autoword1. htm использует компонент ActiveX для отображения завершенного документа вне браузера. Вы также можете сохранить готовый документ и отобразить его в браузере; Тем не менее, для этого необходимо сохранить документ Word на диске. Компонент может сохранить документ как К:\инвоице.док на локальном диске клиента. Так как компонент ActiveX помечен как безопасный для сценариев, клиенту предлагается подтверждение сохранения.
Если вы хотите отобразить заполненный документ в браузере, замените вызов Макеинвоице в Autoword1. htm на следующий:
В Autoword2. htm показано, как можно использовать метод Сенддата для отправки данных заказа в качестве объекта DOMDocument в компонент ActiveX для создания готового документа. DOMDocument создается из острова данных XML, расположенного на веб-странице. Чтобы компонент ActiveX правильно обрабатывал сведения о заказах, отправленных вызывающим абонентом, XML-код должен быть правильно сформированным и структурированным, чтобы компонент мог интерпретировать его как информацию о заказах.
В Autoword1. htm и Autoword2. htm Обратите внимание на то, что компонент ActiveX создается с помощью тега, а не функции CreateObject. Цель использования тега состоит в том, чтобы включить автоматическую загрузку компонента ActiveX для пользователей, на которых еще не установлен компонент. Если пользователь посещает одну из этих страниц и компонент не установлен, то компонент загружается из CAB-файла по URL-адресу, указанному в атрибуте CODEBASE. В зависимости от параметров безопасности пользователя в Internet Explorer они могут сначала получить запрос на подтверждение загрузки.
NOTE: CAB-файл, включенный в файл автотекста. exe, был создан с помощью мастера пакетов и развертывания для Visual Basic. Компонент ActiveX в пакете помечен как безопасный для выполнения сценариев и инициализации, но не подписан цифровой подписью.
Для получения дополнительных сведений о создании загружаемых компонентов, цифровой подписи и пометке компонентов как безопасных для написания сценариев и инициализации посетите следующий веб-сайт сети MSDN:
Безопасная инициализация и сценарии для элементов управления ActiveXhttps://msdn.microsoft.com/en-us/library/Aa751977.aspx
Ссылки
Чтобы получить дополнительные сведения, щелкните следующие номера статей базы знаний Майкрософт:
257757 Info: Автоматизация Office для автоматического выполнения не рекомендуется или не поддерживается
(c) корпорация Майкрософт (Microsoft Corporation) 2001, все права защищены. Вклады Лори B. Турнер, корпорация Майкрософт.