ID Artikel: 268016 - Kajian Terakhir: 22 September 2011 - Revisi: 2.0

Internet Explorer tidak dapat membuka berkas Excel Add-In (*.xla)

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

GEJALA

Ketika Anda menavigasi ke file Microsoft Excel Tambah-in (*.xla) dari halaman Web ketika menjalankan Internet Explorer, tambahan gagal untuk memuat dan Internet Explorer menampilkan peringatan yang halaman yang Anda cari saat ini tidak tersedia. Masalah muncul ketika Anda membuka add-in dengan Protokol HTTP tetapi tidak dengan protokol FILE.

PENYEBAB

Peringatan terjadi karena Excel Add-in (XLA) adalah benar-benar Excel Workbook (*.xls) yang tidak mengandung setiap lembar kerja. Satu-satunya bagian file yang digunakan oleh Excel adalah Visual Basic for Applications (VBA) proyek sub-storage, yang berisi kode Tambah-in (VBA). Namun, karena XLA adalah hanya XLS menyamar, saham CLSID sama sebagai buku kerja Excel ("{00020820-0000-0000-C000-000000000046}") dan diwakili oleh orang yang sama Serbaguna jenis ekstensi surat Internet (MIME) ("aplikasi/vnd.ms-unggul").

Internet Explorer versi 3.0 dan kemudian mendukung aktivasi di tempat objek dokumen ActiveX (ADO) di dalam Web browser. Karena XLA telah CLSID sama sebagai buku kerja Excel, Internet Explorer mencoba untuk memuat XLA sebagai buku kerja embeddable. Karena XLA berisi tidak lembar kerja untuk in-place editing, embedding gagal dan Internet Explorer akan menampilkan peringatan. Contoh menjalankan Excel yang dimulai untuk melekatkan mungkin menutup segera atau menjadi terlihat. Namun, karena dari aktivasi di tempat gagal, tampaknya tanpa toolbar apapun atau menu.

Internet Explorer bergantung pada MIME jenis pengaturan dokumen yang kembali dari server untuk mengetahui bagaimana untuk mengaktifkan halaman untuk melihat. Jika HTTP server kembali MIME jenis isi "aplikasi/vnd.ms-unggul" untuk Halaman yang diminta, Internet Explorer mencoba untuk memuat isi file sebagai Excel buku kerja. Secara default, Internet Information Services (IIS) associates *.xla Ketik ekstensi dengan MIME ini, sehingga hyperlink ke XLA file biasanya hasil dalam perilaku yang digambarkan.

PEMECAHAN MASALAH

Untuk menghindari masalah membuka tambahan dengan menggunakan Protokol HTTP, halaman Web Anda dapat menggunakan script sisi klien untuk memulai Microsoft Excel melalui otomatisasi, dan kemudian load XLA dari URL. Langkah berikut menunjukkan teknik ini:
  1. Buat sebuah file teks baru di Notepad dan tambahkan berikut kode:
    <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. Menggantikan string yang berlalu untuk Terbuka metode dengan path ke XLA Anda (baik jalan tetap atau URL).
  3. Simpan file teks dan mengubah nama dengan perpanjangan HTM, kemudian buka di Internet Explorer dan klik tombol. Perhatikan bahwa Excel dimulai up di jendela terpisah dan bahwa XLA penuh.

INFORMASI LEBIH LANJUT

Excel Add-in (*.xla) tidak mendukung embedding dan tidak dapat dapat dibuka di dalam Internet Explorer. Pengguna akhir biasanya tidak membuka XLAs; Sebaliknya mereka membuka XLS yang (jika diperlukan) beban satu atau lebih XLAs selama startup. Hanya dalam kasus-kasus langka Apakah pengguna perlu mulai XLA secara langsung. Ini situasi, scripting kode dapat digunakan jika file harus dimulai melalui Internet Explorer.

Otomatisasi Excel script tidak bekerja, Namun, jika komputer klien telah ditetapkan untuk keamanan tinggi atau jika Opsi "Menginisialisasi dan skrip kontrol ActiveX yang tidak ditandai aman untuk skrip" telah ditetapkan untuk menonaktifkan. Ini klien harus menurunkan keamanan mereka untuk "Cepat" untuk dapat memilih untuk menjalankan kode skrip dan terbuka XLA. XLAs dan Excel Otomatisasi tidak aman untuk skrip secara default.

