Makale numarası: 268016 - Son Gözden Geçirme: 10 Ocak 2007 Çarşamba - Gözden geçirme: 5.4

Internet Explorer, bir Excel Eklentisi (*.xla) dosyası açılamıyor

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

ınternet Explorer'ı çalıştırırken bir Web sayfasından bir Microsoft Excel Eklentisi (*.xla) dosyasına gelin, eklentiyi yüklenmemesi ve ınternet Explorer aradığınız sayfa şu anda kullanılamaz durumda bir uyarı görüntüler. HTTP iletişim kuralı ancak değil DOSYA iletişim kuralını eklentisini açtığınızda, bu sorun oluşur.

Neden

Excel eklenti (XLA) gerçekten nedeniyle uyarı oluşur bir Excel çalışma içermeyen herhangi bir çalışma kitabı (*.xls). Eklenti (VBA) kodunu içeren sub-storage Applications (VBA) projesi için tek Excel tarafından kullanılan dosya Visual Basic parçasıdır. Bir XLA gizlenmiş olarak yalnızca bir XLS olduğundan, ancak, Excel çalışma kitabı olarak aynı CLSID paylaşımları ("{00020820-0000-0000-C000-000000000046}") ile aynı olan çok amaçlı ınternet Posta Uzantıları (MIME) türü gösterilir ("uygulama/vnd.ms-excel").

Internet Explorer sürüm 3.0 ve sonraki ActiveX Document nesneleri (ADO), Web tarayıcısı içinde etkinleştirme yerinde. Çünkü bir XLA aynı CLSID olarak bir Excel çalışma kitabı'nı, ınternet Explorer bir XLA embeddable çalışma kitabı olarak yüklemeye çalışır. XLA yerinde düzenlemeyi için hiçbir çalışma içerdiğinden, katıştırma başarısız olur ve ınternet Explorer uyarıyı görüntüler. Katıştırma için başlatıldı, Excel'in bir çalışan örneği, hemen kapanmasına ya da görünür hale gelir. Ancak, başarısız yerinde etkinleştirme nedeniyle, bu araç çubuklarını veya menüleri olmadan görünür.

ınternet Explorer MIME üzerinde dayanır ayarı belgelerin sayfayı görüntülemek için etkinleştirme nasıl sunucusundan döndürdü. HTTP sunucusu, istenen bir sayfa için bir MIME içerik türü "uygulama/vnd.ms-excel" döndürürse, ınternet Explorer gibi bir Excel dosyası içeriğini yüklemek çalışır çalışma kitabı. Böylece XLA dosyalarına köprü, genellikle'de anlatılan davranışı neden varsayılan olarak, ınternet ınformation Services (IIS) hizmet (SRV) *.xla uzantısı bu MIME türü ile ilişkilendirir.

Çözüm

HTTP iletişim kuralı'nı kullanarak eklentiyi açma sorunu önlemek için <a0></a0>, Web sayfanızı Otomasyon yoluyla Microsoft Excel'i başlatmak için istemci tarafında çalışan komut dosyaları'nı kullanın ve sonra XLA bir URL'DEN yükleyin. Aşağıdaki adımlarda, bu yöntem gösterilmektedir:
  1. Not Defteri'nde yeni bir metin dosyası oluşturun ve aşağıdaki kodu ekleyin:
    <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. Yolu sizin XLA (sabit bir yol veya URL) ile Open yöntemi için geçirilen dize değiştirin.
  3. Metin dosyasını kaydedin ve, bir HTM uzantısıyla yeniden adlandırın, sonra ınternet Explorer'da açın ve düğmesini tıklatın. Excel ayrı bir pencerede başlatıldığında olduğunu ve XLA yüklendiğini unutmayın.

Daha fazla bilgi

Excel'in eklentiler (*.xla) katıştırmayı desteklemez ve ınternet Explorer içinde açılamıyor. Son kullanıcılar normalde XLAs açmayın; bunun yerine bir XLS açtıkları, (gerekirse) bir veya daha fazla XLAs başlangıç sırasında yükler. Ender durumlarda yalnızca bir kullanıcı bir XLA doğrudan başlatmak gerekmez. Dosyayı ınternet Explorer'dan yeniden başlatılamıyor, bu gibi durumlarda, komut dosyası kodunda kullanılabilir.

Excel Otomasyonu komut dosyasından, ancak, istemci bilgisayar için daha yüksek güvenlik ayarlandı, ya da "Başlatma komut dosyası oluşturma için güvenli olarak işaretlenmemiş ActiveX denetimlerini ve" seçeneği devre dışı bırak için ayarlanmışsa çalışmaz. Bu istemciler, kendi güvenlik komut dosyası kodunun çalıştırılıp ve XLA açmak "Prompt" alt gerekir. XLAs ve Excel Otomasyonu varsayılan komut dosyası oluşturma için güvenli değildir.

