Resumo

Os programadores podem utilizar a Automatização no Microsoft Office para criar soluções personalizadas que utilizam as capacidades e as funcionalidades incorporadas no produto do Office. Embora esse desenvolvimento programático possa ser implementado num sistema cliente com relativa facilidade, podem ocorrer várias complicações se a Automatização ocorrer a partir de código do lado do servidor, como o Microsoft Active Server Pages (ASP), ASP.NET, DCOM ou um serviço do Windows NT.Este artigo aborda as complicações que os programadores podem enfrentar. O artigo também oferece alternativas à Automatização que podem acelerar o desempenho. No entanto, os programadores devem estar cientes de que as sugestões que este artigo fornece são apenas para fins informativos. A Microsoft não recomenda nem suporta a Automatização do lado do servidor do Office.

Nota: Neste contexto, o Access Database Engine Redistributable e o Access Runtime são considerados componentes do Microsoft Office. O termo "lado do servidor" também se aplica ao código que está em execução numa estação de trabalho do Windows, se o código estiver a ser executado a partir de uma estação de trabalho do Windows que não seja a estação interativa do utilizador com sessão iniciada. Por exemplo, o código que é iniciado pelo Programador de Tarefas na conta SYSTEM é executado no mesmo ambiente que o código ASP "do lado do servidor" ou como código DCOM. Por conseguinte, podem ocorrer muitos dos problemas descritos neste artigo. Para obter mais informações sobre estações de trabalho do Windows e sobre COM, consulte a secção "Mais Informações" e a secção "Referências".

Mais Informações

Todas as versões atuais do Microsoft Office foram concebidas, testadas e configuradas para serem executadas como produtos de utilizador final numa estação de trabalho cliente. Assumem um perfil de utilizador e ambiente de trabalho interativo. Não fornecem o nível de reentraência ou segurança necessário para satisfazer as necessidades dos componentes do lado do servidor que foram concebidos para serem executados sem supervisão.Atualmente, a Microsoft não recomenda nem suporta a Automatização de aplicações do Microsoft Office a partir de qualquer componente ou aplicação cliente não autónoma e não interativa (incluindo ASP, ASP.NET, DCOM e Serviços NT), porque o Office pode apresentar um comportamento instável e/ou um impasse quando o Office é executado neste ambiente.Se estiver a criar uma solução que é executada num contexto do lado do servidor, deve tentar utilizar componentes que tenham sido tornados seguros para execução automática. Em alternativa, deve tentar encontrar alternativas que permitam, pelo menos, uma parte do código executar o lado do cliente. Se utilizar uma aplicação do Office a partir de uma solução do lado do servidor, a aplicação não terá muitas das capacidades necessárias para ser executada com êxito. Além disso, correrá riscos com a estabilidade da sua solução global.

Problemas ao utilizar a Automatização do lado do servidor do Office

