Microsoft Excel ActiveX Denetimleri Devre Dışı mı?


113

Belirli etkinlikleri kontrol etmek için ActiveX onay kutularını kullanan bazı Excel çalışma sayfalarım var. Son zamanlarda çalıştılar ama bugün hata vermeye başladılar. Bir meslektaşım tarafından bu konuda uyarıldım, ancak hala bilgisayarımda çalışıyordu. Excel sürümünü benimkiyle karşılaştırdım ve onunki daha yeniydi. Yeni Windows güncellemeleri olduğunu fark ettim, bu yüzden güncellemeyi yaptım. Bekleyen güncellemeleri uyguladıktan sonra, artık bilgisayarımda çalışmıyor. Artık ActiveX onay kutularını işaretleyemiyorum ve hata ayıklamaya çalışmanın bir parçası olarak, herhangi bir çalışma sayfasına, hatta yeni bir çalışma sayfasına bir ActiveX denetimi bile ekleyemiyorum. "Nesne eklenemiyor" diyen bir hata iletişim kutusu alıyorum. (ActiveX değil, yine de form kontrolleri ekleyebilirim.) Son güncellemeden sonra bunu yaşayan başka biri var mı? Baska öneri?

Teşekkürler,

mikrofon


özellikle hangi denetimdi? yoksa TÜM activeX'i mi kastediyorsunuz?
2014

Görünüşe göre 3 meslektaşım da bu sorunu yaşıyor. Hesap tablolarında ActiveX kontrolleri kullanıldığını düşünüyorum - ComboBoxes ve Buttons. Birinin bilgisayarı üzerinde çalıştı ve bu nedenle güncellemeleri alamadı. Geri aldığında kontrolleri başarıyla çalıştırdı. Yani, bilgisayarı otomatik olarak güncellenene kadar. Şimdi değil. Ayrıca sayfalarına ActiveX denetimleri ekleyemiyoruz.
Mitchell Kaplan

5
Firmamdaki tüm kullanıcılar gibi ben de bu sorunu yaşıyorum. MS, Excel'deki ActiveX denetimlerini bozan bir güncellemeyi nasıl yayınlayabilir? Bu çılgınca.
harryg

3
@ vba4all: hayır, bu bir programlama sorusudur ve buraya ait.
Harry Johnston

