Kontrol ActiveX Microsoft Excel Dinonaktifkan?

113

Saya memiliki beberapa lembar kerja Excel yang menggunakan kotak centang ActiveX untuk mengontrol aktivitas tertentu. Mereka bekerja baru-baru ini tetapi hari ini mulai memberikan kesalahan. Saya diberitahu oleh seorang kolega tentang hal ini, tetapi masih berfungsi di komputer saya. Saya memeriksa versinya tentang Excel dengan versi saya dan versinya lebih baru. Saya perhatikan ada pembaruan Windows baru, jadi saya melakukan pembaruan. Setelah saya menerapkan pembaruan yang tertunda, sekarang tidak lagi berfungsi di komputer saya. Saya tidak dapat memeriksa kotak centang ActiveX lagi, dan, sebagai bagian dari mencoba men-debug, tampaknya saya bahkan tidak dapat menambahkan kontrol ActiveX ke lembar kerja mana pun, bahkan lembar kerja baru, lagi. Saya mendapatkan dialog kesalahan yang mengatakan, "Tidak dapat memasukkan objek." (Saya masih dapat menambahkan kontrol formulir, hanya saja ActiveX.) Adakah yang mengalami ini setelah pembaruan terkini? Ada saran?

Terima kasih,

Mike

Mike Pedersen
sumber
kontrol apa itu secara spesifik? atau maksud Anda SEMUA activeX?
peege
3 rekan saya juga tampaknya mengalami masalah ini. Spreadsheet mereka menggunakan, menurut saya, kontrol ActiveX - ComboBoxes dan Buttons. Salah satu dari mereka memiliki PC yang sedang dikerjakan dan karenanya tidak mendapatkan pembaruan. Ketika dia mendapatkannya kembali, kontrolnya berhasil dijalankan. Begitulah, sampai PC-nya diperbarui secara otomatis. Sekarang tidak. Kami juga tidak dapat menambahkan kontrol ActiveX ke lembar mereka.
Mitchell Kaplan
5
Saya juga mengalami masalah ini seperti semua pengguna di perusahaan saya. Bagaimana mungkin MS merilis pembaruan yang merusak kontrol ActiveX di Excel? Ini gila.
harryg
3
@ vba4all: tidak, ini adalah pertanyaan pemrograman dan termasuk di sini.
Harry Johnston
2
@ vba4all: Kontrol ActiveX adalah alat pemrograman - bukan? Untuk apa lagi Anda akan menggunakannya? Akan berbeda jika OP, misalnya, menanyakan tentang produk pihak ketiga tertentu (yang kebetulan menggunakan VBA) yang telah berhenti berfungsi. Tetapi dalam kasus ini tampaknya kode miliknya yang terpengaruh?
Harry Johnston

Jawaban:

159

Dari forum lain, saya telah mengetahui bahwa hal ini disebabkan oleh Pembaruan MS dan perbaikan yang baik adalah dengan hanya menghapus file MSForms.exd dari subfolder Temp di profil pengguna. Misalnya:

C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\MSForms.exd

C:\Users\[user.name]\AppData\Local\Temp\VBE\MSForms.exd

C:\Users\[user.name]\AppData\Local\Temp\Word8.0\MSForms.exd

Tentu saja aplikasi (Excel, Word ...) harus ditutup untuk menghapus file ini.

John W.
sumber
1
Saya memiliki PC yang belum diperbarui. Saya membuka Excel, dan bisa menambahkan tombol ActiveX. Saya mencari C: \ Users [user.name] \ AppData \ Local \ Temp \ Excel8.0 \ MSForms.exd, tetapi tidak ada folder Excel8.0. Saya kemudian menjalankan pembaruan Windows. Saya mencoba lagi untuk menambahkan tombol ActiveX ke spreadsheet saya dan tidak bisa. Saya juga mencatat bahwa sekarang saya memiliki Excel8.0 \ MSForms.exd. Saya menghapusnya dan tanpa reboot membuka kembali Excel dan sekarang dapat menambahkan tombol ActiveX. Terima kasih!
Mitchell Kaplan
2
Terima kasih!! Proses ini memperbaiki masalah di komputer saya. Saya merasa untuk pengembang yang memiliki rilis publik besar bahwa ini rusak ... Semoga MS akan mengeluarkan perbaikan.
Mike Pedersen
1
Ini tidak berhasil untuk saya. Saya melakukan pemulihan sistem kembali ke 12/7/14 di salah satu PC kami untuk melihat apakah itu akan memperbaikinya. Saya juga mencoba menghapus tombol dan menggantinya sesuai dengan jawaban di bawah ini, tetapi saya menerima munculan "Tidak dapat memasukkan Objek" atau sesuatu seperti itu.
gunung
1
Untuk pengguna Windows XP, subfolder Temp dapat ditemukan di sini: C: \ Documents and Settings \ [user.name] \ Local Settings \ Temp \ Excel8.0 \ MSForms.exd
bjtilley
2
Setelah menghapus file di atas, itu tidak berhasil untuk saya, tetapi kemudian saya menemukan file-file ini di folder C: / Windows / Temp, dan menghapusnya. Kemudian saya bisa menyelesaikan masalah ini.
QV1
35