Os programadores que tentam utilizar o Office numa solução do lado do servidor têm de estar cientes de cinco áreas principais em que o Office se comporta de forma diferente do previsto devido ao ambiente. Se o código for executado com êxito, tem de resolver estes problemas e minimizar os respetivos efeitos o máximo possível. Considere estes problemas cuidadosamente ao criar a sua aplicação. Uma solução não consegue resolver todos os problemas. Os designs diferentes exigem que dê prioridade aos elementos de forma diferente.

  • Identidade do Utilizador: as aplicações do Office assumem uma identidade de utilizador quando as aplicações são executadas, mesmo quando a Automatização inicia as aplicações. As aplicações tentam inicializar barras de ferramentas, menus, opções, impressoras e alguns suplementos com base nas definições do ramo de registo do utilizador para o utilizador que inicia a aplicação. Muitos serviços são executados em contas que não têm perfis de utilizador (como a conta SYSTEM ou as contas IWAM_[servername]). Por conseguinte, o Office pode não inicializar corretamente no arranque. Nesta situação, o Office devolve um erro na função CreateObject ou na função CoCreateInstance. Mesmo que a aplicação do Office possa ser iniciada, outras funções poderão não funcionar corretamente se não existir nenhum perfil de utilizador.

  • Interatividade com o ambiente de trabalho: as aplicações do Office assumem que estão a ser executadas num ambiente de trabalho interativo. Em algumas circunstâncias, as aplicações podem ter de ser tornadas visíveis para que determinadas funções de Automatização funcionem corretamente. Se ocorrer um erro inesperado ou se for necessário um parâmetro não especificado para concluir uma função, o Office foi concebido para pedir ao utilizador uma caixa de diálogo modal que pergunta ao utilizador o que o utilizador quer fazer. Não é possível dispensar uma caixa de diálogo modal num ambiente de trabalho não interativo. Por conseguinte, esse thread deixa de responder (bloqueia) indefinidamente. Embora determinadas práticas de codificação possam ajudar a reduzir a probabilidade deste problema, estas práticas não podem impedir totalmente o problema. Só este facto torna a execução de Aplicações do Office a partir de um ambiente do lado do servidor arriscada e não suportada.

  • Reentraência e escalabilidade: os componentes do lado do servidor têm de ser componentes COM com múltiplos threads altamente reentrrantes e com sobrecarga mínima e débito elevado para vários clientes. As aplicações do Office são, em quase todos os aspetos, exatamente o oposto. As aplicações do Office são servidores de Automatização baseados em STA que não são reentrrantes, concebidos para fornecer funcionalidades diversificadas, mas intensivas em termos de recursos, para um único cliente. As aplicações oferecem pouca escalabilidade como uma solução do lado do servidor. Além disso, as aplicações têm limites fixos para elementos importantes, como a memória. Estes não podem ser alterados através da configuração. Mais importante ainda, as aplicações utilizam recursos globais, como ficheiros mapeados por memória, suplementos globais ou modelos e servidores de Automatização partilhados. Isto pode limitar o número de instâncias que podem ser executadas em simultâneo e pode levar a condições de corrida se as aplicações estiverem configuradas num ambiente multi-cliente. Os programadores que planeiam executar mais do que uma instância de qualquer aplicação do Office ao mesmo tempo têm de considerar o "agrupamento" ou serializar o acesso à aplicação do Office para evitar potenciais impasses ou danos em dados.

  • Resiliência e estabilidade: o Office 2000, o Office XP, o Office 2003 e o Office 2007 utilizam a tecnologia Microsoft Windows Installer (MSI) para facilitar a instalação e reparação automática para um utilizador final. O MSI apresenta o conceito de "instalar na primeira utilização". Isto permite que as funcionalidades sejam instaladas ou configuradas dinamicamente no tempo de execução do sistema ou com mais frequência para um determinado utilizador. Num ambiente do lado do servidor, isto reduz o desempenho e aumenta a probabilidade de aparecer uma caixa de diálogo que pede ao utilizador para aprovar a instalação ou para fornecer um disco de instalação. Embora isto tenha sido concebido para aumentar a resiliência do Office como um produto de utilizador final, a implementação de capacidades MSI do Office é contraproducente num ambiente do lado do servidor. Além disso, a estabilidade do Office em geral não pode ser assegurada quando o Office é executado do lado do servidor porque não foi concebido ou testado para este tipo de utilização. A utilização do Office como componente de serviço num servidor de rede pode reduzir a estabilidade desse computador e, por conseguinte, pode reduzir a estabilidade de toda a sua rede.

  • Segurança do lado do servidor: as aplicações do Office nunca foram concebidas para utilização do lado do servidor. Por conseguinte, as aplicações do Office não têm em consideração os problemas de segurança que os componentes distribuídos enfrentam. O Office não autentica pedidos recebidos. O Office também não o protege de executar involuntariamente macros ou de iniciar outro servidor que possa executar macros a partir do código do lado do servidor. Não abra ficheiros carregados para o servidor a partir de um Web site anónimo. Com base nas definições de segurança que foram definidas pela última vez, o servidor pode executar macros num contexto de Administrador ou Sistema com privilégios completos e, por conseguinte, pode comprometer a sua rede. Além disso, o Office utiliza muitos componentes do lado do cliente (como MAPI Simples, WinInet e MSDAIPP) que podem colocar em cache informações de autenticação de cliente para acelerar o processamento. Se o Office estiver a ser automatizado do lado do servidor, uma instância poderá atender mais do que um cliente. Se as informações de autenticação tiverem sido colocadas em cache para essa sessão, um cliente pode utilizar as credenciais em cache de outro cliente. Por conseguinte, o cliente pode obter permissões de acesso não concedidas ao representar outros utilizadores.