2
@ vba4all: ActiveX kontrolleri bir programlama aracıdır, değil mi? Onları başka ne için kullanırdın? Örneğin, OP çalışmayı durduran belirli bir üçüncü taraf ürününü (VBA'yı kullanan) soruyor olsaydı farklı olurdu. Ama bu durumda etkilenen kendi kodu gibi görünüyor?
Harry Johnston

Yanıtlar:


159

Diğer forumlardan, bunun MS Güncellemesinden kaynaklandığını ve iyi bir düzeltmenin, MSForms.exd dosyasını kullanıcının profilindeki herhangi bir Temp alt klasöründen silmek olduğunu öğrendim. Örneğin:

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

Bu dosyayı silmek için tabi ki uygulamanın (Excel, Word ...) kapatılması gerekmektedir.


1
Güncellenmemiş bir bilgisayarım vardı. Excel'i açtım ve bir ActiveX düğmesi ekledim. C: \ Users [user.name] \ AppData \ Local \ Temp \ Excel8.0 \ MSForms.exd aradım, ancak Excel8.0 klasörü yoktu. Daha sonra Windows güncellemesini çalıştırdım. Elektronik tabloma bir ActiveX düğmesi eklemeyi tekrar denedim ve yapamadım. Ayrıca artık Excel8.0 \ MSForms.exd'ye sahip olduğumu da not ettim. Onu sildim ve yeniden açılan Excel'i yeniden başlatmadan ve şimdi ActiveX düğmesini ekleyebildim. Teşekkürler!
Mitchell Kaplan

2
Teşekkür ederim!! Bu işlem bilgisayarımdaki sorunu çözdü. Kamuya açık büyük sürümleri olan geliştiriciler için bunun kırıldığını düşünüyorum ... Umarım MS bir düzeltme yayınlar.
Mike Pedersen

1
Bu benim için işe yaramadı. Düzeltip düzeltmeyeceğini görmek için bilgisayarlarımızdan birinde 12/7 / 14'e bir sistem geri yüklemesi yapıyorum. Ayrıca bir düğmeyi kaldırmayı ve aşağıdaki cevaba göre değiştirmeyi denedim, ancak "Nesne Ekleyemiyorum" veya buna benzer bir açılır pencere aldım.
mountainclimber

1
Windows XP kullanıcıları için Temp alt klasörü şu adreste bulunabilir: C: \ Documents and Settings \ [kullanıcı.adı] \ Local Settings \ Temp \ Excel8.0 \ MSForms.exd
bjtilley

2
Yukarıdaki dosyaları sildikten sonra benim için işe yaramadı, ancak bu dosyaları C: / Windows / Temp klasöründe buldum ve sildim. Sonra bu sorunu çalıştırmayı başardım.
QV1

35

İşte Microsoft Excel Destek Ekibi Blogunda bulduğum en iyi cevap

Bazı kullanıcılar için, Aralık 2014 güncelleştirmeleri yüklendikten sonra Form Denetimleri (FM20.dll) artık beklendiği gibi çalışmamaktadır. Form denetimlerini kullanarak mevcut VBA projeleriyle dosyaları açtıklarında, yeni bir çalışma sayfasına bir form denetimi eklemeye çalıştıklarında veya bu bileşenleri kullanabilecek üçüncü taraf yazılımları çalıştırdıklarında sorunlar yaşanır.

Aşağıdaki gibi hatalar alabilirsiniz:

"Nesne eklenemiyor" "Nesne kitaplığı geçersiz veya bulunamayan nesne tanımlarına referanslar içeriyor"

Ayrıca, bir çalışma sayfasındaki bir ActiveX denetiminin özelliklerini kullanamayabilir veya değiştiremeyebilir veya kod aracılığıyla bir çalışma sayfasının üyesi olarak bir ActiveX denetimine başvurmaya çalışırken bir hata alabilirsiniz. Güncellemeden sonra izlenecek adımlar:

Bu sorunu gidermek için, istemci bilgisayardaki kontrol türü kitaplıklarının (genişletici dosyaları) önbelleğe alınmış sürümlerini silmelisiniz. Bunu yapmak için, sabit diskinizde ".exd" dosya adı uzantısına sahip dosyaları aramanız ve bulduğunuz tüm .exd dosyalarını silmeniz gerekir. Bu .exd dosyaları, VBA'yı bir sonraki kullanışınızda yeni denetimleri kullandığınızda otomatik olarak yeniden oluşturulur. Bu genişletici dosyalar kullanıcının profilinin altında olacak ve aşağıdakiler gibi başka yerlerde de olabilir:

% AppData% \ Microsoft \ formları

% Temp% \ Excel8.0

% Temp% \ vbe

Komut dosyası çözümü:

Bu sorun birden fazla makineyi etkileyebileceğinden, EXD dosyalarını silmek için bir komut dosyası çözümü oluşturmak ve komut dosyasını oturum açma işleminin bir parçası olarak bir ilke kullanarak çalıştırmak da mümkündür. İhtiyacınız olan komut dosyası aşağıdaki satırları içermelidir ve .exd dosyaları KULLANICI'ya özel olduğundan her KULLANICI için çalıştırılması gerekir.

del% temp% \ vbe \ *. exd

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

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

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

del% appdata% \ Dolaşım \ microsoft \ formlar \ *. exd

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

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

Ek adım:

Yukarıdaki adımlar sorununuzu çözmezse, test edilebilecek başka bir adım (aşağıdaki uyarıya bakın):

  1. Tam olarak güncellenmiş bir makinede ve .exd dosyalarını kaldırdıktan sonra, dosyayı Excel'de düzenleme izinleriyle açın.

    Visual Basic for Applications'ı açın> herhangi bir kod modülüne bir tür yorum veya düzenleme ekleyerek projeyi değiştirin> Hata Ayıkla> VBAP Projesini Derleyin.

    Dosyayı kaydedin ve yeniden açın. Çözünürlük için test edin. Çözülürse, bu güncellenmiş projeyi ek kullanıcılara sağlayın.

    Uyarı: Bu adım sorununuzu çözerse, bu güncellenmiş projeyi diğer kullanıcılara dağıttıktan sonra, bu kullanıcıların da sistemlerine ve .exd dosyalarına güncellemeleri uygulatmaları gerekeceğini unutmayın.

Bu, sorununuzu çözmezse, farklı bir sorun olabilir ve daha fazla sorun giderme gerekli olabilir.

Microsoft şu anda bu sorun üzerinde çalışıyor. Güncellemeler için blogu izleyin.

Kaynak


3
bağlantılı Kaynağı kontrol edin, şimdi Komut Dosyası çözümünü güncelledi
peterson

Makinemde% appdata%, "C: \ Users \ <geçerli kullanıcı> \ AppData \ Roaming \" olarak tanımlandı, bu nedenle "% appdata% \ microsoft \ local \" dizini yok. Ayrıca, "% appdata% \ Roaming \ microsoft \ formları \" "C: \ Users \ <geçerli kullanıcı> \ AppData \ Roaming \ Roaming \ microsoft \ formlar \" olarak gereksiz görünüyor ve yine böyle bir dizin yok benim makinemde.
pstraton

15

Öyleydi KB2553154 . Microsoft'un bir düzeltme yayınlaması gerekiyor. Excel uygulamalarının bir geliştiricisi olarak, tüm istemcilerimizin bilgisayarlarına gidip içlerindeki dosyaları silemiyoruz. Microsoft'un neden olduğu bir şeyden dolayı suçlanıyoruz.


1
Ayrıca çalıştırdığınız Office sürümüne bağlı olarak KB2596927 ve KB2726958.
Harry Johnston

13

Ben bir Excel geliştiricisiyim ve bu olduğunda kesinlikle acıyı hissettim. Neyse ki, Excel çalışırken bile VBA'daki MSForms.exd dosyalarını yeniden adlandırarak bir geçici çözüm bulabildim ve bu da sorunu çözebilir. Elektronik tablolarını dağıtması gereken Excel geliştiricileri, MS güncellemesinden etkilenmemelerini sağlamak için elektronik tablolarına aşağıdaki VBA kodunu ekleyebilirler.

Bu kodu herhangi bir modüle yerleştirin.

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    

RenameMSFormsFiles alt yordamı C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\ve C:\Users\[user.name]\AppData\Local\Temp\VBE\klasörlerindeki MSForms.exd dosyalarını MSForms - Copy.exd olarak yeniden adlandırmaya çalışır .

Sonra Workbook_Open olayının en başında RenameMSFormsFiles alt yordamını çağırın.

Private Sub Workbook_Open() 
  RenameMSFormsFiles  
End Sub

Elektronik tablo, açıldığında MSForms.exd dosyalarını yeniden adlandırmaya çalışacaktır. Açıkçası, bu mükemmel bir çözüm değil:

  1. Etkilenen kullanıcı, elektronik tabloyu ilk kez açarken VBA kodunu çalıştırırken yine de ActiveX denetim hatalarıyla karşılaşacaktır. Yalnızca VBA kodunu bir kez çalıştırdıktan ve Excel'i yeniden başlattıktan sonra sorun düzeltildi. Normalde, bir kullanıcı bozuk bir elektronik tabloyla karşılaştığında, ani tepki Excel'i kapatmak ve elektronik tabloyu tekrar açmaya çalışmaktır. :)
  2. MSForms.exd dosyaları, elektronik tablo her açıldığında, MSForms.exd dosyalarıyla ilgili bir sorun olmasa bile yeniden adlandırılır. Ancak elektronik tablo gayet iyi çalışacak.

