Microsoft Excel ActiveX-Steuerelemente deaktiviert?


113

Ich habe einige Excel-Arbeitsblätter, die ActiveX-Kontrollkästchen verwenden, um bestimmte Aktivitäten zu steuern. Sie haben vor kurzem gearbeitet, aber heute haben sie angefangen, Fehler zu machen. Ich wurde von einem Kollegen darauf aufmerksam gemacht, aber es funktionierte immer noch auf meinem Computer. Ich habe seine Excel-Version mit meiner verglichen und seine war neuer. Ich habe festgestellt, dass es neue Windows-Updates gibt, also habe ich das Update durchgeführt. Nachdem ich ausstehende Updates angewendet habe, funktioniert es jetzt nicht mehr auf meinem Computer. Ich kann die ActiveX-Kontrollkästchen nicht mehr aktivieren, und als Teil des Debugversuchs kann ich anscheinend nicht einmal mehr ein ActiveX-Steuerelement zu einem Arbeitsblatt hinzufügen, auch nicht zu einem neuen Arbeitsblatt. Ich erhalte einen Fehlerdialog mit der Meldung "Objekt kann nicht eingefügt werden". (Ich kann weiterhin Formularsteuerelemente hinzufügen, nur nicht ActiveX.) Hat dies nach einem kürzlich durchgeführten Update noch jemand erlebt? Irgendwelche Vorschläge?

Vielen Dank,

Mike


Welche Kontrolle war es speziell? oder meinst du ALL activeX?
Peege

3 meiner Kollegen scheinen dieses Problem ebenfalls zu haben. Ich denke, ihre Tabellenkalkulationen verwenden ActiveX-Steuerelemente - ComboBoxen und Schaltflächen. Einer von ihnen hatte seinen PC in Arbeit und bekam daher die Updates nicht. Als er es zurückbekam, wurden die Kontrollen erfolgreich ausgeführt. Das heißt, bis sein PC automatisch aktualisiert wird. Jetzt nicht. Wir können ihren Arbeitsblättern auch keine ActiveX-Steuerelemente hinzufügen.
Mitchell Kaplan

5
Ich habe dieses Problem ebenso wie alle Benutzer in meiner Firma. Wie könnte MS möglicherweise ein Update veröffentlichen, das ActiveX-Steuerelemente in Excel beschädigt? Das ist verrückt.
Harryg

3
@ vba4all: nein, das ist eine programmierfrage und gehört hierher.
Harry Johnston

2
@ vba4all: ActiveX-Steuerelemente sind ein Programmierwerkzeug - nicht wahr? Wofür würden Sie sie sonst noch verwenden? Es wäre anders, wenn das OP beispielsweise nach einem bestimmten Produkt eines Drittanbieters (das zufällig VBA verwendet) fragen würde, das nicht mehr funktioniert. Aber in diesem Fall scheint es sein eigener Code zu sein, der betroffen war?
Harry Johnston

Antworten:


159

Aus anderen Foren habe ich erfahren, dass dies auf das MS-Update zurückzuführen ist und dass eine gute Lösung darin besteht, die Datei MSForms.exd einfach aus einem beliebigen Temp-Unterordner im Benutzerprofil zu löschen. Zum Beispiel:

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

Natürlich muss die Anwendung (Excel, Word ...) geschlossen werden, um diese Datei zu löschen.


1
Ich hatte einen nicht aktualisierten PC. Ich habe Excel geöffnet und konnte eine ActiveX-Schaltfläche hinzufügen. Ich habe nach C: \ Users [Benutzername] \ AppData \ Local \ Temp \ Excel8.0 \ MSForms.exd gesucht, aber es gab keinen Excel8.0-Ordner. Ich habe dann Windows Update ausgeführt. Ich habe erneut versucht, meiner Tabelle eine ActiveX-Schaltfläche hinzuzufügen, konnte dies jedoch nicht. Ich bemerkte auch, dass ich jetzt Excel8.0 \ MSForms.exd hatte. Ich habe es gelöscht und ohne Neustart Excel erneut geöffnet und konnte nun die ActiveX-Schaltfläche hinzufügen. Vielen Dank!
Mitchell Kaplan