Berikut adalah jawaban terbaik yang saya temukan di Blog Tim Dukungan Microsoft Excel

Untuk beberapa pengguna, Kontrol Formulir (FM20.dll) tidak lagi berfungsi seperti yang diharapkan setelah menginstal pembaruan Desember 2014. Masalah dialami pada saat-saat seperti ketika mereka membuka file dengan proyek VBA yang sudah ada menggunakan kontrol formulir, mencoba memasukkan kontrol formulir ke lembar kerja baru atau menjalankan perangkat lunak pihak ketiga yang mungkin menggunakan komponen ini.

Anda mungkin menerima kesalahan seperti:

"Tidak dapat memasukkan objek" "Pustaka objek tidak valid atau berisi referensi ke definisi objek yang tidak dapat ditemukan"

Selain itu, Anda mungkin tidak dapat menggunakan atau mengubah properti kontrol ActiveX pada lembar kerja atau menerima kesalahan saat mencoba merujuk ke kontrol ActiveX sebagai anggota lembar kerja melalui kode. Langkah-langkah yang harus diikuti setelah pembaruan:

Untuk mengatasi masalah ini, Anda harus menghapus versi cache dari perpustakaan jenis kontrol (file extender) di komputer klien. Untuk melakukannya, Anda harus mencari hard disk Anda untuk file yang memiliki ekstensi nama file ".exd" dan menghapus semua file .exd yang Anda temukan. File .exd ini akan dibuat ulang secara otomatis saat Anda menggunakan kontrol baru saat berikutnya Anda menggunakan VBA. File extender ini akan berada di bawah profil pengguna dan mungkin juga berada di lokasi lain, seperti berikut ini:

% appdata% \ Microsoft \ forms

% temp% \ Excel8.0

% temp% \ VBE

Solusi skrip:

Karena masalah ini dapat mempengaruhi lebih dari satu mesin, juga memungkinkan untuk membuat solusi skrip untuk menghapus file EXD dan menjalankan skrip sebagai bagian dari proses logon menggunakan kebijakan. Skrip yang Anda perlukan harus berisi baris berikut dan harus dijalankan untuk setiap PENGGUNA karena file .exd khusus untuk PENGGUNA.

del% temp% \ vbe \ *. exd

del% temp% \ excel8.0 \ *. exd

del% appdata% \ microsoft \ forms \ *. exd

del% appdata% \ microsoft \ local \ *. exd

del% appdata% \ Roaming \ microsoft \ forms \ *. exd

del% temp% \ word8.0 \ *. exd

del% temp% \ PPT11.0 \ *. exd

Langkah tambahan:

Jika langkah-langkah di atas tidak menyelesaikan masalah Anda, langkah lain yang dapat diuji (lihat peringatan di bawah):

  1. Di mesin yang sepenuhnya diperbarui dan setelah menghapus file .exd, buka file di Excel dengan izin edit.

    Buka Visual Basic for Applications> ubah proyek dengan menambahkan komentar atau edit pada modul kode apa pun> Debug> Kompilasi VBAProject.

    Simpan dan buka kembali file tersebut. Uji resolusi. Jika terselesaikan, berikan proyek yang diperbarui ini kepada pengguna tambahan.

    Peringatan: Jika langkah ini menyelesaikan masalah Anda, ketahuilah bahwa setelah menerapkan proyek yang diperbarui ini ke pengguna lain, pengguna ini juga harus memiliki pembaruan yang diterapkan pada sistem mereka dan file .exd juga dihapus.

