(C) 2009 - 2021 by Mourad Louha · Alle Rechte vorbehalten

Excel VBA Typelib Scanner zum Vergleich von Office 2010, 2007 und 2003

In meinem Beitrag „Die wichtigsten Änderungen in VBA für Excel 2010“ vom 5. August 2009 hatte ich bereits über einige Änderungen am VBA Objektmodell in Excel 2010 berichtet. Zudem hatte ich zum damaligen Zeitpunkt begonnen, eine VBA Anwendung zu entwickeln, die das automatisierte Parsen aller VBA Objekte, Methoden, Eigenschaften und Konstanten ermöglicht. Erst vor kurzem hatte ich die Zeit, den „Excel VBA Typlib Parser“ fertig zu stellen.

Die Anwendung ist Freeware und kann am Ende des Beitrages heruntergeladen werden. Die Ausgabetabellen sind zwar geschützt, jedoch ist das Kennwort im Quellcode zu finden, welcher ungeschützt eingesehen werden kann. Die Copyright Tabelle und die Mappe sind ebenfalls geschützt, diese Kennwörter sind nicht öffentlich zugänglich.

Die Anwendung nutzt die Bibliothek „TlbInf32.dll“ aus meinem Systemverzeichnis, welche Funktionen zur Verfügung stellt, um automatisiert Typbibliotheken zu scannen. Ganz wichtig: an dieser Stelle ist anzumerken, dass diese Bibliothek zwingend benötigt wird und auch korrekt in Windows registriert sein muss. Die Software ist ohne diese Bibliothek nicht lauffähig. Die Bibliothek ist aus rechtlichen Gründen im Download der Anwendung nicht enthalten.

Excel VBA Typelib Scanner

Ausserdem ist anzumerken, dass es sicherlich es auch noch andere modernere Methoden gäbe, um Typbibliotheken zu parsen. Für meine Zwecke – der Vergleich der verschiedenen Objektmodelle in den Office Anwendungen – ist aus meiner Sicht diese Vorgehensweise jedoch völlig ausreichend.

Die dreisprachige Anwendung (Deutsch, Englisch und Französisch) ermöglicht das Parsen der Objektmodelle für Microsoft Excel, Access, Word, PowerPoint und Outlook in den Versionen 2003, 2007 und 2010. Anschließend kann komfortabel ein Vergleich der enthaltenen Objekte durchgeführt werden. Im folgenden werde ich die Vorgehensweise zum Scannen am Beispiel von Microsoft Excel erläutern.

Nach dem Öffnen der im Download enthaltenen Excel Datei gelangen Sie zunächst zur Copyright Seite. Dort können Sie gegebenefalls die Anzeigesprache der Anwendung oben links einstellen. Zum Navigieren innerhalb der Mappe können die Pfeilsymbole rechts oben verwendet werden.

Excel VBA Typelib Scanner

Auf der nächsten Seite finden Sie die Gesamtübersicht für den Vergleich der Anwendungen, die jedoch zunächst leer ist, da ja noch kein Scan durchgeführt wurde. Ein weiterer Klick auf die Schaltfläche „Weiter“ führt zur Seite, die zum Scan von Excel 2010 vorgesehen ist. Auf den Folgeseiten sind die Seiten für die Versionen 2007 und 2003 zu finden.

Excel VBA Typelib Scanner

Bevor Excel 2010 gescannt werden kann, muss der Anwendung der Installationsort von Excel 2010 mittgeteilt werden. Klicken Sie hierzu auf das Symbol in der oberen rechten Ecke des Fensters und wählen Sie die Datei „Excel.exe“ aus dem Unterverzeichnis „Office14“ des Installationsverzeichnisses von Microsoft Office 2010 aus.

Excel VBA Typelib Scanner

Nach der Auswahl wird geprüft, ob es sich auch um eine gültige Bibliothek handelt und der Pfad im obereren Bereich eingetragen. Klicken Sie nun auf die Schaltfläche „Parsen“, um den entsprechenden Dialog aufzurufen.

Excel VBA Typelib Scanner

