Excel VBA "Automatisierungsfehler" aufgrund von Office Update Januar 2016, wahrscheinlich verursacht durch MSCOMCTL.OCX (Microsoft Windows Common Controls 6.o (Service Pack 6))

9

Lösung

Ich habe ein Treeview Active X Control zu einer unserer Tabellenkalkulationen hinzugefügt, indem wir Microsoft Windows Common Controls 6.0 (Service Pack 6) verwenden, also MSCOMCTL.OCX , das in C:\Windows\SysWOW64\

lebt

KB2881029 (Sicherheitsupdate für Microsoft Office 2010 32-Bit Edition) (MS16-004), das am 15.01.2016 (oder in der Umgebung) von Microsoft veröffentlicht wurde, installiert eine neue Version von MSCOMCTL.OCX (v6.1.98). 46), die am 09.12.2015 "erstellt" wurde, aber zum Zeitpunkt des Updates "accessed" (dh auf dem Computer installiert) war.

Dies hat dazu geführt, dass die Arbeitsmappe den Verweis auf MSCOMCTL.OCX verliert (Anführungszeichen bei "loose", weil die Referenz noch angehakt ist, aber nicht mehr funktioniert; die Arbeitsmappe kompiliert nicht wegen "Kompilierfehler: Objektbibliotheksfunktion nicht unterstützt "oder" Automatisierungsfehler ").

Es scheint, dass das Update den folgenden Registrierungsschlüssel durch Hinzufügen eines SubKeys 2.0 ändert, es aber leer lässt und das neue MSCOMCTL.OCX nicht registriert:

%Vor%

Das Beheben des Problems erfordert drei Schritte:

  1. MSCOMCTL.OCX muss wie folgt von einer Eingabeaufforderung mit erhöhten Rechten abgemeldet und erneut registriert werden:

    %Vor%

    Beim Registrieren der neuen MSCOMCTL.OCX (Version 6.1.98.46) über REGSVR32 wird der Registry ein neuer Schlüssel hinzugefügt:

    %Vor%

    Wenn bereits ein SubKey mit dem Namen 2.1 vorhanden ist, wird eine Referenz eingegeben, die jetzt als Schlüssel verwendet wird. Aber es macht nichts mit dem leeren 2.0 SubKey!

    Wenn es einen Subkey 2.0 (oder 2.1 in diesem Fall) gibt, in dem nichts enthalten ist, sollte jedes Objekt, das diese OCX verwendet, nicht erstellt werden, da es die Version 2.0 (bzw. 2.1) verwenden wird, kann und nicht Überprüfen Sie für Version 2.2.

  2. Bereinigen Sie die Registrierung, indem Sie die falschen oder ersetzten Schlüssel 2.0 und 2.1 löschen und nur den letzten und funktionsfähigen Schlüssel beibehalten. 2.2. Dies kann über den Registrierungseditor erfolgen, indem Sie HKEY_CLASSES_ROOT, Edit / Find / MSCOMCTRL.OCX auswählen.

    (Hinweis: Dieser Schritt scheint optional zu sein, da ich überprüft habe, dass die Arbeitsmappe erst wieder funktioniert, wenn Sie nur Schritt 1 und 3 ausgeführt haben. Aber es fühlt sich an, als wäre es das Richtige)

  3. Im Microsoft Excel-Arbeitsmappen-VBA-Projekt muss Microsoft Windows Common Controls 6.0 (Service Pack 6) nicht referenziert und neu referenziert werden. Bei der erneuten Referenzierung müssen Sie nicht nur das Kontrollkästchen erneut ankreuzen, sondern "Durchsuchen" wählen und MSCOMCTL.OCX in C:\Windows\SysWOW64\

    auswählen

    (Hinweis: Im Browserfenster müssen Sie den Dateityp von "dll" in "OCX" (oder "all") ändern)

Daniel Alexander Karr (siehe Beitrag weiter unten) hat freundlicherweise ein Skript geteilt, das er geschrieben hat, um die Schritte 1 und 2 automatisch auszuführen (beachten Sie, dass es als Administrator ausgeführt werden muss).

Danke Daniel und welonman für deine Hilfe, um das Problem zu verstehen und eine Lösung zu finden.

Originalbeitrag

Ähnlich wie in diesem 3 Jahre alten Beitrag beschrieben (VBA-Automatisierungsfehler aufgrund von Office Service Pack 3.0, verursacht durch Forms) , funktionierte ein perfekt funktionierendes Arbeitsbuch von mir nicht mehr von heute auf morgen ...