Além dos problemas técnicos, também tem de considerar problemas de licenciamento. As diretrizes de licenciamento atuais impedem que as aplicações do Office sejam utilizadas num servidor para atender pedidos de cliente, a menos que esses próprios clientes tenham cópias licenciadas do Office. A utilização da Automatização do lado do servidor para fornecer funcionalidades do Office a estações de trabalho não licenciadas não é abrangida pelo Contrato de Licença de Utilizador Final (EULA).Além destes problemas, pode ocorrer um dos seguintes erros comuns quando tenta automatizar o lado do servidor do Office:

  • A função CreateObject e a função CoCreateInstance devolvem uma das seguintes mensagens de erro de tempo de execução e não podem ser iniciadas para Automatização.

    Mensagem 1

    Erro de tempo de execução "429": O componente ActiveX não consegue criar o objeto

    Mensagem 2

    Erro de tempo de execução "70": Permissão negada

    Mensagem 3

    CO_E_SERVER_EXEC_FAILURE (0x80080005): Falha na execução do servidor

    Mensagem 4

    E_ACCESSDENIED (0x80070005): Acesso negado

  • Quando abre um documento do Office, recebe uma das seguintes mensagens de erro.

    Mensagem 1

    Erro de tempo de execução "5981" (0x800A175D): Não foi possível abrir o armazenamento de macros

    Mensagem 2

    Erro de tempo de execução "1004": O método '~' do objeto '~' falhou

  • A função CreateObject e a função CoCreateInstance deixam de responder e nunca são concluídas ou demoram muito tempo a regressar. Em alguns servidores, a criação é rápida, mas são apresentados erros 1004 no registo de eventos do Windows que indicam que a aplicação foi parada.

  • Determinadas funções falham inesperadamente ou deixam de responder indefinidamente devido a um alerta de utilizador ou a outra caixa de diálogo que requer atenção do utilizador.

  • A execução de vários pedidos ou testes de stress faz com que o código falhe, deixe de responder ou falhe ao criar ou terminar uma aplicação do Office. Quando isto ocorre, o processo é deixado em execução na memória e não pode ser terminado ou todas as instâncias da aplicação que está a ser automatizada falham a partir desse ponto.

Outros problemas ou mensagens podem aparecer além dos listados aqui, mas estes problemas normalmente ocorrem como resultado dos cinco principais problemas listados anteriormente neste artigo. 

Alternativas à Automatização do lado do servidor

A Microsoft recomenda vivamente que os programadores encontrem alternativas à Automatização do Office se precisarem de desenvolver soluções do lado do servidor. Devido às limitações à estrutura do Office, as alterações à configuração do Office não são suficientes para resolver todos os problemas. A Microsoft recomenda vivamente uma série de alternativas que não exigem que o Office seja instalado do lado do servidor e que podem realizar tarefas mais comuns de forma mais eficiente e rápida do que a Automatização. Antes de envolver o Office como um componente do lado do servidor no seu projeto, considere alternativas.A maioria das tarefas de Automatização do lado do servidor envolve a criação ou edição de documentos. O Office 2007 suporta novos formatos de ficheiro Open XML que permitem aos programadores criar, editar, ler e transformar conteúdos de ficheiros no lado do servidor. Estes formatos de ficheiro utilizam o espaço de nomes System.IO.Package.IO no Microsoft .NET 3.x Framework para editar ficheiros do Office sem utilizar as próprias aplicações cliente do Office. Este é o método recomendado e suportado para processar alterações nos ficheiros do Office a partir de um serviço.Os formatos de ficheiro Open XML são um padrão público. 

A Microsoft fornece um SDK para manipular formatos de ficheiro Open XML a partir do .NET 3.x Framework. Para obter mais informações sobre o SDK e sobre como utilizar o SDK para criar ou editar ficheiros Open XML, visite os seguintes Web sites da Microsoft Developer Network (MSDN):

Documentação do SDK Open XML

Como: Manipular Documentos de Formatos Open XML do Office

Manipular ficheiros Word 2007 com o Modelo de Objeto Open XML (Parte 1 de 3)

Manipular ficheiros Word 2007 com o Modelo de Objeto Open XML (Parte 2 de 3)

Manipular ficheiros Word 2007 com o Modelo de Objeto Open XML (Parte 3 de 3)

