Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

Аннотация

Автоматизация может быть использована разработчиками для создания специальных программ на базе функций и компонентов продуктов из пакета Office. Хотя такая программная разработка может быть реализована в клиентской системе с относительной легкостью, может возникнуть ряд усложнений, если автоматизация выполняется из кода на стороне сервера, например Microsoft Active Server Pages (ASP), ASP.NET, DCOM или службы Windows NT.

В этой статье рассматриваются сложности, с которыми могут столкнуться разработчики. Также в ней предложены альтернативы автоматизации, которые могут повысить производительность. Но разработчикам следует иметь в виду, что рекомендации в данной статье предоставлены исключительно в информационных целях. Корпорация Майкрософт не советует производить и не поддерживает серверной автоматизации Office.

Примечание: В этом контексте распространяемый компонент ядра СУБД Access и среда выполнения Access считаются компонентами Microsoft Office. В этом контексте термин «серверный» относится также к программному коду, который запускается на рабочих станциях под управлением Windows, если его запуск осуществляется с другой рабочей станции Windows (по отношению к станции, на которой работает вошедший в систему пользователь). Например, программы, запущенные планировщиком с помощью учетной записи SYSTEM, выполняются в той же среде, что и «серверный» программный код ASP или DCOM. Следовательно, могут возникнуть многие из рассмотренных в статье проблем. Ссылки на источники дополнительных сведений о рабочих станциях Windows и COM содержатся в разделах «Дополнительные сведения» и «Ссылки» этой статьи.

Дополнительная информация

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

Корпорация Майкрософт в настоящее время не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и службы NT), так как Office может работать нестабильно и (или) взаимоблокировка при запуске Office в этой среде.

При создании решения, которое выполняется в контексте на стороне сервера, следует попытаться использовать компоненты, которые были сделаны безопасными для автоматического выполнения. Или попытаться найти альтернативы, которые позволяют исполнять хотя бы часть кода на стороне клиента. Если вы используете приложение Office в серверном решении, для него будет отсутствовать ряд важных возможностей, необходимых для корректной работы. Кроме того, таким образом вы поставите под угрозу стабильность всего решения в целом.

Проблемы при использовании серверной автоматизации Office

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

  • Удостоверение пользователя. Приложения Office предполагают удостоверение пользователя при запуске приложений, даже если служба автоматизации запускает приложения. Приложения пытаются инициализировать панели инструментов, меню, параметры, принтеры и некоторые надстройки на основе параметров в кусте реестра пользователей для пользователя, который запускает приложение. Многие службы выполняются под учетными записями без профилей пользователей (например, учетной записью SYSTEM или учетными записями IWAM_[имя_сервера]). Таким образом, Office может неправильно инициализироваться при запуске. В этом случае Office возвращает ошибку для функции CreateObject или Функции CoCreateInstance. Даже если приложение Office можно запустить, другие функции могут работать неправильно, если профиль пользователя не существует.

  • Взаимодействие с рабочим столом. Работа приложений Office предполагает наличие интерактивного рабочего стола. В некоторых условиях для корректной работы определенных функций автоматизации приложение необходимо сделать видимым. Office сконструирован таким образом, что всякий раз при возникновении ошибки или необходимости указания параметра выводится соответствующее модальное диалоговое окно. Модальное диалоговое окно на не интерактивном рабочем столе не может быть отвергнуто , что приводит к остановке (зависанию) потока на неопределенное время. Даже если некоторые методы написания программ позволяют снизить возможность возникновения такой ситуации, полностью исключить ее нельзя. Уже только этот факт делает запуск приложений Office из серверного окружения рискованным и непредсказуемым.

  • Повторное использование и масштабируемость. Серверные компоненты должны быть высокоцентрированными, многопотоковые COM-компоненты с минимальными издержками и высокой пропускной способностью для нескольких клиентов. Приложения Office почти во всех отношениях полностью противоположны. Приложения Office не являются повторными серверами автоматизации на основе STA, которые предназначены для предоставления разнообразных, но ресурсоемких функций для одного клиента. Приложения обеспечивают небольшую масштабируемость в качестве решения на стороне сервера. Кроме того, приложения имеют фиксированные ограничения на важные элементы, такие как память. Их нельзя изменить с помощью конфигурации. Что еще более важно, приложения используют глобальные ресурсы, такие как сопоставленные файлы памяти, глобальные надстройки или шаблоны и общие серверы службы автоматизации. Это может ограничить количество экземпляров, которые могут работать одновременно, и привести к условиям гонки, если приложения настроены в многопользовательской среде. Разработчикам, планирующим одновременно запускать несколько экземпляров любого приложения Office, необходимо рассмотреть возможность создания пула или сериализации доступа к приложению Office, чтобы избежать потенциальных взаимоблокировок или повреждения данных.

  • Устойчивость и стабильность: Office 2000, Office XP, Office 2003 и Office 2007 используют технологию установщика Microsoft Windows (MSI), чтобы упростить установку и самостоятельное восстановление для конечного пользователя. В MSI представлена концепция "установка при первом использовании". Это позволяет динамически устанавливать или настраивать компоненты во время выполнения для системы или чаще для конкретного пользователя. В серверной среде это снижает производительность и повышает вероятность появления диалогового окна с запросом на утверждение установки или предоставление диска установки. Хотя это предназначено для повышения устойчивости Office как продукта конечного пользователя, реализация office возможностей MSI в серверной среде является контрпродуктивной. Кроме того, стабильность Office в целом не может быть гарантирована при запуске Office на стороне сервера, так как она не была разработана и не протестирована для этого типа использования. Использование Office в качестве компонента службы на сетевом сервере может снизить стабильность этого компьютера и, следовательно, снизить стабильность всей сети.

  • Безопасность на стороне сервера: Приложения Office не были спроектированы для использования на сервере. Поэтому в ходе разработки приложений Office во внимание не принимались те проблемы безопасности, с которыми сталкиваются распределенные компоненты. Office не осуществляет проверку входящих запросов. Office не обеспечивает защиту от непреднамеренного запуска макроса или другого сервера, который, в свою очередь, может запустить макрос. Не открывайте файлы, отправленные на сервер с анонимного веб-сайта. В зависимости от параметров безопасности, которые были установлены в последний раз, сервер может запускать макросы в контексте администратора или системы с полными привилегиями и, следовательно, может скомпрометировать вашу сеть. Кроме того, Office использует многие клиентские компоненты (например, Simple MAPI, WinInet и MSDAIPP), которые для ускорения обработки данных кшируют сведения о прохождении клиентами проверки. Если Office был автоматизирован на сервере, один экземпляр может работать более чем с одним клиентом. Если в ходе сессии были кэшированы данные проверки подлинности, кэшированные данные одного клиента могут быть использованы другим. Следовательно, клиент может получить закрытые для него разрешения доступа, выдавая себя за другого пользователя.