Jika ini tidak menyelesaikan masalah Anda, ini mungkin masalah yang berbeda dan pemecahan masalah lebih lanjut mungkin diperlukan.

Microsoft sedang menangani masalah ini. Tonton blog untuk pembaruan.

Sumber

Jan Moritz
sumber
3
periksa Sumber yang ditautkan, sekarang telah memperbarui solusi Skrip
peterson
Di komputer saya,% appdata% didefinisikan sebagai "C: \ Users \ <current user> \ AppData \ Roaming \", jadi tidak ada direktori "% appdata% \ microsoft \ local \". Selain itu, "% appdata% \ Roaming \ microsoft \ forms \" tampaknya berlebihan, karena "C: \ Users \ <current user> \ AppData \ Roaming \ Roaming \ microsoft \ forms \" dan, sekali lagi, tidak ada direktori seperti itu di mesin saya.
pstraton
15

Itu KB2553154 . Microsoft perlu merilis perbaikan. Sebagai pengembang aplikasi Excel, kami tidak dapat membuka semua komputer klien kami dan menghapus file dari mereka. Kami disalahkan atas sesuatu yang disebabkan Microsoft.

Ron R
sumber
1
Juga KB2596927 dan KB2726958, bergantung pada versi Office yang Anda jalankan.
Harry Johnston
13

Saya seorang pengembang Excel, dan saya pasti merasakan sakitnya saat ini terjadi. Untungnya, saya dapat menemukan solusi dengan mengganti nama file MSForms.exd di VBA bahkan ketika Excel sedang berjalan, yang juga dapat memperbaiki masalah tersebut. Pengembang Excel yang perlu mendistribusikan spreadsheet mereka dapat menambahkan kode VBA berikut ke spreadsheet mereka untuk membuat mereka kebal terhadap pembaruan MS.

Tempatkan kode ini di modul apa pun.

Public Sub RenameMSFormsFiles() 
  Const tempFileName As String = "MSForms - Copy.exd"  
  Const msFormsFileName As String = "MSForms.exd"  
  On Error Resume Next 

  'Try to rename the C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\MSForms.exd file  
  RenameFile Environ("TEMP") & "\Excel8.0\" & msFormsFileName, Environ("TEMP") & "\Excel8.0\" & tempFileName 
  'Try to rename the C:\Users\[user.name]\AppData\Local\Temp\VBE\MSForms.exd file  
  RenameFile Environ("TEMP") & "\VBE\" & msFormsFileName, Environ("TEMP") & "\VBE\" & tempFileName 
End Sub  

Private Sub RenameFile(fromFilePath As String, toFilePath As String) 
  If CheckFileExist(fromFilePath) Then 
      DeleteFile toFilePath  
      Name fromFilePath As toFilePath  
  End If  
End Sub

Private Function CheckFileExist(path As String) As Boolean 
  CheckFileExist = (Dir(path) <> "")  
End Function  

Private Sub DeleteFile(path As String) 
  If CheckFileExist(path) Then 
      SetAttr path, vbNormal  
      Kill path  
  End If  
End Sub    

Subrutin RenameMSFormsFiles mencoba untuk mengubah nama berkas MSForms.exd di folder C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\dan C:\Users\[user.name]\AppData\Local\Temp\VBE\menjadi MSForms - Copy.exd.

Kemudian panggil subrutin RenameMSFormsFiles di awal acara Workbook_Open.

Private Sub Workbook_Open() 
  RenameMSFormsFiles  
End Sub

Spreadsheet akan mencoba mengganti nama file MSForms.exd saat terbuka. Jelas, ini bukan perbaikan yang sempurna:

  1. Pengguna yang terpengaruh masih akan mengalami kesalahan kontrol ActiveX saat menjalankan kode VBA saat pertama kali membuka spreadsheet. Hanya setelah menjalankan kode VBA sekali dan memulai ulang Excel, masalah telah diperbaiki. Biasanya ketika pengguna menemukan spreadsheet yang rusak, reaksi langsungnya adalah menutup Excel dan mencoba membuka spreadsheet lagi. :)
  2. File MSForms.exd diganti namanya setiap kali spreadsheet terbuka, bahkan ketika tidak ada masalah dengan file MSForms.exd. Tapi spreadsheet akan berfungsi dengan baik.

Setidaknya untuk saat ini, pengembang Excel dapat terus mendistribusikan pekerjaan mereka dengan solusi ini hingga Microsoft merilis perbaikan.

