Artigo: 268016 - Última revisão: quarta-feira, 10 de Janeiro de 2007 - Revisão: 5.4

O Internet Explorer não é possível abrir um ficheiro de suplemento do Excel (*.xla)

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Quando navegar para um ficheiro Add-in Microsoft Excel (*.xla) a partir de uma página Web durante a execução do Internet Explorer, falha ao carregar o suplemento e Internet Explorer apresenta um aviso de que a página que está a procurar actualmente não está disponível. O problema ocorre quando abrir o suplemento com o protocolo HTTP mas não com o protocolo FILE.

Causa

O aviso ocorre porque o suplemento do Excel (XLA) é realmente um livro do Excel (*.xls) que não contenha quaisquer folhas de cálculo. A única parte do ficheiro que é utilizado pelo Excel é o Visual Basic para Applications (VBA) project subarmazenamento, que contém o código de suplemento (VBA). No entanto, uma vez que um XLA é apenas um XLS em Disfarce, partilha o mesmo CLSID como um livro do Excel ("{00020820-0000-0000-C000-000000000046}") e é representado pelo mesmo tipo de MIME (Multipurpose Internet Mail Extensions) ("application/vnd.ms-excel").

Internet Explorer versões 3.0 e posteriores suportam activação no local de objectos de documento ActiveX (ADO) dentro do Web browser. Uma vez que um XLA tem o mesmo CLSID como um livro do Excel, Internet Explorer tenta carregar um XLA como um livro incorporáveis. Uma vez que o XLA contém não folhas de cálculo para edição no local, a incorporação falha e Internet Explorer apresenta o aviso. A instância em execução do Excel que foi iniciado para a incorporação pode encerrar imediatamente ou ficam visível. No entanto, devido a activação directa falhou, parece sem quaisquer barras de ferramentas ou menus.

Internet Explorer depende o MIME escrever definição de documentos que são devolvidos de um servidor para saber como activar a página para visualização. Se um servidor HTTP devolve um tipo de conteúdo MIME de "application/vnd.ms-excel" para uma página pedida, Internet Explorer tenta carregar o conteúdo do ficheiro como um Excel livro. Por predefinição, serviços de informação Internet (IIS) associa a extensão *.xla com este tipo MIME, isso hiperligações para ficheiros XLA normalmente resultam em comportamento descrito.

Resolução

Para evitar o problema de abrir o suplemento utilizando o protocolo HTTP, a página Web pode utilizar scripts do lado do cliente para iniciar o Microsoft Excel através de automatização e, em seguida, carregar o XLA a partir de um URL. Os passos seguintes demonstram esta técnica:
  1. Criar um novo ficheiro de texto no bloco de notas e adicionar o seguinte código:
    <HTML>
    <BODY>
    Press the button to start Excel and load an XLA.
    
    <SCRIPT LANGUAGE="JScript">
    function LoadMyXLA()
    {
      var oXL = new ActiveXObject("Excel.Application");  
      var oAddin = oXL.Workbooks.Open("C:\\Test.xla");
      oAdd.RunAutoMacros(1);
      oXL.Visible = true;
      oXL.UserControl = true;
    }
    </SCRIPT>
    <P><INPUT ID=button1 TYPE=button 
       VALUE="Load XLA" ONCLICK="LoadMyXLA()">
    </BODY>
    </HTML>
    					
  2. Substitua a cadeia transmitida para o método Abrir com o caminho para o XLA (um caminho fixo ou um URL).
  3. Guardar o ficheiro de texto e mude o nome com uma extensão HTM, em seguida, abra-a no Internet Explorer e clique no botão. Tenha em atenção que Excel arranca numa janela separada e que o XLA está carregado.

Mais Informação

Suplementos de Excel (*.xla) não suportam a incorporação e não podem ser abertos no interior do Internet Explorer. Os utilizadores finais não são abertos normalmente XLAs; em vez disso abrirem um XLS que (se necessário) carrega XLAs um ou mais durante o arranque. Apenas em casos raros um utilizador ter de iniciar um XLA directamente. Nestas situações, código de script pode ser utilizado se o ficheiro está a ser iniciado através do Internet Explorer.