Помимо технических проблем, вам также следует учитывать вопросы лицензирования. Применяемые в данный момент времени условия лицензирования предусматривают использование приложений Office на сервере для обслуживания клиентов только в том случае, если клиенты также обладают лицензированными копиями Office. Применение серверной автоматизации для предоставления нелицензированным рабочим станциям доступа к приложениям Office не предусмотрено лицензионным соглашением (EULA).

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

  • Функции CreateObject и CoCreateInstance возвращают в процессе выполнения одно из следующих сообщений об ошибке и не запускаются для автоматизации.  

    Сообщение 1

    Ошибка времени выполнения "429": компонент ActiveX не может создать объект

    Сообщение 2

    Ошибка времени выполнения "70": отказано в разрешении

    Сообщение 3

    CO_E_SERVER_EXEC_FAILURE (0x80080005): Ошибка при выполнении приложения-сервера

    Сообщение 4

    E_ACCESSDENIED (0x80070005): Отказано в доступе

  • При открытии документа Office появляется одно из следующих сообщений об ошибке.

    Сообщение 1

    Ошибка времени выполнения "5981" (0x800A175D): не удалось открыть хранилище макросов

    Сообщение 2

    Ошибка времени выполнения "1004": сбой метода "~" объекта "~"

  • Функции CreateObject и CoCreateInstance перестают отвечать и зависают или выполняются очень долго. На некоторых серверах процесс создания занимает мало времени, однако в журнале событий Windows появляется ошибка 1004, указывающая на остановку приложения.

  • Определенные функции неожиданно завершаются или перестают отвечать на неопределенное время из-за предупреждений или других диалоговых окон, которые требуют внимания пользователя.

  • Одновременное появление нескольких запросов или проведение тестирования в предельных режимах может привести к сбою (зависанию) программы или аварийному завершению при открытии или закрытии приложения Office. После этого в памяти остается процесс, который не может быть завершен, либо впредь все экземпляры автоматизированного приложения не функционируют.

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

Альтернативы серверной автоматизации

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