Untuk informasi lebih lanjut tentang cara pemrograman mengubah pilihan Internet Explorer ini dari kontrol terpercaya atau setup utilitas (tapi tidak script), klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
182569  (http://support.microsoft.com/kb/182569/ ) Entri registri untuk pengguna tingkat lanjut zona keamanan Internet Explorer

Workarounds dan pertimbangan lain

Jika script bukanlah solusi yang sesuai dengan desain Web Anda, Anda dapat berusaha untuk menghindari masalah melalui perubahan registri dan modifikasi XLA file itu sendiri. Ini harus dilakukan di luar dari Internet Explorer atau Server aktif Pages (ASP), dan bukan merupakan solusi untuk aplikasi Web di mana klien lingkungan tidak dapat dikontrol. Diskusi berikut menjelaskan lebih banyak detail penyebab masalah dan apa yang harus Anda lakukan untuk menghindari masalah.

Karena Internet Explorer menggunakan jenis MIME yang ditentukan oleh server selama operasi HTTP mendapatkan, Anda perlu untuk mencegah IIS (atau Web server dengan yang Anda berkomunikasi) dari bergaul ekstensi *.xla dengan "aplikasi/vnd.ms-unggul" jenis MIME. IIS menyimpan informasi ini dalam pengaturan properti untuk map Web (yaitu di metabase). Untuk mengubah perilaku situs IIS Web Anda, Anda perlu mengedit metabase. Untuk melakukan hal ini IIS versi 4.0 dan 5.0, Anda dapat menggunakan langkah-langkah berikut:
  1. Mulai manajer layanan informasi Internet.
  2. Klik kanan folder yang berisi Tambah-in di bawah Situs Web standar, dan memilih Properti dari menu drop-down.
  3. Pilih HTTP header tab, dan klik Jenis file di bawah bagian MIME peta.
  4. Klik Tipe baru. Menentukan .xla untuk Ekstensi terkait, dan text/plain untuk Jenis konten (MIME). Klik Oke untuk menambahkan jenis file.
  5. Klik Oke untuk menutup Jenis file kotak dialog, dan kemudian klik Oke untuk menutup Properti folder kotak dialog.

    CATATAN: IIS server mungkin perlu menutup dan restart untuk perubahan berlaku.
Untuk file dibuka secara lokal, atau untuk file yang dibuka dari Web server yang tidak menentukan jenis MIME, Internet Explorer menggunakan CLSID dari mengajukan diri untuk mengasosiasikan server dan memuat berkas. Karena XLA adalah sama XLS, CLSID untuk penyimpanan akar adalah untuk Excel Workbook (Excel.Sheet.8). Untuk mencegah Internet Explorer menggunakan CLSID ini, Anda perlu strip itu dari file menggunakan OLE terstruktur penyimpanan api. Ini seharusnya tidak mempengaruhi fungsionalitas berkas di Excel, tetapi jika file diubah di Excel, CLSID re-inserted ke dalam file.

Berikut Microsoft Visual C++ kode menunjukkan kepada Anda bagaimana untuk mengganti CLSID penyimpanan utama dengan 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;
}
				
Catatan Internet Explorer tidak memeriksa CLSID dari terstruktur penyimpanan file jika XLA dibuka dari bilah alamat, tetapi periksa jika XLA ini dirujuk dalam hyperlink. Sementara perilaku ini dapat berubah di masa depan Versi Internet Explorer, sebaiknya Anda tidak mengandalkan pada perilaku saat ini dan melupakan menghapus CLSID dari XLA.

Jika file CLSID telah dihapus, dan server tidak ditentukan jenis MIME, Internet Explorer kemudian menggunakan ekstensi file untuk memulai Excel dan beban XLA. Tergantung pada konfigurasi registri pada sistem klien, file mungkin masih terbuka untuk embedding, sehingga modifikasi registri klien mungkin diperlukan. Registri kunci menarik adalah:
   HKEY_CLASSES_ROOT\.xla
				
-dan-
   HKEY_CLASSES_ROOT\Excel.Addin
				
Anda perlu memastikan bahwa ada tidak ada nilai "Tipe konten" ditentukan di bawah kunci registri ini karena kunci dapat mengarahkan ulang Internet Explorer untuk jenis MIME, dan dari sana kembali ke buku kerja CLSID. Juga, Excel.addin kunci mungkin berisi CLSID subkunci yang juga re-directs Internet Explorer untuk menggunakan embedding. Kunci ini harus diganti atau dihapus untuk mencegah Internet Explorer dari menemukan CLSID.

Jika semua sebelumnya langkah-langkah yang diikuti, Internet Explorer akan mampu menemukan CLSID untuk jenis file dan akan memuat berkas dengan ShellExecute perintah. Ini menjalankan file seolah-olah pengguna telah double-clicked itu dari Internet Explorer.

REFERENSI

Untuk informasi tambahan tentang jenis MIME dan kantor dokumen, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
199841  (http://support.microsoft.com/kb/199841/ ) HOWTO: Tampilan ASP hasil menggunakan Excel di IE dengan tipe MIME
266263  (http://support.microsoft.com/kb/266263/ ) BUG: Word 2000 dan Excel 2000 tampilan ASP sumber ketika menggunakan jenis MIME Stream data
247389  (http://support.microsoft.com/kb/247389/ ) IIS: Cara Menonaktifkan Caching jenis MIME tertentu

Berlaku bagi:
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
Kata kunci: 
kbprb kbprogramming kbmt KB268016 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:268016  (http://support.microsoft.com/kb/268016/en-us/ )