Automatização do Excel a partir do script não funciona, no entanto, se o computador cliente foi definido para alta segurança ou se a opção "Inicializar e script de controlos ActiveX não marcados como seguros para processamento de scripts" foi definida para desactivar. Estes clientes tem de reduzir a segurança para "Pedir" para poder optar por executar o código de script e abrir o XLA. XLAs e o Excel automatização não são seguros para processamento de scripts por predefinição.

Para mais informações sobre como alterar programaticamente estas opções do Internet Explorer de um controlo fidedigno ou o programa de configuração utilitário (mas não script), clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
182569  (http://support.microsoft.com/kb/182569/ ) Entradas de registo para utilizadores avançados de zonas de segurança do Internet Explorer

Outras soluções alternativas e considerações sobre

Se scripts não é uma solução que se ajuste a estrutura da Web, pode tentar evitar o problema através de alterações ao registo e modificação de XLA o ficheiro propriamente dito. Isto tem de ser efectuado fora do Internet Explorer ou ASP (Active Server Pages) e não é uma solução viável para aplicativos da Web onde o ambiente de cliente não pode ser controlado. O debate seguinte explica detalhadamente a causa do problema e o que deve fazer para evitar o problema.

Dado que o Internet Explorer utiliza o tipo MIME especificado pelo servidor durante uma operação de HTTP GET, tem de impedir que o IIS (ou o servidor Web com o qual está a comunicar) associar a extensão *.xla o tipo de MIME "application/vnd.ms-excel". O IIS guarda estas informações nas definições de propriedade para a pasta da Web (ou seja, na metabase). Para alterar o comportamento do seu Web site do IIS, terá de editar a metabase. Para efectuar este procedimento para o IIS versões 4.0 e 5.0, pode utilizar os seguintes passos:
  1. Inicie o o Gestor de serviços Internet informações.
  2. Clique com o botão direito do rato na pasta que contém o suplemento em Web Site predefinido e escolha Propriedades no menu pendente.
  3. Seleccione o separador Cabeçalhos de HTTP e clique em Tipos de ficheiro na secção de mapeamento MIME.
  4. Clique em novo tipo . Especifique .xla para a Extensão associada e texto/simples para o Tipo de conteúdo (MIME) . Clique em OK para adicionar o tipo de ficheiro.
  5. Clique em OK para fechar a caixa de diálogo Tipos de ficheiro e, em seguida, clique em OK para fechar a caixa de diálogo Propriedades da pasta .

    Nota : o servidor de IIS A poderá ter de ser encerrado e reiniciado para que as alterações entrem em vigor.
Para ficheiros abertos localmente ou ficheiros abertos num servidor da Web não especificou um tipo de MIME, Internet Explorer utiliza o CLSID do ficheiro próprio para associar um servidor e carregar o ficheiro. Uma vez que um XLA é o mesmo um XLS, o CLSID para o armazenamento de raiz é um livro do Excel (Excel.Sheet.8). Para impedir que o Internet Explorer utilizando este CLSID, terá de remover do ficheiro utilizando OLE Structured armazenamento APIs. Isto não deverá afectar a funcionalidade do ficheiro no Excel, mas se o ficheiro for modificado no Excel, o CLSID é re-inserted no ficheiro.

O código de Microsoft Visual C++ seguinte mostra como substituir o CLSID de armazenamento principal com um nulo CLSID:
#include <windows.h>
int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
   LPSTR pszCmdLine, int nCmdShow)
{
  WCHAR wszFile[MAX_PATH];
  CHAR  szFile[MAX_PATH];
  szFile[0] = 0;

  OPENFILENAME    ofn;
  ZeroMemory(&ofn, sizeof(OPENFILENAME));

  if (FAILED(CoInitialize(NULL)))
    return -1;

  ofn.lStructSize      = sizeof(OPENFILENAME);
  ofn.lpstrFilter      = "Microsoft Excel Addins (*.xla)\0*.xla\0\0";
  ofn.nFilterIndex     = 1L;
  ofn.lpstrDefExt      = "xla";
  ofn.lpstrFile        = szFile;
  ofn.nMaxFile         = MAX_PATH;
  ofn.Flags            = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST;

  if (GetOpenFileName(&ofn) && (szFile[0] != '\0'))
  {
		
    if (!MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED,
           szFile, -1, wszFile, MAX_PATH))
    {
       MessageBox(NULL, "Can't convert to Unicode!",
          "XlaClsid", MB_ICONSTOP | MB_SETFOREGROUND);
       return -2;
    }

    IStorage* pstg = NULL;
    HRESULT hr = StgOpenStorage(wszFile, NULL,
             STGM_READWRITE | STGM_SHARE_EXCLUSIVE, NULL, 0, &pstg);
    if (SUCCEEDED(hr) && pstg)
    {			
       pstg->SetClass(GUID_NULL);
       pstg->Release();
       MessageBox(NULL, "Call succeeded. CLSID has been stripped.",
          "XlaClsid", MB_ICONINFORMATION | MB_SETFOREGROUND);
    }
    else
    {
       MessageBox(NULL, "Unable to open file. It may be in use.",
          "XlaClsid", MB_ICONSTOP | MB_SETFOREGROUND);
    }
    
  }

  CoUninitialize();
  return 0;
}
				