Большинство задач автоматизации на стороне сервера связаны с созданием или редактированием документов. Office 2007 поддерживает новые форматы файла Open XML, которые позволяют разработчикам создавать, читать и трансформировать содержимое файлов на сервере. Эти форматы файлов используют пространство имен System.IO.Package.IO  в Microsoft .NET 3.x Framework для редактирования файлов Office без участия самих клиентских приложений Office. Это рекомендуемый и поддерживаемый метод обработки изменений в файлах Office из службы.

Форматы файлов Open XML являются общедоступным стандартом. 


Корпорация Майкрософт предоставляет пакет SDK для управления форматами файлов Open XML из платформы .NET 3.x Framework. Дополнительную информацию о SDK и том, как его использовать для создания или редактирования файлов Open XML, см. на следующих сайтах Сети разработчиков Майкрософт (MSDN):

Документация по пакету SDK Open XML

Практическое руководство. Управление документами в форматах Office Open XML

Управление файлами Word 2007 с помощью объектной модели Open XML (часть 1 из 3)

Управление файлами Word 2007 с помощью объектной модели Open XML (часть 2 из 3)

Управление файлами Word 2007 с помощью объектной модели Open XML (часть 3 из 3)

Управление файлами Excel 2007 и PowerPoint 2007 с помощью объектной модели Open XML (часть 1 из 2)

Управление файлами Excel 2007 и PowerPoint 2007 с помощью объектной модели Open XML (часть 2 из 2)

Создание решений для создания документов Server-Side с помощью объектной модели Open XML (часть 1 из 2)

Создание решений для создания документов Server-Side с помощью объектной модели Open XML (часть 2 из 2)

При передаче файлов формата Open XML от ASP или ASP.NET необходимо предоставить правильный тип Многоцелевого расширения почты Интернета (MIME) для передаваемого содержимого. Со списком типов MIME для файлов Office 2007 можно ознакомиться по следующему адресу:

Типы MIME формата файлов Office 2007 для потоковой передачи содержимого HTTP

Если все ваши пользователи используют приложения, выходившие до Office 2007, и вы не хотите вводить в решение обязательное использование форматов Open XML, можно воспользоваться любым другим недвоичным форматом файла Office, например HTML, XML и RTF. Вы можете передавать эти файлы в клиентское приложение Office с помощью MIME-типа. Для редактирования, сохранения и возвращения документа на сервер необходим только ASP на сервере.

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

198703 Как автоматизировать Excel из VBScript на компьютере клиента

Запрос и обновление данных Excel с помощью ADO из ASP

286023 Как использовать компонент Visual Basic ActiveX для автоматизации Word из Internet Explorer
 

Если ваш бизнес требует создания файлов двоичного формата Office 97, Office 2000, Office XP и Office 2003, существуют предложения компонентов от независимых разработчиков, которые могут помочь вам. Майкрософт не предоставляет подобных компонентов, поэтому вам необходимо либо создать свое собственное решение, или приобрести такое у независимых разработчиков. Существует ряд продуктов от независимых разработчиков. Рекомендуется рассмотреть все возможные предложения независимых разработчиков и выбрать оптимальные решения для конкретных деловых потребностей.

Если вы хотите создать собственное решение для прямого редактирования файлов Office 97, Office 2000, Office XP, Office 2003 двоичного формата, вы можете бесплатно скачать спецификации к данным файловым форматам в соответствии с условиями Обязательства Майкрософт об открытой технической документации/Microsoft Open Specification Promise (OSP). Для документации или создаваемых вами продуктов не существует технической поддержки, однако сама документация находится в открытом доступе. 


Серверные решения также могут разрешить пользователям отправлять файлы, а затем предоставить серверу отрисовку файлов для просмотра в Интернете или на других носителях. Корпорация Майкрософт в настоящее время работает над предложением таких функций и предоставляет раннюю версию этой возможности в Microsoft службы Excel.

службы Excel — это новая серверная технология, которая входит в состав Microsoft Office SharePoint Server 2007 и позволяет загружать, вычислять и отображать книги Excel в Office SharePoint Server 2007. Для получения дополнительных сведений о технологии Excel Services посетите следующую веб-страницу узла MSDN:

Обзор службы Excel

Пошаговое руководство. Разработка пользовательского приложения с помощью веб-служб Excel

Создание бизнес-приложений с помощью форматов Службы Excel и Office Open XML Службы автоматизации Word, это новое служебное приложение в SharePoint Server 2010. Службы автоматизации Word обеспечивают автоматическое конвертирование документов в форматы, поддерживаемые клиентским приложением Microsoft Word.

Общие сведения о службах автоматизации Word

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

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

Спасибо за ваш отзыв!

×