2
Danke dir!! Dieser Prozess hat das Problem auf meinem Computer behoben. Ich denke für Entwickler, die große öffentliche Veröffentlichungen haben, dass dies kaputt geht ... Hoffentlich wird MS einen Fix herausgeben.
Mike Pedersen

1
Das hat bei mir nicht funktioniert. Ich mache auf einem unserer PCs eine Systemwiederherstellung bis zum 07.12.14, um zu sehen, ob dies das Problem behebt. Ich habe auch versucht, eine Schaltfläche zu entfernen und sie gemäß einer Antwort unten zu ersetzen, aber ich habe ein Popup "Objekt kann nicht eingefügt werden" oder ähnliches erhalten.
Bergsteiger

1
Für Windows XP-Benutzer finden Sie den Temp-Unterordner hier: C: \ Dokumente und Einstellungen \ [Benutzername] \ Lokale Einstellungen \ Temp \ Excel8.0 \ MSForms.exd
bjtilley

2
Nachdem ich die obigen Dateien gelöscht hatte, funktionierte es für mich nicht, aber dann fand ich diese Dateien im Ordner C: / Windows / Temp und löschte sie. Dann konnte ich dieses Problem zum Laufen bringen.
QV1

35

Hier ist die beste Antwort, die ich im Microsoft Excel Support Team-Blog gefunden habe

Für einige Benutzer funktionieren Forms Controls (FM20.dll) nach der Installation der Updates vom Dezember 2014 nicht mehr wie erwartet. Probleme treten manchmal auf, wenn sie beispielsweise Dateien mit vorhandenen VBA-Projekten mithilfe von Formularsteuerelementen öffnen, versuchen, ein Formularsteuerelement in ein neues Arbeitsblatt einzufügen, oder Software von Drittanbietern ausführen, die diese Komponenten möglicherweise verwendet.

Möglicherweise erhalten Sie Fehler wie:

"Objekt kann nicht eingefügt werden" "Objektbibliothek ungültig oder enthält Verweise auf Objektdefinitionen, die nicht gefunden wurden"

Darüber hinaus können Sie möglicherweise die Eigenschaften eines ActiveX-Steuerelements in einem Arbeitsblatt nicht verwenden oder ändern oder erhalten eine Fehlermeldung, wenn Sie versuchen, über Code auf ein ActiveX-Steuerelement als Mitglied eines Arbeitsblatts zu verweisen. Nach dem Update zu befolgende Schritte:

Um dieses Problem zu beheben, müssen Sie die zwischengespeicherten Versionen der Steuerelementtypbibliotheken (Extender-Dateien) auf dem Clientcomputer löschen. Dazu müssen Sie Ihre Festplatte nach Dateien mit der Dateinamenerweiterung ".exd" durchsuchen und alle gefundenen .exd-Dateien löschen. Diese EXD-Dateien werden automatisch neu erstellt, wenn Sie die neuen Steuerelemente bei der nächsten Verwendung von VBA verwenden. Diese Extender-Dateien befinden sich unter dem Benutzerprofil und können sich auch an anderen Orten befinden, z. B. an den folgenden:

% appdata% \ Microsoft \ Formulare

% temp% \ Excel8.0

% temp% \ VBE

Skriptlösung:

Da dieses Problem mehr als einen Computer betreffen kann, können Sie auch eine Skriptlösung erstellen, um die EXD-Dateien zu löschen und das Skript als Teil des Anmeldevorgangs mithilfe einer Richtlinie auszuführen. Das Skript, das Sie benötigen würden, sollte die folgenden Zeilen enthalten und für jeden USER ausgeführt werden, da die EXD-Dateien USER-spezifisch sind.

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

Zusätzlicher Schritt:

