Iniciar sesión con Microsoft
Iniciar sesión o crear una cuenta
Hola:
Seleccione una cuenta diferente.
Tiene varias cuentas
Elija la cuenta con la que desea iniciar sesión.

Resumen

Los desarrolladores pueden usar automatización en Microsoft Office para crear soluciones personalizadas que usen las capacidades y las características que están integradas en el producto de Office. Aunque este tipo de desarrollo programático se puede implementar en un sistema cliente con relativa facilidad, se pueden producir una serie de complicaciones si la automatización se realiza a partir de código del lado servidor, como páginas de Microsoft Active Server (ASP), ASP.NET, DCOM o un servicio de Windows NT.

En este artículo se describen las complicaciones a las que pueden hacer frente los desarrolladores. El artículo también ofrece alternativas a la automatización que pueden acelerar el rendimiento. Los desarrolladores deben tener en cuenta, sin embargo, que las sugerencias que proporciona este artículo son solo con fines informativos. Microsoft no recomienda ni admite la automatización del lado del servidor de Office.

Nota: En este contexto, el motor de base de datos de Access redistribuible y Access Runtime se consideran componentes de Microsoft Office. El término "servidor" también se aplica al código que se ejecuta en una estación de trabajo de Windows, si el código se ejecuta desde una estación de trabajo de Windows que no sea la estación interactiva del usuario que ha iniciado sesión. Por ejemplo, el código iniciado por el Programador de tareas en la cuenta SYSTEM se ejecuta en el mismo entorno que el código ASP "de servidor" o como código DCOM. Por lo tanto, pueden producirse muchos de los problemas que describe este artículo. Para obtener más información sobre Las estaciones de trabajo de Windows y sobre COM, consulte la sección "Más información" y la sección "Referencias".

Más información

Todas las versiones actuales de Microsoft Office se han diseñado, probado y configurado para ejecutarse como productos de usuario final en una estación de trabajo cliente. Asumen un escritorio interactivo y un perfil de usuario. No proporcionan el nivel de reentrada o seguridad necesario para satisfacer las necesidades de los componentes de servidor diseñados para el funcionamiento desatendido.

Actualmente, Microsoft no recomienda y no admite la automatización de las aplicaciones de Microsoft Office desde cualquier componente o aplicación cliente no interactiva desatendida (incluidos SERVICIOS ASP, ASP.NET, DCOM y NT), porque Office puede presentar un comportamiento inestable o un interbloqueo cuando se ejecuta Office en este entorno.

Si está creando una solución que se ejecute en un contexto del lado servidor, debe intentar usar componentes que se han hecho seguros para la ejecución desatendida. O bien, debería intentar buscar soluciones alternativas que permitan que al menos una parte del código se ejecute en el cliente. Si usa una aplicación de Office desde una solución en el servidor, es posible que esta no tenga muchas de las capacidades necesarias para que se ejecute correctamente. Asimismo, correría riesgo con la estabilidad de la solución global.

Problemas con el uso de la automatización de Office en el servidor

