Die im letzten Artikel vorgestellte Aufzeichnungsfunktion für Makros reicht zur Automatisierung einfacher Aufgaben aus. Will man komplexere Funktionen und vielleicht eine Benutzeroberfläche hinzufügen, muss man in die Programmierung mit VBA einsteigen.
Visual Basic Editor
Programmieren tut man im mitgelieferten Visual Basic Editor (VBE). Der VBE lässt sich über die Tastenkombination ALT+F11 oder aus dem Entwicklungstab des Ribbon starten. Wie das Entwicklungstab eingeblendet wird hatten wir im letzten Artikel besprochen.
Der Funktionsumfang von VBE ist eher rudimentär. Besserung gibt es in Form des Addons MZTools. Dieses liefert viele vermisste Funktionen nach und ist zudem kostenfrei erhältlich. Wichtig: die Version 3.0 wählen.
Eine Funktion die VBE bietet, die man aber wegen ihres aufdringlichen Verhaltens besser abschaltet ist die automatische Fehlerprüfung nach Abschluss eine Zeile. Verlässt man eine Zeile, die ungewollt oder absichtlich noch Fehler enthält, wird man umgehend mit einer Fehlermeldung in Form eines Hinweisfensters bestraft. Diese Funktion kann man getrost abschalten, fehlerhafte Zeilen werden immer noch deutlich sichtbar in rot dargestellt, jedoch wird der Arbeitsfluss nicht mehr unterbrochen.
Teamarbeit
Plant man mit mehreren Leuten im Team zu arbeiten, wird man schnell feststellen, dass das so nicht vorgesehen ist. VBE unsterstützt grundsätzlich nur eine Person. Muss man trotzdem mit mehreren Personen an einem Projekt arbeiten, kann man dies mithilfe eines Versionskontrollsystems wie Subversion versuchen. Ich schreibe versuchen, weil auch diese Art des Arbeitens (bzw. Versionskontrollsysteme allgemein) von VBE nicht unterstützt wird. So kann man zwar Exceldateien unter Versionskontrolle stellen, jedoch können diese mit dem Format nichts anfangen und Änderungen von mehreren Personen auch nicht zusammenführen. Man muss die einzelnen Module und Klassen aus VBE heraus ex- und importieren und das Versionskontrollsystem manuell steuern (etwa über TotoiseSVN für Subversion). Das ist aber auf Dauer ein mühseliges und sehr fehleranfälliges Verfahren.
Ein weiteres Addin für den VBE kann hier zumindest Unterstützung anbieten. Mit CodeCleaner kann man den Ex- und Import der Module automatisieren. Das Versionskontrollsystem muss man aber nach wie vor selbst bedienen.
Der Vollständigkeit halber sei erwähnt, dass es auch ein Addin gibt, das auf Teilen von CodeCleaner aufsetzt und auch den SVN Im- und Export übernimmt. Dieses Addin ist aber einerseits auf Subversion ausgelegt und hat bei mir im Praxiseinsatz nicht überzeugt. Aber beide Addins sind kostenlos und im Quellcode verfügbar, so dass mit etwas VBA-Kenntnissen und Zeit jeder eine eigene Lösung entwickeln kann.
Struktur und Art
Exceldateien unterscheiden sich in solche Mit Codemodulen (*.xlsm) und solche Ohne Codemodule (*.xlsx) und Addins (*.xlam). Addins besitzen keine für den Benutzer sichtbaren Tabellen, diese sind allerdings vorhanden und verwendbar, lassen sich nur nicht für den Benutzer darstellen.
Eine Exceldatei besteht aus:
- Excel-Objekten
- Arbeitsmappe
- Tabellen
- Formulare
- Module
- Klassenmodule
Code lässt sich in allen Teilen ablegen. Der beste Ort hängt von der Art des Problems und der Form des zu entwickelnden Programms ab.
Grob kann man sagen: Arbeitsmappen/Tabellenspezifischer Code wird im entsprechenden Excel-Objekt abgelegt, GUI-Beschreibungen (mit grafischem Editor) und zugehöriger Code als Formulare. Der Großteil des Codes (insbesondere bei Addins) dürfte jedoch in Modulen hinterlegt werden und bei objektorientierter Programmierung in Klassenmodulen.
Addins
Addins dienen dazu Excel um neue Funktionen zu erweitern. Man kann neue Tabellenfunktionen entwickeln, neue Benutzeroberflächen inklusive Ribbon-Einbindung. Es lässt sich auf beinahe jedes Ereignis von Excel reagieren und wenn man will kann man auch komplett die Kontrolle übernehmen und Excel wie seine eigene Anwendung aussehen lassen.
Gerd Tautenhahn
Sehr interessanter Beitrag, besonders der Hinweis auf MZTools wird mir sicher helfen.
Vielen Dank !!