Wenn die oben genannten Schritte Ihr Problem nicht beheben, können Sie einen weiteren Schritt testen (siehe Warnung unten):

  1. Öffnen Sie auf einem vollständig aktualisierten Computer und nach dem Entfernen der EXD-Dateien die Datei in Excel mit Bearbeitungsberechtigungen.

    Öffnen Sie Visual Basic für Applikationen> ändern Sie das Projekt, indem Sie einem Codemodul einen Kommentar hinzufügen oder eine Art bearbeiten> Debuggen> VBAProject kompilieren.

    Speichern Sie die Datei und öffnen Sie sie erneut. Auf Auflösung testen. Wenn dies behoben ist, stellen Sie dieses aktualisierte Projekt weiteren Benutzern zur Verfügung.

    Warnung: Wenn dieser Schritt Ihr Problem behebt, beachten Sie, dass diese Benutzer nach der Bereitstellung dieses aktualisierten Projekts für die anderen Benutzer auch die Updates auf ihren Systemen anwenden und die EXD-Dateien entfernen müssen.

Wenn sich Ihr Problem dadurch nicht beheben lässt, handelt es sich möglicherweise um ein anderes Problem, und möglicherweise ist eine weitere Fehlerbehebung erforderlich.

Microsoft arbeitet derzeit an diesem Problem. Im Blog finden Sie Updates.

Quelle


3
Überprüfen Sie die verknüpfte Quelle, es hat jetzt Scripting-Lösung aktualisiert
Peterson

Auf meinem Computer ist% appdata% als "C: \ Benutzer \ <aktueller Benutzer> \ AppData \ Roaming \" definiert, sodass kein Verzeichnis "% appdata% \ microsoft \ local \" vorhanden ist. Außerdem scheint "% appdata% \ Roaming \ Microsoft \ Formulare \" redundant zu sein, da "C: \ Benutzer \ <aktueller Benutzer> \ AppData \ Roaming \ Roaming \ Microsoft \ Formulare \" und wiederum kein solches Verzeichnis vorhanden ist auf meiner Maschine.
Pstraton

15

Es war KB2553154 . Microsoft muss einen Fix veröffentlichen. Als Entwickler von Excel-Anwendungen können wir nicht auf alle Computer unserer Kunden zugreifen und Dateien von diesen löschen. Wir werden für etwas verantwortlich gemacht, das Microsoft verursacht hat.


1
Abhängig von der von Ihnen ausgeführten Office-Version auch KB2596927 und KB2726958.
Harry Johnston

13

Ich bin ein Excel-Entwickler und ich habe definitiv den Schmerz gespürt, als dies passierte. Glücklicherweise konnte ich eine Problemumgehung finden, indem ich die Dateien MSForms.exd in VBA umbenannte, auch wenn Excel ausgeführt wurde, wodurch das Problem ebenfalls behoben werden kann. Excel-Entwickler, die ihre Tabellenkalkulationen verteilen müssen, können ihren Tabellenkalkulationen den folgenden VBA-Code hinzufügen, um sie gegen das MS-Update immun zu machen.

Platzieren Sie diesen Code in einem beliebigen Modul.

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    

Die Unterroutine RenameMSFormsFiles versucht, die Dateien MSForms.exd in den Ordnern C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\und C:\Users\[user.name]\AppData\Local\Temp\VBE\in MSForms - Copy.exd umzubenennen.

Rufen Sie dann die Unterroutine RenameMSFormsFiles ganz am Anfang des Workbook_Open-Ereignisses auf.

Private Sub Workbook_Open() 
  RenameMSFormsFiles  
End Sub

Die Tabelle versucht, die Dateien MSForms.exd beim Öffnen umzubenennen. Offensichtlich ist dies keine perfekte Lösung:

  1. Der betroffene Benutzer hat weiterhin die ActiveX-Steuerungsfehler, wenn er den VBA-Code beim ersten Öffnen der Tabelle ausführt. Erst nach einmaliger Ausführung des VBA-Codes und Neustart von Excel ist das Problem behoben. Wenn ein Benutzer auf eine beschädigte Tabelle stößt, besteht die Reaktion normalerweise darin, Excel zu schließen und zu versuchen, die Tabelle erneut zu öffnen. :) :)
  2. Die MSForms.exd-Dateien werden bei jedem Öffnen der Tabelle umbenannt, auch wenn keine Probleme mit den MSForms.exd-Dateien auftreten. Aber die Tabelle wird gut funktionieren.

Zumindest für den Moment können Excel-Entwickler ihre Arbeit mit dieser Problemumgehung weiter verteilen, bis Microsoft einen Fix veröffentlicht.

Ich habe diese Lösung hier gepostet .