Ein Klick auf den blauen Pfeil startet den Vorgang. Optional können zuvor die Optionen zum Ignorieren der Interface Methoden und/oder zum Parsen der Argumente in Methoden verändert werden. Während des Scans werden die Objekte links und die Objektelemente rechts in Statuszeilen angezeigt. Nach Beendigung des Scans und dem Schließen des Dialoges erhalten Sie eine zur folgenden Abbildung ähnliche Ansicht:

Excel VBA Typelib Scanner

Auf der linken Seite werden Ihnen Informationen zum Typ und die gesetzten Attribute des gescannten Elementes angezeigt, wobei folgende Abkürzungen verwendet werden:

  • Typen
    O = Objekt
    E = Eigenschaft
    M = Methode oder Ereignis
    K = Konstante
  • Attribute
    I = Interface Methode
    V = Versteckt
    P = Schreibgeschützt
    O = Instanziierung über Set

War die Option zum Parsen der Funktionsargumente gesetzt, werden diese entsprechend der üblichen VBA Syntax aufgeschlüsselt unterhalb den Deklaration der Methoden, Ereignissen oder Eigenschaften angezeigt.

Um später einen Vergleich zwischen den verschiedenen Excel Versionen durchführen zu können, müssen die jeweiligen Versionen von Excel ebenfalls gescannt werden. Navigieren Sie dazu auf die Folgeseiten und wiederholen Sie den Vorgang pro Version wie zuvor für Excel 2010 beschrieben. Voraussetzung ist natürlich, dass auch die entsprechenden Versionen installiert sind.

Anschließend können wir zur Seite mit der Gesamtübersicht wechseln und dort den Dialog zur Aktualisierung über die Schaltfläche „Update“.

Excel VBA Typelib Scanner

Der Dialog bietet Ihnen Optionen zur Auswahl der Version, die mit den anderen verglichen werden soll sowie weitere Optionen zum Filtern der anzuzeigenden Methoden, Eigenschaften und Konstanten. Um den Vorgang zu starten, klicken Sie auch hier auf den blauen Pfeil. Folgende Abbildung zeigt beispielhaft das Ergebnis von einem Vergleich von Excel 2010 mit Excel 2007 und Excel 2003:

Excel VBA Typelib Scanner

Die Software kennt zudem weitere Funktionen zum Exportieren der Ergebnisse in separate Excel Tabellen oder Optionen zur Auswahl der Sprache, Verzögerungen beim Scannen und Definition der Basisanwendung.

Eine Erläuterung des recht umfangreichen Codes würde den Beitrag hier sprengen; im Wesentlichen sind 5 Module und 3 UserForms im Code zu finden. Das Modul MLP_Api beinhaltet Windows API Funktionen; beispielsweise, um den Standard Dialog zum Öffnen von Dateien ausfzurufen. Das Modul MLP_Sheet enthält die Funktionen, die aus den Tabellen heraus aufgerufen werden. Das Modul MLP_Parser enthält alle Funktionen zum Parsen der Bibliotheken und das Modul MLP_Compare die Funktionen zum Durchführen des Vergleichs. Das Modul MLP_Run enthält Funktionen, die beim Start ausgeführt werden.

Excel VBA Typelib Scanner

Empfehlen kann ich in jedem Fall die Hilfedatei zur „TlbInf32.dll“, die bei Microsoft heruntergeladen werden kann. Der dort enthaltene Beispielcode sowie die Dokumentation bei MSDN sind zum Verständnis zum Umgang mit der „TlbInf32.dll“ und dem Verständnis von Objektbibliotheken hilfreich.

Abschließend möchte ich noch darauf hinweisen, dass das Programm ein VBA Experiment ist, also keinen Anspruch einer kommerziellen Anwendung auf Fehlerfreiheit und Lauffähigkeit unter allen möglichen Windows Betriebssystemen hat. Entwickelt und getestet wurde die Anwendung in Excel 2003 auf einem Windows 2008 Server (DE). Sollten Sie einen Fehler finden oder Anregungen für eine Weiterentwicklung haben, freue ich mich über eine Nachricht.

Im Laufe der nächsten Tage werde ich, beispielsweise für diejenigen unter Ihnen, die keinen Zugriff auf die „TlbInf32.dll“ haben, die Ergebnisse meiner Scans für verschiedene Office Anwendungen hier zum Download bereit stellen.

Diesen Artikel habe ich ebenfalls auf folgenden Webseiten publiziert:

 
Comments