NOTA: Internet Explorer não verifica o CLSID do ficheiro de armazenamento estruturado se o XLA é aberto a partir da barra endereço, mas verifica se o XLA é referenciado numa hiperligação. Enquanto pode alterar este comportamento em futuras versões do Internet Explorer, não deve dependem do comportamento actual e forgo remover o CLSID do XLA.

Se CLSID do ficheiro foi removido e o servidor não foi especificado um tipo de MIME, o Internet Explorer, em seguida, utiliza a extensão de ficheiro para iniciar o Excel e carregar o XLA. Dependendo da configuração do registo no sistema cliente, o ficheiro ainda poderá ser aberto para incorporar, pelo que pode ser necessário modificar o registo de cliente. As chaves de registo de interesse são:
   HKEY_CLASSES_ROOT\.xla
				
- e -
   HKEY_CLASSES_ROOT\Excel.Addin
				
é necessário certificar-se que não existe nenhum valor de "Tipo de conteúdo" especificado nestas chaves de registo porque as chaves podem re-direct do Internet Explorer para um tipo de MIME e de existem novamente para o livro CLSID. Além disso, a chave Excel.Addin pode conter uma subchave CLSID que também re-directs Internet Explorer para utilizar a incorporação. Esta chave deve ser mudar o nome ou removida para impedir que o Internet Explorer localizar o CLSID.

Se todos os passos anteriores forem seguidos, o Internet Explorer não conseguirão localizar um CLSID para o tipo de ficheiro e irá carregar o ficheiro com um comando de ShellExecute . Este é executado o ficheiro como se fez duplo o utilizador tinha clique-lo a partir do Internet Explorer.

Referências

Para obter informações adicionais sobre tipos de MIME e Office documentos, clique números de artigo seguinte seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
199841  (http://support.microsoft.com/kb/199841/ ) Mostrar como: Utilizar o Excel no IE com tipos de MIME de resultados de ASP
266263  (http://support.microsoft.com/kb/266263/ ) Erro: Word 2000 e Excel 2000 Mostrar ASP origem quando utilizar o tipo de MIME a sequência de dados
247389  (http://support.microsoft.com/kb/247389/ ) IIS: Como desactivar a colocação em cache de tipos de MIME específicos

A informação contida neste artigo aplica-se a:
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Internet Explorer 3.0
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.5
Palavras-chave: 
kbmt kbprb kbprogramming KB268016 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 268016  (http://support.microsoft.com/kb/268016/en-us/ )