En azından şimdilik, Excel geliştiricileri, Microsoft bir düzeltme yayınlayana kadar çalışmalarını bu geçici çözümle dağıtmaya devam edebilir.

Bu çözümü buraya gönderdim .


Teşekkürler Yi. Benim için çalıştı ama Excel 2010'umu yeniden başlatmak zorunda kaldım (aynı anda VBA düzenleyiciyi çalıştırıyor olmamla bağlantılı olabilir mi?)
J. Chomel

5

Windows 8.1 ile, Windows aramasını kullanarak herhangi bir .exd dosyası bulamadım. Öte yandan, bir cmd komutu dir *.exd /Ssistemimdeki bir dosyayı buldu.


3

KB ve üzerindeki tavsiyeler benim için işe yaramadı. Bir Excel 2007 kullanıcısı (güvenlik güncelleştirmesi olsun veya olmasın; buna neden olan kesin durumlardan emin değil) dosyayı kaydederse, orijinal hatanın geri döndüğünü keşfettim.

Dosyayı tekrar tamir etmenin en hızlı yolunun tüm VBA kodunu silmek olduğunu keşfettim. Kayıt etmek. Ardından VBA kodunu değiştirin (kopyala / yapıştır). Kayıt etmek. Bunu denemeden önce .EXD dosyalarını silerim, aksi takdirde açılışta bir hata alırım.