Los desarrolladores que intenten usar Office en una solución de servidor deben saber que existen cinco áreas principales en las que Office se comporta de una manera diferente a la esperada debido al entorno. Para que el código se ejecute correctamente, debe solucionar estos problemas y minimizar sus efectos lo más posible. Tenga muy en cuenta estos problemas al crear su aplicación. Una solución no puede resolver todos los problemas. Distintos diseños requieren que establezca prioridades para los elementos de manera diferente.

  • Identidad de usuario: las aplicaciones de Office asumen una identidad de usuario al ejecutarse, aunque las haya iniciado la automatización. Las aplicaciones intentan iniciar las barras de herramientas, menús, opciones, impresoras y algunos complementos según la configuración del subárbol del Registro correspondiente al usuario que inicie la aplicación. Muchos servicios se ejecutan en cuentas que no tienen perfiles de usuario (como la cuenta SYSTEM o las cuentas IWAM_[NombreServidor]). Por lo tanto, es posible que Office no se inicialice al iniciar. En esta situación, Office devuelve un error en la función CreateObject o CoCreateInstance. Incluso si la aplicación de Office se puede iniciar, es posible que otras características no funcionen correctamente si no existe ningún perfil de usuario.

  • Interactividad con el escritorio: las aplicaciones de Office presuponen que se ejecutan en un escritorio interactivo. En algunos casos, es posible que las aplicaciones se tengan que hacer visibles para que algunas funciones de automatización se ejecuten correctamente. Si se produce un error no esperado o se requiere un parámetro no especificado para completar una función, Office está diseñado para preguntar al usuario qué desea hacer mediante un cuadro de diálogo modal. Un cuadro de diálogo modal no puede descartarse en un escritorio no interactivo. Por lo tanto, ese subproceso deja de responder (se bloquea) de manera indefinida. Aunque algunas prácticas de creación de código pueden ayudar a reducir la probabilidad de que esto suceda, no se puede evitar del todo. Solo por este motivo, la ejecución de aplicaciones de Office en un entorno de servidor resulta arriesgada e incompatible.

  • Reentrada y escalabilidad: los componentes de servidor tienen que ser componentes COM de subprocesos múltiples con alta capacidad de reentrada, con un mínimo de sobrecarga y un elevado rendimiento para muchos clientes. En casi todos los aspectos, las aplicaciones de Office son justo lo contrario. Las aplicaciones de Office son servidores de automatización sin reentrada basados en STA, diseñadas para proporcionar funcionalidad diversa pero consumidora de recursos para un único cliente. Las aplicaciones ofrecen poca escalabilidad como solución de servidor. Asimismo, las aplicaciones tienen límites fijos en cuanto a elementos importantes, como la memoria. Estos no se pueden modificar a través de la configuración. Lo que es más importante, las aplicaciones usan recursos globales, como archivos asignados en memoria, complementos o plantillas globales y servidores de automatización compartidos. Esto puede limitar el número de instancias que se ejecutan simultáneamente y puede resultar en condiciones de carrera si las aplicaciones se configuran en un entorno de varios clientes. Los desarrolladores que vayan a ejecutar más de una instancia de alguna aplicación de Office a la vez deben tener en cuenta la posibilidad de "agrupar" o serializar el acceso a la aplicación de Office para evitar posibles bloqueos o daños en los datos.

  • Resistencia y estabilidad: Office 2000, Office XP, Office 2003 y Office 2007 usan la tecnología de Microsoft Windows Installer (MSI) para que la instalación y reparación automática resulten más sencillas para el usuario final. MSI introduce el concepto de "instalación la primera vez que se utiliza". Esto permite que las características se instalen o configuren dinámicamente en el tiempo de ejecución del sistema o, más a menudo, para un usuario en particular. En un entorno de servidor, esto reduce el rendimiento y aumenta la probabilidad de que aparezca un cuadro de diálogo que pida al usuario la aprobación de la instalación o que proporcione un disco de instalación. Aunque esto se ha diseñado para aumentar la resistencia de Office como producto de usuario final, la implementación de las capacidades de MSI en Office resulta contraproducente en un entorno de servidor. Además, la estabilidad general de Office no se puede garantizar cuando se ejecute en el servidor porque no se diseñó ni probó para este tipo de uso. El uso de Office como un componente de servicio en un servidor de red puede reducir la estabilidad del equipo y, como consecuencia, de la red en general.

  • Seguridad del lado servidor: las aplicaciones de Office nunca se usaron en el lado del servidor. Por lo tanto, las aplicaciones de Office no tienen en cuenta los problemas de seguridad a los que se enfrentan los componentes distribuidos. Office no autentica las solicitudes entrantes. Office tampoco le protege de las macros que se ejecutan involuntariamente, ni de iniciar otro servidor que pueda ejecutar macros, desde el código del lado del servidor. No abra archivos cargados en el servidor desde un sitio web anónimo. En función de la configuración de seguridad que se estableció por última vez, el servidor puede ejecutar macros en un contexto de administrador o sistema con privilegios completos y, por tanto, puede comprometer su red. Además, Office usa muchos componentes del lado cliente (como MAPI simple, WinInet y MSDAIPP) que pueden almacenar en caché información de autenticación de cliente para acelerar el procesamiento. Si Office se está automatizando en el lado del servidor, una instancia puede servir a más de un cliente. Si la información de autenticación se ha almacenado en caché para esa sesión, un cliente puede usar las credenciales en caché de otro cliente. Por lo tanto, el cliente puede obtener permisos de acceso no concedidos suplantando a otros usuarios.