In der Liste der Updates, die letzte Nacht ausgeführt wurden, sind die folgenden Office Updates:

  • KB3114563 (Definitionsupdate für Microsoft Office 2010 32-Bit Edition)
  • KB2881029 (Sicherheitsupdate für Microsoft Office 2010 32-Bit Edition)
  • KB3114555 (Update für Microsoft Office 2010 32-Bit Edition)
  • KB3114553 (Sicherheitsupdate für Microsoft Office 2010 32-Bit Edition)
  • KB3114564 (Sicherheitsupdate für Microsoft Excel 2010 32-Bit Edition)

Es gab andere Updates, aber allgemeine Microsoft Windows Updates, nicht speziell für Office, und sie sind hoffentlich nicht relevant hier.

Nach meinem Verständnis liegt der "Automatisierungsfehler" daran, dass das Projekt nicht kompiliert wird, weil zwei zusätzliche ActiveX-Steuerelemente in einem meiner Formulare vorhanden sind, auf die ich von Microsoft Windows Common Controls 6.0 (Service Pack 6) verwiesen habe. , dh MSCOMCTL.OCX , die in C:\Windows\SysWOW64\

lebt

Leider wurde das Problem nicht gelöst, indem MSCOMCTL.OCX wie im zuvor genannten Beitrag erläutert nicht erneut registriert und neu registriert wurde.

Ich habe auch versucht, alle *.exd zu löschen, aber auf meinem C: Laufwerk waren keine.

Zusätzliche Informationen, die relevant sein können:

  • Die MSCOMCTL.OCX -Dateiversion ist 6.1.98.46 , created & amp; zuletzt geändert am 2015-12-09, wurde aber gestern um 3.33 Uhr (2016-01-15) aufgerufen, d. h. ungefähr zur gleichen Zeit, als die Aktualisierungen stattfanden (3.14 Uhr für die neueste Version).
  • Sobald die initiale "Automatisierungsfehler" -Nachricht übergeben wurde, würde ich eine zusätzliche Nachricht erhalten, "Kompilierfehler: Objektbibliotheksmerkmal nicht unterstützt", Hervorhebung von Codezeilen, die den zusätzlichen Kontrollen zugeordnet sind.
  • Ich habe festgestellt, dass diese das Problem verursacht haben, indem Sie ein leeres Formular erstellt und versucht haben, eines hinzuzufügen. Ich habe die Fehlermeldung "Konnte die Operation wegen Fehler 800a0011 nicht abschließen".
  • Diese zusätzlichen Steuerelemente sind Microsoft TreeView Control 6.0 (SP6) und Microsoft ImageList Control 6 (SP6).
  • Ich könnte Microsoft TreeView Control, Version 5.0 (SP2) und Microsoft ImageList Control Version 5.0 (SP2) hinzufügen, ohne den Fehler zu erhöhen (ich habe nicht versucht, sie funktionieren zu lassen).

Kennt jemand ein ähnliches Missgeschick mit MSCOMCTL.OCX nach den Microsoft-Updates von gestern? Das könnte bestätigen, dass es die Ursache meines Problems sein könnte.

Kennt jemand eine Korrektur?

Kann jemand dies an Microsoft melden (wenn es tatsächlich die Ursache des Problems ist)?

Und schließlich, für die Interessierten, gibt es eine Möglichkeit, Microsoft Updates zu vermeiden, die ActiveX-Steuerelemente vermasseln ... ohne sie zu benutzen! Dies ist, was JPK für seine TreeView getan hat.

    
Thomas Basset 15.01.2016, 03:18
quelle

4 Antworten

0

Vielen Dank für Ihre Beiträge,
Ich habe festgestellt, dass das De-referenzieren und erneutes Verweisen auf die Microsoft Windows-Standardsteuerelemente 6.0 (Service Pack 6) in dem Excel-VBA-Projekt es endlich funktionieren lassen würde.
!!! ... ABER ... !!!
Einfaches Ankreuzen / erneutes Ankreuzen des Kontrollkästchens wäre zu einfach! Um es erneut zu referenzieren, müssen Sie "Durchsuchen" verwenden und MSCOMCTL.OCX in C: \ Windows \ SysWOW64 \
auswählen (Beachten Sie, dass Sie im Browserfenster den Dateityp von "dll" in "OCX" (oder "all") ändern müssen) Ich habe es einfach auf einer Maschine versucht, auf der ich Daniel Alexanders Patch nicht ausgeführt hatte (um MSCOMCTL.OCX abzumelden und neu zu registrieren, und den alten leeren 2.0-Schlüssel aus dem Register zu entfernen), und es hat nicht funktioniert. also erwarte ich, dass die obigen Schritte erforderlich sind. Ich werde versuchen, gründlich zu testen, welche Schritte notwendig sind, und diese Antwort bearbeiten, um Schritt für Schritt den gesamten Vorgang zu formulieren, aber vorerst den Patch von Daniel Alexander (AS ADMINISTRATOR!) Auszuführen und Microsoft Windows Common Controls 6.0 (Service Pack 6) im Excel VBA-Projekt scheint zu funktionieren.

    
Thomas Basset 28.01.2016, 02:17
quelle
3