Saya telah memposting solusi ini di sini .

Yi Hu
sumber
Terima kasih Yi. Ini berhasil untuk saya tetapi saya harus memulai ulang Excel 2010 saya (ini dapat dikaitkan dengan fakta bahwa saya menjalankan editor VBA pada saat yang sama?)
J. Chomel
5

Dengan Windows 8.1 saya tidak dapat menemukan file .exd menggunakan pencarian windows. Di sisi lain, perintah cmd dir *.exd /Smenemukan satu file di sistem saya.

Marc Thibault
sumber
3

Saran dalam KB ke atas tidak berhasil untuk saya. Saya menemukan bahwa jika satu pengguna Excel 2007 (dengan atau tanpa pembaruan keamanan; tidak yakin dengan keadaan sebenarnya yang menyebabkan ini) menyimpan file, kesalahan asli akan muncul.

Saya menemukan bahwa cara tercepat untuk memperbaiki file lagi adalah dengan menghapus semua kode VBA. Menyimpan. Kemudian ganti kode VBA (copy / paste). Menyimpan. Sebelum mencoba ini, saya menghapus file .EXD terlebih dahulu, karena jika tidak saya mendapatkan kesalahan saat membuka.

Dalam kasus saya, saya tidak dapat memutakhirkan / memperbarui semua pengguna file Excel saya di berbagai lokasi. Karena masalah muncul kembali setelah beberapa pengguna menyimpan file Excel, saya harus mengganti kontrol ActiveX dengan yang lain.

pghcpa.dll
sumber
2
Tidak ada saran yang berfungsi untuk saya kecuali menyimpan file sebagai XLSX (menghapus semua kode), lalu menempel ulang seperti yang Anda lakukan - menyimpan kembali sebagai XLSM. Rasa sakit yang besar dan BESAR di pantat Microsoft. Menginstal ulang kantor juga tidak memperbaikinya untuk saya, jadi tidak ada yang menyia-nyiakan waktu Anda untuk mencobanya
DontFretBrett
2

Instruksi yang disederhanakan untuk pengguna akhir. Silakan salin / tempel yang berikut ini.

Berikut cara memperbaiki masalah yang muncul:

  1. Tutup semua program dan file Office Anda.
  2. Buka Windows Explorer dan ketik% TEMP% di bilah alamat, lalu tekan Enter. Ini akan membawa Anda ke folder sementara sistem.
  3. Temukan dan hapus folder berikut ini: Excel8.0, VBE, Word8.0
  4. Sekarang coba gunakan file Anda lagi, seharusnya tidak ada masalah.

Anda mungkin perlu menunggu hingga masalah terjadi agar perbaikan ini berfungsi. Menerapkannya sebelum waktunya (sebelum Pembaruan Windows diinstal di sistem Anda) tidak akan membantu.

perry
sumber
2

Sumber informasi dan pembaruan terbaik tentang masalah ini yang dapat saya temukan ada di Blog TechNet »Blog Tim Dukungan Microsoft Excel (sebagaimana disebutkan):

Kontrol Formulir berhenti berfungsi setelah Pembaruan Desember 2014 (Diperbarui 10 Maret 2015)

Pada Maret 2015, hotfix dirilis sebagai tambahan untuk perbaikan otomatis dan instruksi manual, dan juga tersedia di Pembaruan Windows.

Pembaruan dan perbaikan terbaru dari Microsoft: 3025036 galat "Tidak dapat memasukkan objek" di solusi Office kustom ActiveX setelah Anda menginstal pembaruan keamanan MS14-082

STATUS: Pembaruan 10 Maret 2015:

Perbaikan terbaru untuk masalah ini telah dirilis di Pembaruan Maret 2015 untuk Office 2007, 2010 & 2013.

Info umum tentang masalah tersebut:

Untuk beberapa pengguna, Kontrol Formulir (FM20.dll) tidak lagi berfungsi seperti yang diharapkan setelah menginstal Pembaruan Keamanan Microsoft Office MS14-082 untuk Desember 2014. Masalah dialami saat mereka membuka file dengan proyek VBA yang sudah ada menggunakan kontrol formulir, coba untuk memasukkan kontrol formulir ke lembar kerja baru atau menjalankan perangkat lunak pihak ketiga yang mungkin menggunakan komponen ini.