Además de los problemas técnicos, también debe tener en cuenta las licencias. Las directrices actuales sobre licencias no permiten que las aplicaciones de Office se usen en un servidor para dar servicio a solicitudes de clientes, a menos que esos clientes tengan copias con licencia de Office. Los términos de licencia no permiten la utilización de la automatización en el servidor para proporcionar funcionalidad de Office a estaciones de trabajo sin licencia.

Además de estos problemas, es posible que se produzcan uno de los siguientes errores comunes al intentar automatizar el servidor de Office:

  • Las funciones CreateObject o CoCreateInstance devuelven uno de los siguientes mensajes de error en tiempo de ejecución y no se puede iniciar para automatización.  

    Mensaje 1

    Error en tiempo de ejecución '429': el componente ActiveX no puede crear un objeto

    Mensaje 2

    Error '70' en tiempo de ejecución: permiso denegado

    Mensaje 3

    CO_E_SERVER_EXEC_FAILURE (0x80080005): Error en la ejecución de servidor

    Mensaje 4

    E_ACCESSDENIED (0x80070005): Acceso denegado

  • Al abrir un documento de Office, recibe uno de los siguientes mensajes de error.

    Mensaje 1

    Error en tiempo de ejecución '5981' (0x800A175D): No se pudo abrir el almacenamiento de macros

    Mensaje 2

    Error '1004' en tiempo de ejecución: error en el método '~' del objeto '~'

  • Las funciones CreateObject y CoCreateInstance dejan de responder y nunca finalizan, o tardan mucho tiempo para devolver los resultados. En algunos servidores, la creación es rápida, pero el error 1004 aparece en el registro de eventos de Windows que indican que la aplicación se detuvo.

  • En algunas funciones se produce un error inesperado o estas dejan de responder de manera indefinida debido a una alerta de usuario u otro cuadro de diálogo que requiere la atención del usuario.

  • La ejecución de varias solicitudes o pruebas de esfuerzo hace que el código dé error, deje de responder o se bloquee en la creación o terminación de una aplicación de Office. Cuando esto sucede, el proceso queda en ejecución en memoria y no se puede terminar o todas las instancias de la aplicación automatizada producen errores a partir de ese momento.

Es posible que aparezcan otros problemas o mensajes además de los que se enumeran aquí, pero estos problemas suelen producirse como resultado de los cinco problemas principales enumerados anteriormente en este artículo. 

Opciones alternativas a la automatización en el servidor

Microsoft recomienda encarecidamente que los desarrolladores busquen alternativas a la automatización de Office si necesitan desarrollar soluciones de servidor. Debido a las limitaciones del diseño de Office, los cambios en la configuración de Office no son suficientes para solucionar todos los problemas. Microsoft recomienda encarecidamente una variedad de alternativas que no requieren la instalación de Office en el servidor y que pueden realizar la mayoría de las tareas más comunes de manera más eficaz y rápida que con la automatización. Antes de implicar a Office como componente de servidor en su proyecto, tenga en cuenta las alternativas.

La mayoría de las tareas de automatización del lado servidor implican la creación o edición de documentos. Office 2007 admite nuevos formatos de archivo Open XML que permiten a los desarrolladores crear, editar, leer y transformar contenido de archivo en el servidor. Estos formatos de archivo usan el espacio de nombres System.IO.Package.IO en Microsoft .NET 3.x Framework para editar los archivos de Office sin usar las aplicaciones de cliente Office en sí. Este es el método recomendado y admitido para la gestión de cambios en los archivos de Office desde un servicio.

Los formatos de archivo Open XML son un estándar público. 


Microsoft proporciona un SDK para manipular formatos de archivo Open XML desde .NET 3.x Framework. Para más información sobre el SDK y cómo usarlo para crear o editar archivos Open XML, visite los siguientes sitios web de Microsoft Developer Network (MSDN):

Documentación del SDK de Open XML

Cómo: Manipular documentos con formatos Open XML de Office

Manipular archivos de Word 2007 con el modelo de objetos Open XML (parte 1 de 3)