Danke Yi. Es hat bei mir funktioniert, aber ich musste mein Excel 2010 neu starten (es könnte damit zusammenhängen, dass ich gleichzeitig den VBA-Editor
ausführte

5

Unter Windows 8.1 konnte ich mit der Windows-Suche keine EXD-Dateien finden. Andererseits hat ein Befehl cmd dir *.exd /Sdie eine Datei auf meinem System gefunden.


3

Ratschläge in KB und höher haben bei mir nicht funktioniert. Ich habe festgestellt, dass der ursprüngliche Fehler zurückgegeben wird, wenn ein Excel 2007-Benutzer (mit oder ohne Sicherheitsupdate; nicht sicher, unter welchen Umständen dies verursacht wird) die Datei speichert.

Ich habe festgestellt, dass der schnellste Weg, die Datei erneut zu reparieren, darin besteht, den gesamten VBA-Code zu löschen. Sparen. Ersetzen Sie dann den VBA-Code (Kopieren / Einfügen). Sparen. Bevor ich dies versuche, lösche ich zuerst die EXD-Dateien, da sonst beim Öffnen eine Fehlermeldung angezeigt wird.

In meinem Fall kann ich nicht alle Benutzer meiner Excel-Datei an verschiedenen Orten aktualisieren / aktualisieren. Da das Problem erneut auftritt, nachdem einige Benutzer die Excel-Datei gespeichert haben, muss ich das ActiveX-Steuerelement durch etwas anderes ersetzen.


2
Keiner der Vorschläge hat bei mir funktioniert, außer das Speichern der Datei als XLSX (Entfernen des gesamten Codes) und anschließendes erneutes Einfügen wie zuvor - Speichern als XLSM. Riesiger, massiver Schmerz im Arsch Microsoft. Die Neuinstallation von Office hat es auch nicht für mich behoben, sodass niemand Ihre Zeit damit
verschwendet

2

Vereinfachte Anweisungen für Endbenutzer. Fühlen Sie sich frei, Folgendes zu kopieren / einzufügen.

So beheben Sie das Problem, wenn es auftritt:

  1. Schließen Sie alle Ihre Office-Programme und -Dateien.
  2. Öffnen Sie den Windows Explorer, geben Sie% TEMP% in die Adressleiste ein und drücken Sie die Eingabetaste. Dadurch gelangen Sie in den temporären Systemordner.
  3. Suchen und löschen Sie die folgenden Ordner: Excel8.0, VBE, Word8.0
  4. Versuchen Sie nun erneut, Ihre Datei zu verwenden. Es sollte keine Probleme geben.

Möglicherweise müssen Sie warten, bis das Problem auftritt, damit dieses Update funktioniert. Eine vorzeitige Anwendung (bevor das Windows Update auf Ihrem System installiert wird) hilft nicht weiter.


2

Die beste Quelle für Informationen und Aktualisierungen zu diesem Problem, die ich finden konnte, sind die TechNet-Blogs »Der Microsoft Excel Support Team-Blog (wie erwähnt):

Formularsteuerelemente funktionieren nach Aktualisierungen im Dezember 2014 nicht mehr (aktualisiert am 10. März 2015)

Im März 2015 wurde zusätzlich zu den automatisierten Fix-it- und manuellen Anweisungen ein Hotfix veröffentlicht , der auch unter Windows Update verfügbar ist.

Das neueste Update und Update von Microsoft: 3025036 Fehler "Objekt kann nicht eingefügt werden" in einer benutzerdefinierten ActiveX Office-Lösung nach der Installation des Sicherheitsupdates MS14-082

STATUS: Update 10. März 2015:

Hotfixes für dieses Problem wurden in den Updates für Office 2007, 2010 und 2013 vom März 2015 veröffentlicht.

Allgemeine Informationen zum Problem:

Bei einigen Benutzern funktionieren Formularsteuerelemente (FM20.dll) nach der Installation von MS14-082 Microsoft Office-Sicherheitsupdates für Dezember 2014 nicht mehr wie erwartet. Probleme treten beispielsweise auf, wenn sie Dateien mit vorhandenen VBA-Projekten mithilfe von Formularsteuerelementen öffnen. Versuchen Sie es um ein Formularsteuerelement in ein neues Arbeitsblatt einzufügen oder Software von Drittanbietern auszuführen, die diese Komponenten möglicherweise verwendet.

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

Möglicherweise erhalten Sie folgende Fehler: "Objekt kann nicht eingefügt werden"; "Objektbibliothek ungültig oder enthält Verweise auf Objektdefinitionen, die nicht gefunden werden konnten"; "Das zum Erstellen dieses Objekts verwendete Programm ist Forms. Dieses Programm ist entweder nicht auf Ihrem Computer installiert oder reagiert nicht. Um dieses Objekt zu bearbeiten, installieren Sie Forms oder stellen Sie sicher, dass alle Dialogfelder in Forms geschlossen sind." [...] Außerdem können Sie möglicherweise die Eigenschaften eines ActiveX-Steuerelements in einem Arbeitsblatt nicht verwenden oder ändern oder erhalten eine Fehlermeldung, wenn Sie versuchen, über Code auf ein ActiveX-Steuerelement als Mitglied eines Arbeitsblatts zu verweisen.

Manuelle und zusätzliche Lösungen:

Skriptlösung:

Da dieses Problem möglicherweise mehr als einen Computer betrifft, können Sie auch eine Skriptlösung erstellen, um die EXD-Dateien zu löschen und das Skript als Teil des Anmeldevorgangs mithilfe einer Richtlinie auszuführen. Das Skript, das Sie benötigen würden, sollte die folgenden Zeilen enthalten und für jeden USER ausgeführt werden, da die EXD-Dateien USER-spezifisch sind.

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

Zusätzlicher Schritt:

Wenn die oben genannten Schritte Ihr Problem nicht beheben, können Sie einen weiteren Schritt testen (siehe Warnung unten):

  1. Öffnen Sie auf einem vollständig aktualisierten Computer und nach dem Entfernen der EXD-Dateien die Datei in Excel mit Bearbeitungsberechtigungen.

  2. Öffnen Sie Visual Basic für Applikationen> ändern Sie das Projekt, indem Sie einem Codemodul einen Kommentar hinzufügen oder eine Art bearbeiten> Debuggen> VBAProject kompilieren.

  3. Speichern Sie die Datei und öffnen Sie sie erneut. Auf Auflösung testen.

Wenn dies behoben ist, stellen Sie dieses aktualisierte Projekt weiteren Benutzern zur Verfügung.

Warnung: Wenn dieser Schritt Ihr Problem behebt, beachten Sie, dass diese Benutzer nach der Bereitstellung dieses aktualisierten Projekts für die anderen Benutzer auch die Updates auf ihren Systemen anwenden und die EXD-Dateien entfernen müssen.



0

Ich weiß, dass bereits viele Antworten dafür veröffentlicht wurden, aber keine der Antworten funktionierte unabhängig für meine Website. Also hier ist, was für mich funktioniert hat:

Schritt 1: Deinstallieren Sie die folgenden Updates: KB2920789, KB2920790, KB2920792, KB2920793, KB2984942, KB2596927

Schritt 2: Blenden Sie diese Updates aus, damit sie bei nachfolgenden Neustarts nicht installiert werden

Schritt 3: Löschen Sie den Ordner Excel8.0 aus C: \ Users \ <> \ AppData \ Local \ Temp

Schritt 4: Starten Sie die Workstatiion neu (ich würde auch sicherstellen, dass die oben genannten KBs nicht versehentlich angewendet wurden)


0

Ich möchte eine Antwort geben, die für mich das einzige war (mir ist klar, dass ich der einzige sein könnte, der jemals war). Ich hatte in einem Makro, das ich über das Menüband aufrief. Es hatte den folgenden Code:

colStore = new Collection

Ich war mir nicht bewusst, dass es einen Fehler auslöst, also war ich verblüfft und versuchte alles hier. Der Knopf funktionierte einfach nicht mehr und ich konnte ihn nicht zum Laufen bringen. Als ich den Fehler bemerkte und korrigierte, um:

Set colStore = new Collection

Es fing wieder an zu arbeiten. Absolut seltsam, wenn du mich fragst, aber vielleicht hilft es jemandem da draußen, der so verzweifelt war wie ich.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.