VB6 Komponente “Microsoft Windows Common Controls 6.0” kann nicht eingebunden werden

VB6 Komponente “Microsoft Windows Common Controls 6.0” kann nicht eingebunden werden

Durch Microsoft Updates (KB2687441) kann es vorkommen, dass in VB6 die Komponente “Microsoft Windows Common Controls 6.0” nicht eingebunden werden kann. Diese Komponente wird für das “ListView” Objekt benötigt. Ursache ist, dass die Versionsnummer der Datei “MSCOMCTL.OCX” mit dem Update erhöht wurde.

Vorab sollte beachtet werden, dass bei einer Neuinstallation von VB6 ab Windows Vista dies mit Administratorrechten erfolgen soll

  1. Bei Neuinstallation von VB6 die Datei Setup.exe als Administrator öffnen.
  2. Nach der Installation einmal die Datei vb6.exe (unter Microsoft Visual Studio -> VB98) als Administrator starten.

Welche Möglichkeiten gibt es, um diesen Fehler zu beseitigen? Es kann keine allgemeingültige Vorgehensweise angeboten werden, aber 3 Vorschläge werden hier vorgestellt:

  1. Die Registrierung der Datei MSCOMCTL.OCX aufheben und anschließend wieder registrieren. Dazu die Eingabeaufforderung als Administrator öffnen.
    Registrierung aufheben: Tippen Sie den folgenden Befehl ein: regsvr32 /u MSCOMCTL.OCX.
    Registrieren: Befehl eintippen: regsvr32 MSCOMCTL.OCX.
  2. In der Registry folgenden Schlüssel kontrollieren: HKEY_CLASSES_ROOT\TypeLib\{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}.
    Sollten hier 2 Unterschlüssel 2.0 und 2.1 vorhanden sein, ist meist der Unterschlüssel 2.0 leer. Diesen Unterschlüssel löschen, so dass nur mehr der Unterschlüssel 2.1 vorhanden ist.
  3. In der Windows Eingabeaufforderung folgende Kommandos aufrufen:
    System 32 Bit:
    cd C:\Windows\System32\
    regtlib msdatsrc.tlb
    Sollte der Befehl “regtlib” nicht gefunden werden, geben Sie folgendes ein:
    %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regtlibv12.e‌xe msdatsrc.tlb (für %SystemRoot% z.B. C:\Windows

    System 64 Bit:

    cd C:\Windows\SysWOW64\
    regtlib msdatsrc.tlb
    Sollte der Fehler noch nicht behoben sein, geben Sie noch einmal die Befehle nach Punkt 1 ein.

Anschließend sollte die Komponente “Microsoft Windows Common Controls 6.0” wieder eingebunden werden können.

Wurde das fehlerhafte VB6-Projekt gespeichert, fehlt meist dann auch ein Eintrag in der vbp-Datei. Dazu diese Datei mit einem Editor öffnen und nach einem Eintrag für die mscomctl.ocx suchen.Z.B.:
Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; mscomctl.ocx

Sollte dieser Eintrag fehlen, dann diese Zeile event. aus einer gespeicherten Version kopieren und hier einfügen.

Noch sind aber nicht alle Schritte zur Beseitigung des Fehlers abgearbeitet. In Formularen mit ListView-Objekten wurden diese sehr wahrscheinlich durch PictureBox-Objekte ersetzt. Diese PictureBox-Objekte müssen durch ListView-Objekte ersetzt werden (PictureBox löschen und ListView-Objekt mit gleicher Größe einfügen).


Beispiel für ein funktionierendes System mit dem Eintrag in der vbp-Datei und Registry:

vbp-Datei: Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCX

Registry:

neu-5

neu-7 neu-9

neu-11

neu-13