Manipular archivos de Word 2007 con el modelo de objetos Open XML (parte 2 de 3)

Manipular archivos de Word 2007 con el modelo de objetos Open XML (parte 3 de 3)

Manipular archivos de Excel 2007 y PowerPoint 2007 con el modelo de objetos Open XML (parte 1 de 2)

Manipular archivos de Excel 2007 y PowerPoint 2007 con el modelo de objetos Open XML (parte 2 de 2)

Creación de soluciones de generación de documentos Server-Side mediante el modelo de objetos Open XML (parte 1 de 2)

Creación de soluciones de generación de documentos Server-Side mediante el modelo de objetos Open XML (parte 2 de 2)

Al transmitir archivos Open XML desde ASP o ASP.NET, debe proporcionar el tipo correcto de Extensión multipropósito de correo por Internet (MIME) para el contenido que desee transmitir. Para obtener un listado de los tipos MIME para los archivos de Office 2007, visite el siguiente sitio web:

Tipos MIME de formato de archivo de Office 2007 para streaming de contenido HTTP

Si solo se dirige a clientes anteriores a Office 2007 y no desea requerir el uso de Open XML en la solución, puede usar formatos de archivo de Office no binarios, como HTML, XML y RTF. Así, puede transmitir estos archivos a un cliente mediante un tipo MIME para que el texto resultante aparezca en Office. El documento se puede editar, guardar e incluso devolverse al servidor al usar de ASP en el servidor.

Para obtener más información sobre cualquiera de estos temas y ejemplos que muestran cómo implementarlos, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:

198703 Cómo automatizar Excel desde VBScript de cliente

Cómo consultar y actualizar datos de Excel con ADO de ASP

286023 Cómo utilizar un componente ActiveX de VB para automatización de Word desde Internet Explorer
 

Si su empresa requiere la creación en el servidor de los formatos de archivo binario de Office 97, Office 2000, Office XP y Office 2003, hay proveedores externos que ofrecen componentes que pueden ayudarlo. Microsoft no proporciona este tipo de componentes, por lo que tendrá que crear una solución usted mismo o comprar una de un proveedor externo. Hay muchos productos de terceros disponibles. Debería investigar cada solución que mejor se adecue a sus necesidades empresariales.

Si desea crear su propia solución que edite los formatos de archivo binario de Office 97, Office 2000, Office XP y Office 2003 directamente, puede obtener las especificaciones de formato de archivo de manera gratuita según los términos de Microsoft Open Specification Promise (OSP). No hay soporte técnico disponible para la documentación o los productos que usted crea, pero hay documentación disponible. 


Las soluciones del lado servidor también pueden permitir que los usuarios carguen archivos y, a continuación, que el servidor represente los archivos para verlos en la Web o en otros medios. Microsoft está trabajando actualmente para ofrecer estas características y proporciona una versión preliminar de esta funcionalidad en Microsoft Excel Services.

Excel Services es una nueva tecnología de servidor que se incluye en Microsoft Office SharePoint Server 2007 y que le permite cargar, calcular y mostrar libros de Excel en Office SharePoint Server 2007. Para más información sobre Excel Services, visite los siguientes sitios web de Microsoft Developer Network (MSDN):

Información general de Excel Services

Tutorial: Desarrollo de una aplicación personalizada con Servicios web de Excel

Crear aplicaciones empresariales con Excel Services y formatos XML abiertos de Office Word Automation Services es una nueva aplicación de servicio en SharePoint Server 2010. Word Automation Services proporciona una conversión desatendida en el servidor de documentos a formatos compatibles con la aplicación cliente Microsoft Word.

Introducción a los servicios de automatización de Word

Presentación de los servicios de automatización de Word Debe evaluar qué opción de las que se describen en este artículo satisface sus necesidades y cuál es la mejor manera de implementar la solución. No se garantiza que la información que se proporciona en este artículo solucione todos los problemas de todos los clientes. Se aconseja que realice pruebas exhaustivas de su solución antes de la implementación.

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a su experiencia?
Si presiona Enviar, sus comentarios se usarán para mejorar los productos y servicios de Microsoft. El administrador de TI podrá recopilar estos datos. Declaración de privacidad.

¡Gracias por sus comentarios!

×