ID do 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 arquivo 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 | Recolher tudo

Sintomas

Quando você navegar para um arquivo Add-in do Microsoft Excel (*.xla) de uma página da Web enquanto estiver executando o Internet Explorer, Falha ao carregar o add-in e Internet Explorer exibe um aviso de que a página que você está procurando é indisponível no momento. O problema ocorre quando você abre o add-in com o protocolo HTTP, mas não com o protocolo de arquivo.

Causa

O aviso ocorre porque o suplemento do Excel (XLA) é realmente um Excel (*.xls) que não contenha qualquer planilhas. A única parte do arquivo que é usado pelo Excel é o Visual Basic for Applications (VBA) sub-storage de projeto, que contém o código de add-in (VBA). No entanto, como um XLA é apenas um XLS disfarçado, ele compartilha o mesmo CLSID como uma pasta de trabalho do Excel ("{00020820-0000-0000-C000-000000000046}") e é representada pelo mesmo tipo de MIME (Multipurpose Internet Mail Extensions) ("aplicativo/vnd.ms-excel").

Internet Explorer versões 3.0 e posterior suportam ativação in-loco de objetos de documento ActiveX (ADO) dentro do navegador da Web. Porque um XLA tem o mesmo CLSID como uma pasta de trabalho do Excel, Internet Explorer tenta carregar um XLA como uma pasta de trabalho Incorporável. Porque o XLA contém não planilhas para edição in-loco, a incorporação falhar e Internet Explorer exibe o aviso. A instância em execução do Excel que foi iniciado para a incorporação pode tanto desligar imediatamente ou se tornam visível. No entanto, devido a ativação in-loco com falha, ele aparece sem barras de ferramentas ou menus.

Internet Explorer se baseia em MIME digite configuração de documentos que são retornados de um servidor para saber como ativar a página. Se um servidor HTTP retorna um tipo de conteúdo MIME de "aplicativo/vnd.ms-excel" para uma página solicitada, o Internet Explorer tenta carregar o conteúdo do arquivo como um Excel pasta de trabalho. Por padrão, Internet Information Services (IIS) associa a extensão *.xla esse tipo MIME, para que os hiperlinks para arquivos XLA normalmente resultam em comportamento descrito.

Resolução

Para evitar o problema de abrir o suplemento usando o protocolo HTTP, sua página da Web pode usar scripts do lado do cliente para iniciar o Microsoft Excel através da automação e, em seguida, carregar o XLA de uma URL. As etapas a seguintes demonstram essa técnica:
  1. Crie um novo arquivo de texto no bloco de notas e adicione o código a seguir:
    <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 seqüência passada para o método Open com o caminho para seu XLA (um caminho fixo ou uma URL).
  3. Salvar o arquivo de texto e renomeá-lo com uma extensão de HTML, e em seguida, abra-o no Internet Explorer e clique no botão. Observe que o Excel é inicializado em uma janela separada e que o XLA é carregado.

Mais Informações

Excel suplementos (*.xla) não oferecem suporte à incorporação de objetos e não podem ser abertos dentro do Internet Explorer. Os usuários finais normalmente não abra XLAs; em vez disso, eles abrem um XLS que (se necessário) carrega XLAs um ou mais durante a inicialização. Somente em casos raros um usuário precisa iniciar um XLA diretamente. Nessas situações, código de script pode ser usado se o arquivo deve ser iniciado através do Internet Explorer.

Automação do Excel de script não funciona, no entanto, se o computador cliente tiver sido definido para alta segurança ou se a opção "Inicializar e scripts de controles ActiveX não marcados como seguros para script" tiver sido definida como desativado. Esses clientes devem reduzir a segurança para "Aviso" para poder optar por executar o código de script e abrir o XLA. XLAs e Excel automação não são seguros para script por padrão.