Unsere Business-ERP-Software Faktura-XP hat seit gestern dasselbe Problem, wir haben das Problem untersucht und einen Patch dafür erstellt, vielleicht hilft es jemandem:

Ссылка

In unserem Fall funktioniert das TreeViewControl nicht mehr, aber es ist das gleiche Problem mit der Automatisierung. Microsoft aktualisiert die MSCOMCTL.OCX auf Version 2.2, wenn der Schlüssel {831FDD16-0C5C-11D2-A9FC-000F8754DA1} hat einen leeren Eintrag von 2.1 oder 2.0, der Common Control funktioniert nicht mehr. Lösung: Lösche Key 2.0 und 2.1, lasse 2.2, melde die mscomctl.ocx ab und registriere sie erneut.

Unser Patch wird genau das tun, nicht mehr und nicht weniger, aber so einfach wie möglich für unsere Kunden, klicken Sie einfach auf Weiter und Schließen.

Bearbeitet für weitere Informationen:

%Vor%

wird neu erstellt, wenn die neue MSCOMCTL.OCX (Version 6.1.98.46) über REGSVR32

registriert wird

Wenn es einen SubKey namens 2.1 gibt, gibt er eine Referenz ein, dass 2.2 jetzt der Schlüssel für die Verwendung ist.

Wenn es einen 2.1 SubKey gibt, in dem nichts enthalten ist, kann Ihr Objekt nicht erstellt werden, da es die Version 2.1 verwenden wird und nicht auf Version 2.2 überprüft werden kann.

Löschen Sie diesen Schlüssel wenn nötig und Sie können loslegen.

Weitere Tests zeigen, dass der 2.0 SubKey veraltet ist und Probleme verursachen kann.

Meistens hatten Systeme mit Microsoft Windows 7 dieses Problem. Für unsere Software hat niemand mit Windows 8.1 oder Windows 10 nach dem aktuellen Update ein Problem genannt.

    
Daniel Alexander Karr 15.01.2016 12:45
quelle
0

Ähnliches Problem hier: Ancient Access 97 App auf alten XP ( nicht mehr lange, Seufzer der Erleichterung ) hört auf zu sagen: Fehler 91: Objektvariable oder Mit Blockvariable nicht gesetzt ". Untersuchung ergab, dass es passiert, wenn das Fortschrittsbalken-Steuerelement, das sich in Mscomctl.ocx befindet, adressiert wird.

Ich habe festgestellt, dass KB2881029 (MS16-004) der Schuldige ist. Es installiert die neue Version von MSCOMCTL.OCX. Auf Computern ohne dieses Update funktioniert die Access App gut. Aber es ist nicht zum Entfernen geeignet, zumindest hat uns das WSUS gesagt, als ich es wollte. Jedenfalls würden wir nicht ohne ein Sicherheitsupdate leben wollen.

Nachdem ich die Antwort zu HKCR \ TypeLib {831FDD16 ... gelesen habe, habe ich versucht, den zu dieser Zeit noch gefüllten \ 2.0-Unterschlüssel vor der Installation des Updates zu löschen, um herauszufinden, dass selbst mit einem nicht vorhandenen \ 2.0-Unterschlüssel das Update erstellt wird der leere bei der Installation. Gut gemacht, Microsoft ...!

    
wmelonman 22.01.2016 15:53
quelle
0

Das Problem wurde hier ausführlich beschrieben:

  

"Fehlermeldungen oder Access stürzt ab, nachdem Sie das Sicherheitsupdate MS16-004 installiert haben"
  MS: Artikelnummer: 3139567
  (Letzte Bewertung: 16.02.2016 19:15:00 - Revision: 3.0)

Ссылка

    
cypizek 10.01.2017 10:58
quelle

Tags und Links