Benim durumumda, Excel dosyamın tüm kullanıcılarını çeşitli konumlarda yükseltemiyorum / güncelleyemiyorum. Bazı kullanıcılar Excel dosyasını kaydettikten sonra sorun geri geldiğinden, ActiveX kontrolünü başka bir şeyle değiştirmem gerekecek.


2
Dosyayı bir XLSX olarak kaydetme (tüm kodu kaldırma), ardından yaptığınız gibi yeniden yapıştırma - XLSM olarak yeniden kaydetme dışında, önerilerin hiçbiri benim için işe yaramadı. Microsoft'un kıçından büyük, BÜYÜK bir acı. Ofisi yeniden
kurmak

2

Son kullanıcılar için basitleştirilmiş talimatlar. Aşağıdakileri kopyalayıp / yapıştırmaktan çekinmeyin.

İşte ortaya çıktığında sorunu nasıl çözeceğiniz:

  1. Tüm Office programlarınızı ve dosyalarınızı kapatın.
  2. Windows Gezgini'ni açın ve adres çubuğuna% TEMP% yazın, ardından Enter tuşuna basın. Bu sizi sistem geçici klasörüne götürecektir.
  3. Aşağıdaki klasörleri bulun ve silin: Excel8.0, VBE, Word8.0
  4. Şimdi dosyanızı tekrar kullanmayı deneyin, herhangi bir sorun yaşamamalı.

Bu düzeltmenin çalışması için sorun oluşana kadar beklemeniz gerekebilir. Zamanından önce (Windows Update sisteminize yüklenmeden önce) uygulamak işe yaramaz.


2

Bu sorunla ilgili bulabildiğim en iyi bilgi ve güncelleme kaynağı TechNet Blogları »Microsoft Excel Destek Ekibi Blogu (bahsedildiği gibi):