Para obter informações sobre como alterar essas opções do Internet Explorer programaticamente de um controle confiável ou instalação utilitário (mas não script), clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
182569  (http://support.microsoft.com/kb/182569/ ) Entradas de registro para usuários avançados das zonas de segurança do Internet Explorer

Outras considerações e soluções alternativas

Se o script não é uma solução que se adapta seu design da Web, você pode tentar evitar o problema por meio de alterações no registro e modificação do XLA arquivo propriamente dito. Isso deve ser feito fora do Internet Explorer ou Active Server Pages (ASP) e não é uma solução viável para aplicativos da Web onde o ambiente do cliente não pode ser controlado. Discussão a seguir explica mais detalhadamente a causa do problema e o que você deve fazer para evitar o problema.

Como o Internet Explorer usa o tipo MIME especificado pelo servidor durante uma operação de HTTP GET, você precisa impedir o IIS (ou o servidor Web com o qual você está se comunicando) associar a extensão *.xla o tipo MIME "aplicativo/vnd.ms-excel". IIS salva essas informações nas configurações de propriedade para a pasta da Web (isto é, na metabase). Para alterar o comportamento do seu site do IIS, você precisa editar a metabase. Para fazer isso para o IIS versões 4.0 e 5.0, você pode usar as seguintes etapas:
  1. Inicie o o Gerenciador de serviços de informações da Internet.
  2. Clique com o botão direito a pasta que contém o suplemento em Site padrão e escolha Propriedades no menu drop-down.
  3. Selecione a guia Cabeçalhos HTTP e clique em Tipos de arquivo na seção do mapa MIME.
  4. Clique em novo tipo . Especifica .xla para a Extensão associada e texto/sem formatação para o Tipo de conteúdo (MIME) . Clique em OK para adicionar o tipo de arquivo.
  5. Clique em OK para fechar a caixa de diálogo Tipos de arquivo e clique em OK para fechar a caixa de diálogo Propriedades da pasta .

    Observação : O IIS servidor pode precisar ser desligado e reiniciado para que as alterações tenham efeito.
Para arquivos abertos localmente ou para arquivos abertos em um servidor Web que não especificou um tipo de MIME, Internet Explorer usa o CLSID do próprio arquivo para associar um servidor e carregar o arquivo. Como um XLA é o mesmo um XLS, o CLSID para o armazenamento de raiz é uma pasta de trabalho Excel (Excel.Sheet.8). Para impedir que o Internet Explorer usando esta CLSID, você precisa removê-lo do arquivo usando OLE Structured armazenamento APIs. Isso não deve afetar a funcionalidade do arquivo no Excel, mas se o arquivo for modificado no Excel, o CLSID é re-inserted para o arquivo.

O código de Microsoft Visual C++ a seguir mostra como substituir o CLSID do armazenamento principal com um NULL 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;
}
				
Observação Internet Explorer não verifica o CLSID do arquivo de armazenamento estruturado se o XLA é aberto na barra de endereços, mas verificar se o XLA é referenciada em um hiperlink. Embora esse comportamento pode mudar em versões futuras do Internet Explorer, você não contam com o comportamento atual e forgo removendo o CLSID do XLA.

Se CLSID do arquivo foi removido e o servidor não foi especificado um tipo de MIME, o Internet Explorer, em seguida, usa a extensão de arquivo para iniciar o Excel e carregar o XLA. Dependendo da configuração do registro no sistema cliente, o arquivo ainda pode abrir para incorporação, para que modificação do registro do cliente pode ser necessárias. As chaves do registro de interesse são:
   HKEY_CLASSES_ROOT\.xla
				
- e -
   HKEY_CLASSES_ROOT\Excel.Addin
				
você precisa se certificar de que não há nenhum valor de 'Tipo de conteúdo' especificado nessas chaves do registro porque as chaves podem re-direct para um tipo de MIME e de back há para a pasta de trabalho de CLSID. Além disso, a chave Excel.Addin pode conter uma subchave CLSID que também re-directs Internet Explorer para usar incorporação. Essa chave deve ser renomeada ou removida para impedir que o Internet Explorer encontrar o CLSID.

Se todas as etapas anteriores são seguidas, o Internet Explorer será não é possível localizar um CLSID para o tipo de arquivo e carregará o arquivo com um comando ShellExecute . Isso executa o arquivo como se o usuário tivesse duas vezes ele do Internet Explorer.

Referências

Para obter informações adicionais sobre os tipos de MIME e Office documentos, clique no números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
199841  (http://support.microsoft.com/kb/199841/ ) COMO: Exibir ASP resultados usando o Excel no Internet Explorer com tipos de MIME
266263  (http://support.microsoft.com/kb/266263/ ) Erro: Word 2000 e Excel 2000 exibir ASP fonte ao usar tipo MIME para dados de fluxo
247389  (http://support.microsoft.com/kb/247389/ ) IIS: Como desativar o cache de tipos de MIME específicas

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 Edição de 128 Bits
  • 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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/ )