Hakkında daha fazla bilgi için program aracılığıyla güvenilir bir denetimden bu ınternet Explorer Seçenekleri'ni değiştirin veya kurulum yardımcı programı (ancak komut dosyası değil), Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
182569  (http://support.microsoft.com/kb/182569/ ) Deneyimli kullanıcılar için Internet Explorer güvenlik bölgelerinin kayıt defteri girdileri

Diğer çözümler ve konuları

Komut dosyası Web tasarımınızı uygun bir çözüm yoksa, kayıt defteri değişikliklerini yoluyla sorunu önlemek arama ve XLA değiştirilmesiyle dosya kendisi. Internet Explorer veya Active Server Pages (ASP) dışında yapılmalıdır ve istemci ortamı denetlenemez Web uygulamaları için güvenilir bir çözüm değildir. Aşağıdaki tartışma, sorun ve sorunu engellemek için yapmanız gerekenler nedenini ayrıntılı olarak açıklanmaktadır.

Internet Explorer bir HTTP GET işlem sırasında sunucu tarafından belirtilen MIME türüyle kullandığından, *.xla uzantısı'ı "uygulama/vnd.ms-excel" MIME türü ile ilişkilendirmek (veya Web sunucusu ile iletişim kurmada) IIS önlemek gerekir. IIS, Web klasörü için <a1>özellik</a1> ayarlarında bu bilgileri kaydeder (başka bir deyişle, metatabanındaki). IIS Web sitenize davranışını değiştirmek için <a0></a0>, metatabanını düzenlemeniz gerekebilir. IIS 4.0 ve 5.0 sürümleri bunun için aşağıdaki adımları kullanın:
  1. ınternet ınformation Services Manager'ı başlatın.
  2. Varsayılan Web sitesi altında eklentinin içeren klasörü sağ tıklatın ve sonra da a?a?? aç?lan menüsünden Özellikler ' i seçin.
  3. HTTP üstbilgileri sekmesini seçin ve MIME eşleştirmesi bölümünde Dosya türleri ' ni tıklatın.
  4. Yeni tür Ek Yardım düğmesini tıklatın. .XlaUzantısını ilişkilendirilmiş ve metin/düz için İçerik türü (MIME) için belirtin. Dosya türü eklemek için Tamam ' ı tıklatın.
  5. <a0>Dosya türleri</a0> iletişim kutusunu kapatmak için Tamam ' ı tıklatın ve sonra Klasör özellikleri iletişim kutusunu kapatmak için Tamam ' ı tıklatın.

    Not: IIS sunucusunu kapatın ve değişikliklerin etkinleşmesi için yeniden gerekebilir.
Yerel olarak açılmış dosyalar için veya bir Web sunucusundan bir MIME türünü belirtmek için açılan dosyalar için ınternet Explorer CLSID dosyadan sunucu ilişkilendirmek ve bu dosyayı yüklemek için kullanır. Bir XLA aynı bir XLS, kök depolama için clsıd DEĞERINI olduğundan bir Excel çalışma kitabı için (Excel.Sheet.8 gibi adlarla bulunur). Internet Explorer'ın bu CLSID kullanmasını engellemek için bu dosyadan OLE yapılandırılmış depolama Apı'leri kullanılarak kald?rmak gerekir. Bu dosyayı Excel'de işlevselliği etkilememelidir ancak CLSıD'SI dosyaya re-inserted olan dosyayı Excel'de değiştirdiyseniz.

Ana depolama CLSID NULL CLSID değiştirme, aşağıdaki Microsoft Visual C++ kod gösterir:
#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;
}
				
the XLA Adres çubuğundan açılır, ancak XLA köprünün başvurduğu denetlemez ve ınternet Explorer Not yapılandırılmış depolama dosyasındaki CLSID denetlemez. Bu davranış, ınternet Explorer'ın gelecekteki sürümlerde değişebilir, ancak, değil geçerli davranışı kullanan ve XLA CLSID kaldırma forgo gerekir.

Dosyanın CLSID kaldırılmıştır ve sunucu, bir MIME türü tanımlanmamış, ınternet Explorer Excel'i başlatın ve XLA yüklemek için daha sonra dosya uzantısını kullanır. Bu nedenle, istemci kayıt defteri değişikliği gerekli kayıt defterinin istemci sistemde yapılandırmasına bağlı olarak, dosya hala katıştırmak için açılabilir. Vade farkı, kayıt defteri anahtarları şunlardır:
   HKEY_CLASSES_ROOT\.xla
				
- ve -
   HKEY_CLASSES_ROOT\Excel.Addin
				
anahtarlar ınternet Explorer MIME türü ve çalışma kitabına CLSID orada geri re-direct, çünkü bu kayıt defteri anahtarlarının altında belirtilen "İçerik türü" değeri olduğunu gerekebilir. Ayrıca, Excel.addin anahtarı da katıştırma'yı kullanmak için ınternet Explorer'ı re-directs CLSID alt anahtarını içeriyor olabilir. Bu anahtar yeniden adlandırıldı veya ınternet Explorer'ın CLSID bulmasını önlemek için kaldırılmış gerekir.

Tüm önceki adımları izlediyseniz, ınternet Explorer bir CLSID için bir dosya türünü bulmak açamaz ve bir <a0>ShellExecute</a0> komutuyla dosya yükleyecektir. Kullanıcı, ınternet Explorer'dan gibi tıklattıysanız, bu dosyayı çalıştırır.

Referanslar

MIME türleri ve Office hakkında ek bilgi için belgeleri Microsoft Knowledge Base'deki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
199841  (http://support.microsoft.com/kb/199841/ ) Nasıl YAPıLıR: Görüntü ASP kullanarak Excel MIME türleri ile IE içinde Results...
266263  (http://support.microsoft.com/kb/266263/ ) Hata: Word 2000 ve Excel 2000 görüntü ASP kaynak veri akışı için MIME türü kullanılırken
247389  (http://support.microsoft.com/kb/247389/ ) IIS: Nasıl özel MIME türleri önbellekleme devre dışı bırak

Bu makaledeki bilginin uygulandığı durum:
  • 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
Anahtar Kelimeler: 
kbmt kbprb kbprogramming KB268016 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:268016  (http://support.microsoft.com/kb/268016/en-us/ )