Manipular ficheiros do Excel 2007 e do PowerPoint 2007 com o Modelo de Objeto Open XML (Parte 1 de 2)

Manipular ficheiros do Excel 2007 e do PowerPoint 2007 com o Modelo de Objeto Open XML (Parte 2 de 2)

Criar Server-Side Soluções de Geração de Documentos Com o Modelo de Objeto Open XML (Parte 1 de 2)

Criar Server-Side Soluções de Geração de Documentos Com o Modelo de Objeto Open XML (Parte 2 de 2)

Ao transmitir em fluxo ficheiros Open XML a partir do ASP ou do ASP.NET, tem de fornecer o tipo de Extensão de Correio da Internet (MIME) Multiusos correto para o conteúdo transmitido em fluxo. Para obter uma lista dos tipos de MIME para ficheiros do Office 2007, visite o seguinte Web site:

Tipos MIME de Formato de Ficheiro do Office 2007 para Transmissão em Fluxo de Conteúdos HTTP

Se estiver a filtrar apenas clientes pré-Office 2007 e não quiser exigir a utilização do Open XML na solução, pode utilizar outros formatos de ficheiro do Office não binários, como HTML, XML e RTF. Em seguida, pode transmitir estes ficheiros em fluxo para um cliente através de um tipo mime para que o texto resultante seja apresentado no Office. O documento pode ser editado, guardado e até mesmo devolvido ao servidor com o ASP no servidor.Para obter mais informações sobre qualquer um destes tópicos e exemplos que mostrem como implementá-los, clique nos seguintes números de artigo para ver os artigos na Base de Dados de Conhecimento Microsoft:

198703 Como automatizar o Excel a partir de um VBScript do lado do cliente

How To Query and Update Excel Data Using ADO From ASP

286023 Como utilizar um componente VB ActiveX para automatização Word a partir do Internet Explorer  

Se a sua empresa exigir a criação do lado do servidor dos formatos de ficheiro binário do Office 97, Office 2000, Office XP e Office 2003, os fornecedores de terceiros oferecem componentes que podem ajudá-lo. A Microsoft não fornece tais componentes, pelo que terá de criar uma solução manualmente ou comprar uma a um fornecedor de terceiros. Estão disponíveis muitos produtos de terceiros diferentes. Deve investigar cada solução para corresponder melhor o fornecedor às suas necessidades empresariais.

Se quiser criar a sua própria solução que edite diretamente os formatos de ficheiro binário do Office 97, Office 2000, Office XP e Office 2003, pode obter as especificações de formato de ficheiro gratuitamente nos termos do Microsoft Open Specification Promise (OSP). Não existe suporte técnico disponível para a documentação ou para os produtos que criar, mas a documentação está disponível. 

As soluções do lado do servidor também podem permitir que os utilizadores carreguem ficheiros e, em seguida, pedir ao servidor para compor os ficheiros para visualização na Web ou noutros suportes de dados. ATualmente, a Microsoft está a trabalhar para oferecer essas funcionalidades e fornece uma versão antecipada desta capacidade no Microsoft Serviços do Excel. Serviços do Excel é uma nova tecnologia de servidor que está incluída no Microsoft Office SharePoint Server 2007 e que lhe permite carregar, calcular e apresentar livros do Excel no Office SharePoint Server 2007. Para obter mais informações sobre Serviços do Excel, visite os seguintes Web sites da Microsoft Developer Network (MSDN):

Descrição Geral do Serviços do Excel

Instruções: Desenvolver uma Aplicação Personalizada com o Excel Web Services

Criar Aplicações Empresariais utilizando formatos Serviços do Excel e Open XML do Office Word Automation Services é uma nova aplicação de serviço no SharePoint Server 2010. Word Automation Services fornece uma conversão automática do lado do servidor de documentos em formatos suportados pela aplicação cliente microsoft Word.

Descrição Geral dos Serviços de Automatização do Word

Introdução aos Serviços de Automatização do Word Tem de avaliar quais das opções que este artigo descreve se adequam às suas necessidades e a melhor forma de implementar a sua solução. As informações fornecidas por este artigo não são garantidas para resolver todos os problemas de todos os clientes. É encorajado a testar a sua solução cuidadosamente antes de implementar a solução.

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.