Vor Kurzem durfte ich eine Exceltabelle mit eingebettetem VBA (Visual Basic) anpassen, da einige Vorlagen sich im Laufe der Jahre geändert hatten. In dem Zuge habe ich die als Excel 2003 gespeicherte Datei mit der Endung „xls“ gleich auf das aktuellere Format „xlsm“ gebracht. Die Überraschung kam dann beim Kunden vor Ort, als die Datei bei der Ausführung der VBA Makros meinte ihre VBA Funktion nicht zu finden (dass ich die Fehlermeldung nicht abfotografiert habe ist nun sehr ärgerlich).

Da kamen nun zwei Probleme zusammen: Der Umstieg von Excel 2003 auf 2010 und der Umzug von meinem 64-Bit Windows (wo die Datei in „xlsm“ umgewandelt wurde) und der Versuch, diese Datei auf dem 32-Bit Windows (Excel 2010) wieder laufen zu lassen. Auch die manuelle Ausführung der angezeigten Makros endete mit der Fehlermeldung diese Funktionen nicht zu finden (was lustig ist, denn Excel zeigt mir ja nur die Makros an, die auch vorhanden sind, er sie also schon gefunden haben muss).

Die Lösung brachte der VBA Editor „Microsoft Visual Basic for Applications“, der in Excel mit der Tastenkombination „Alt + F11“ aufgerufen wird. Öffnet man hier das Menü „Extras“ und wählt „Verweise …“, werden die eingebundenen Systembibliotheken angezeigt. Dort zeigte sich, dass die untere der 5 angehakten Bibliotheken mit „NICHT GEFUNDEN: Microsoft Windows Common Controls 6.0 (SP6)“ angezeigt wurde. Am unteren Bereich des Fensters war der vermutete Pfad angegeben, der auf das 64-Bit Verzeichnis von Windows verwies, dass bei einem 32-Bit Windows natürlich nicht existiert!

Als erstes also den Haken bei der fehlenden Bibliothek entfernt und anschließend über die Schaltfläche „Durchsuchen …“ die Datei im Verzeichnis „C:\Windows\System32/“ ausfindig machen (im Dialogfeld zum Suchen der Datei unter dem Dateinamen auch den Dateityp auf „*.ocx“ ändern, da die Datei sonst nicht angezeigt wird!). Nachdem ich die „MSCOMCTL.OCX“ manuell neu eingebunden hatte liefen auch die VBA Makros wieder ohne Fehlermeldung durch und ich Schweißperlen auf meiner Stirn durften einem breiten Grinsen weichen …