https://technet.microsoft.com/en-us/library/security/ms14-082.aspx

Anda mungkin menerima kesalahan seperti: "Tidak dapat memasukkan objek"; "Perpustakaan objek tidak valid atau berisi referensi ke definisi objek yang tidak dapat ditemukan"; "Program yang digunakan untuk membuat objek ini adalah Formulir. Program itu tidak diinstal di komputer Anda atau tidak merespons. Untuk mengedit objek ini, instal Formulir atau pastikan bahwa setiap kotak dialog di Formulir ditutup." [...] Selain itu, Anda mungkin tidak dapat menggunakan atau mengubah properti kontrol ActiveX pada lembar kerja atau menerima kesalahan saat mencoba merujuk ke kontrol ActiveX sebagai anggota lembar kerja melalui kode.

Solusi manual dan tambahan:

Solusi skrip:

Karena masalah ini dapat mempengaruhi lebih dari satu mesin, juga memungkinkan untuk membuat solusi skrip untuk menghapus file EXD dan menjalankan skrip sebagai bagian dari proses logon menggunakan kebijakan. Skrip yang Anda perlukan harus berisi baris berikut dan harus dijalankan untuk setiap PENGGUNA karena file .exd khusus untuk PENGGUNA.

del %temp%\vbe\*.exd
del %temp%\excel8.0\*.exd
del %appdata%\microsoft\forms\*.exd
del %appdata%\microsoft\local\*.exd
del %temp%\word8.0\*.exd
del %temp%\PPT11.0\*.exd

Langkah tambahan:

Jika langkah-langkah di atas tidak menyelesaikan masalah Anda, langkah lain yang dapat diuji (lihat peringatan di bawah):

  1. Di mesin yang sepenuhnya diperbarui dan setelah menghapus file .exd, buka file di Excel dengan izin edit.

  2. Buka Visual Basic for Applications> ubah proyek dengan menambahkan komentar atau edit pada modul kode apa pun> Debug> Kompilasi VBAProject.

  3. Simpan dan buka kembali file tersebut. Uji resolusi.

Jika terselesaikan, berikan proyek yang diperbarui ini kepada pengguna tambahan.

Peringatan: Jika langkah ini menyelesaikan masalah Anda, ketahuilah bahwa setelah menerapkan proyek yang diperbarui ini ke pengguna lain, pengguna ini juga harus memiliki pembaruan yang diterapkan pada sistem mereka dan file .exd juga dihapus.

dePatinkin.dll
sumber
1

Saya akhirnya menemukan jawaban ini di KB resmi Microsoft:

http://support.microsoft.com/kb/3025036/EN-US

Tidak ada informasi baru di sini selain yang kami miliki di jawaban sebelumnya, tetapi setidaknya ini mengakui bahwa Microsoft mengetahui masalah tersebut.

Mike Pedersen
sumber
0

Saya tahu banyak jawaban telah diposting untuk ini, tetapi tidak satu pun jawaban yang berfungsi secara independen untuk situs saya. Jadi inilah yang berhasil untuk saya:

Langkah 1: Copot pemasangan pembaruan berikut - KB2920789, KB2920790, KB2920792, KB2920793, KB2984942, KB2596927

Langkah 2: Sembunyikan pembaruan ini agar tidak diinstal pada boot ulang berikutnya

Langkah 3: Hapus folder Excel8.0 dari C: \ Users \ <> \ AppData \ Local \ Temp

Langkah 4: Mulai ulang workstatiion (Saya juga akan memastikan KB yang disebutkan di atas tidak diterapkan secara tidak sengaja)

chaltahai
sumber
0

Saya ingin memberikan jawaban yang bekerja sebagai satu-satunya hal bagi saya (saya menyadari bahwa saya mungkin satu-satunya yang pernah ada). Saya memiliki satu makro yang saya panggil menggunakan pita. Itu memiliki kode berikut:

colStore = new Collection

Saya tidak menyadari bahwa itu membuat kesalahan jadi saya bingung dan mencoba semuanya di sini. Tombolnya berhenti bekerja dan saya tidak bisa mengaktifkannya. Ketika saya melihat kesalahan dan memperbaikinya menjadi:

Set colStore = new Collection

Ini mulai bekerja lagi. Benar-benar aneh jika Anda bertanya kepada saya, tetapi mungkin itu membantu seseorang di luar sana yang sama putus asanya dengan saya.

Palsu
sumber