Aralık 2014 Güncellemelerinden sonra Form Denetimleri çalışmayı durdurur (10 Mart 2015'te güncellendi)

Mart 2015'te , otomatik düzeltme ve manuel talimatlara ek olarak bir düzeltme yayınlandı ve Windows Update'te de mevcut.

Microsoft'tan en son güncelleştirme ve düzeltme: 3025036 MS14-082 güvenlik güncelleştirmesini yükledikten sonra bir ActiveX özel Office çözümünde "Nesne eklenemiyor" hatası

DURUM: 10 Mart 2015 Güncellemesi:

Bu soruna yönelik düzeltmeler, Mart 2015 Office 2007, 2010 ve 2013 Güncelleştirmelerinde yayımlanmıştır.

Sorunla ilgili genel bilgi:

Bazı kullanıcılar için Form Denetimleri (FM20.dll), Aralık 2014 için MS14-082 Microsoft Office Güvenlik Güncelleştirmeleri yüklendikten sonra artık beklendiği gibi çalışmıyor. Form denetimlerini kullanarak mevcut VBA projeleriyle dosya açtıklarında olduğu gibi sorunlar yaşanır, deneyin yeni bir çalışma sayfasına bir form denetimi eklemek veya bu bileşenleri kullanabilecek üçüncü taraf yazılımları çalıştırmak.

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

"Nesne eklenemiyor" gibi hatalar alabilirsiniz; "Nesne kitaplığı geçersiz veya bulunamayan nesne tanımlarına başvurular içeriyor"; "Bu nesneyi oluşturmak için kullanılan program Formlar'dır. Bu program bilgisayarınızda yüklü değil veya yanıt vermiyor. Bu nesneyi düzenlemek için Formlar'ı yükleyin veya Formlar'daki herhangi bir iletişim kutusunun kapalı olduğundan emin olun." [...] Ek olarak, bir çalışma sayfasındaki bir ActiveX denetiminin özelliklerini kullanamayabilir veya değiştiremeyebilir veya kod aracılığıyla bir çalışma sayfasının üyesi olarak bir ActiveX denetimine başvurmaya çalışırken bir hata alabilirsiniz.

Manuel ve ek çözümler:

Komut dosyası çözümü:

Bu sorun birden fazla makineyi etkileyebileceğinden, EXD dosyalarını silmek için bir komut dosyası çözümü oluşturmak ve komut dosyasını oturum açma işleminin bir parçası olarak bir ilke kullanarak çalıştırmak da mümkündür. İhtiyacınız olan komut dosyası aşağıdaki satırları içermelidir ve .exd dosyaları KULLANICI'ya özel olduğundan her KULLANICI için çalıştırılması gerekir.

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

Ek adım:

Yukarıdaki adımlar sorununuzu çözmezse, test edilebilecek başka bir adım (aşağıdaki uyarıya bakın):

  1. Tam olarak güncellenmiş bir makinede ve .exd dosyalarını kaldırdıktan sonra, dosyayı Excel'de düzenleme izinleriyle açın.

  2. Visual Basic for Applications'ı açın> herhangi bir kod modülüne bir tür yorum veya düzenleme ekleyerek projeyi değiştirin> Hata Ayıkla> VBAP Projesini Derleyin.

  3. Dosyayı kaydedin ve yeniden açın. Çözünürlük için test edin.

Çözülürse, bu güncellenmiş projeyi ek kullanıcılara sağlayın.

Uyarı: Bu adım sorununuzu çözerse, bu güncellenmiş projeyi diğer kullanıcılara dağıttıktan sonra, bu kullanıcıların da sistemlerine ve .exd dosyalarına güncellemeleri uygulatmaları gerekeceğini unutmayın.



0

Bunun için zaten birçok yanıtın gönderildiğini biliyorum, ancak hiçbir yanıt sitem için bağımsız olarak çalışmadı. İşte benim için işe yarayan şey:

Adım 1: Aşağıdaki güncellemeleri kaldırın - KB2920789, KB2920790, KB2920792, KB2920793, KB2984942, KB2596927

2. Adım: Bu güncellemeleri, sonraki yeniden başlatma işlemlerinde yüklenmemeleri için gizleyin

Adım 3: Excel8.0 klasörünü C: \ Users \ <> \ AppData \ Local \ Temp'den silin

Adım 4: Çalışma durumunu yeniden başlatın (ayrıca yukarıda belirtilen KB'lerin yanlışlıkla uygulanmamasını da sağlardım)


0

Benim için tek şey olarak işe yarayan bir cevap vermek istiyorum (şimdiye kadarki tek şeyin ben olabileceğimi anlıyorum). Şeridi kullanarak aradığım bir makro vardı. Aşağıdaki koda sahipti:

colStore = new Collection

Bir hata yaptığının farkında değildim, bu yüzden şaşkına döndüm ve burada her şeyi denedim. Düğme çalışmayı bıraktı ve onu çalıştıramadım. Hatayı fark edip şu şekilde düzelttiğimde:

Set colStore = new Collection

Tekrar çalışmaya başladı. Bana sorarsan kesinlikle tuhaf ama belki de benim kadar çaresiz olan birine yardımcı olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.