Word mit VBA noch leistungsfähiger gemacht
Suchen und Ersetzen in neuer Qualität
Die in Microsoft Office integrierte Programmiersprache VBA (Visual Basic for Applications) ist bestens geeignet, nicht im Office-Befehlsumfang vorhandene Funktionen flugs selbst zu schreiben. Wer sich mit dieser Sprache ein wenig anfreundet, wird im Laufe der Zeit erstaunt feststellen, das sich damit völlig neue Anwendungen auftun.
Wer Word oder Excel intensiv nutzt, kann sich über einen Mangel an Befehlen und Funktionalitäten eigentlich nicht beklagen. Dennoch gibt es immer mal wieder Fälle, in denen man gerne einen ganz bestimmten Befehl zusätzlich hätte. Auch bereits Vorhandenes findet nicht immer die Zustimmung des Users.
Zum Beispiel ist die Suchen und Ersetzen-Funktion von Word alles andere als einfach handhabbar, wenn es darum geht, etwa bestimmte Sonderzeichen zu entfernen oder Großbuchstaben in Kleinbuchstaben umzuwandeln. In diesen Fällen lohnt ein Griff in die Programmier-Kiste, da via VBA sich rasch entsprechende Funktionen erstellen lassen.
VBA ist nicht besonders schwer zu erlernen, da dahinter ein Basic-Dialekt steht, der über Schlüsselwörter verfügt, die auf der englischen Sprache fusen. So lässt beispielsweise der Befehl ›MsgBox „Heute ist der „ & Date‹ ein Fenster erscheinen, in dem genannte Text und das aktuelle Datum ausgegeben werden. ›Msg‹ ist die Abkürzung für Message, was Nachricht bedeutet.
Besagter Befehl blendet also ein Nachrichtenfenster ein, in dem der genannte Text steht. Das ›&‹-Zeichen ist eine logische UND-Verknüpfung, die das aktuelle Datum mit dem vorherstehenden Text verknüpft, sodass beides in einer Zeile ausgegeben wird.
Start
Um ein neues Makro einzugeben, muss man sich zunächst in die VBA-Entwicklungsumgebung begeben, was über die Tastenkombination ALT+F11 rasch erledigt ist. Sobald man sich dort befindet, gilt es, ein neues Modul anzulegen. Dazu wird aus dem Menü ›Einfügen‹ der Befehl ›Modul‹ gewählt. Nach dem Erstellen des Moduls wird es im Projekt-Baum dargestellt.
In das auf diese Weise erzeugte Befehlsfenster sind nun diejenigen Befehle einzugeben, die den Weg beschreiben, um automatisiert zum gewünschten Resultat zu gelangen. Das ist unter Umständen eine längere Tipperei, die zudem Fehleranfällig ist. Besser ist es, für ein Programmgerüst den Makro-Rekorder einzusetzen und Feinheiten von Hand nachzutragen. Dies hat zudem den Vorteil, dass man auch als VBA-Einsteiger relativ rasch zu ganz beachtlichen Makros kommt.
Der Makro-Rekorder wird über den nach unten weisenden Pfeil im Button ›Makros‹ zugänglich. Ein Klick auf ›Makro aufzchn.‹ startet den Aufzeichnungsvorgang. Ist alles aufgezeichnet, genügt der gleiche Weg, um die Aufzeichnung zu beenden. Das so erstellte VBA-Programm kann nun nach eigenen Wünschen abgeändert werden.
Ein Dialog
Natürlich sind nicht alle Makros dergestalt programmiert, dass man sie sofort starten könnte. Vielfach sind vor dem Ablauf des Makros Attribute festzulegen, die den Programmlauf steuern. Damit dies komfortabel erfolgen kann, gibt es in VBA die Möglichkeit, eigene Dialogfelder zu erstellen. Dazu ist über Einfügen/UserForm ein Fenster zu erzeugen, das mit Buttons, Texten oder Auswahlfeldern nach eigenen Wünschen gestaltet werden kann. Diese Elemente sind über das Einblenden eines Werkzeugkastens nutzbar, der über Bearbeiten/Werkzeugkasten aktiviert wird.
Damit dieses selbstgestaltete Fenster in Office genutzt werden kann, muss eine Möglichkeit geschaffen werden, es aufzurufen. Dies geschieht über den Befehl ›UserForm2.show‹, der in ein Modul geschrieben werden muss. Die Zahl in diesem Befehl ist fortlaufend, sodass beliebige Fenster eingeblendet werden können. Das Modul muss nun noch einen passenden Namen bekommen, der dann automatisch in der Auswahlliste der zur Verfügung stehenden Makros auftaucht.
Tricks
Die Elemente aus dem Werkzeugkasten haben vorab festgelegte Eigenschaften, die jederzeit geändert werden können, was sinnigerweise im Eigenschaften-Fenster erfolgt. Zum Beispiel kann die Eigenschaft ›Caption‹ durch überschreiben des vorgegebenen Textes ein passender Text eingesetzt werden. Über die Zeichenfolge ALT+0174 kann beispielsweise das ®-Zeichen erzeugt werden, wenn nach diesem Zeichen gesucht werden soll, um es aus dem Text automatisch zu löschen.
Die Elemente können zueinander sauber ausgerichtet werden. Zu diesem zweck sind diese anzuklicken, während die STRG-Taste gedrückt wird. Dadurch werden alle Elemente, die zusammen ausgerichtet werden sollen, zusammengefasst. Ein Rechtsklick ermöglicht dann den Zugriff auf die Ausrichtoptionen, die sich stets nach dem letzten selektierten Element richten.
Damit OptionButtons sich nicht gegenseitig stören, beziehungsweise, damit mehrere zusammengehörende Optionbuttons erzeugt werden können, müssen diese den gleichen GroupName haben, sind also zu einer Gruppe zusammenzuschließen. Dazu können die fraglichen Optionbuttons bei gedrückter STRG-Taste zusammen markiert und benannt werden. Dadurch wird es nun möglich, mehreren Optionbuttons den Wert ›True‹ im Feld ›Value‹ zuzuweisen. Dieser Effekt zeigt sich in den schwarzen Punkten, die die Aktivität der Buttons anzeigen.
If then Else
Beim Programmieren einer Abfrage mit ›If then Else‹ ist peinlich genau darauf zu achten, den Befehlstext in die richtige Reihenfolge zu bringen, da sonst Fehlermeldung ungewöhnlicher Art produziert werden. Zum Beispiel ist unbedingt darauf zu achten, dass alles, was nach ›Then‹ folgt, in eine neue Zeile geschrieben wird. Zudem ist jede If Then-Sequenz mit ›End If‹ abzuschließen.
Beispiel:
Wie anhand des Beispiels ersichtlich ist, werden Kommentare mit einem Hochkomma eingeleitet. Grundsätzlich sollte Makros ausführlich dokumentiert werden, damit später kein Rätselraten über dessen Funktion aufkommt.
UserForm öffnen und schließen
Sobald eine UserForm angelegt ist, soll diese in der Regel geöffnet werden, sobald das Makro startet. Dies erledigt der Befehl ›UserForm1.Show‹.
Ist die Arbeit erledigt, könnte man das Fenster bei Nichtgebrauch mit dem X-Button schließen. Schöner ist es allerdings, dies mit einem eigenen Button direkt im selbsterstellten Formular, der eben besagten UserForm, zu bewerkstelligen. Dazu wird einfach ein neuer Button vom Werkzeugfenster in die UserForm gezogen und per Doppelklick darauf ein neuer Makro-Kopf erzeugt. Hier muss lediglich der Befehl ›Unload Me‹ eingetragen werden und schon kann über diesen Button die UserForm geschlossen werden.
Dokument wiederherstellen
Gerade bei umfangreichen Manipulationen am Text passiert es schon einmal, dass das Ergebnis nicht den Erwartungen entspricht. In Word gibt es dazu eine Undo-Funktion. Leider ist es mittels VBA nicht direkt möglich, so einen Befehl zu nutzen. Es gibt jedoch auch dazu einen Trick: Vor der eigentlichen Manipulation wird das Word-Dokument in der Zwischenablage gespeichert und kann von dort jederzeit wieder hervorgeholt werden, sodass sich Fehler schnell ausbügeln lassen.
Die Zwischenablage lässt sich mit wenigen Befehlen ansprechen:
Im Bedarfsfall wird das Dokument mit ›Selection.Paste‹ wiederhergestellt
Sichern und Überspielen
Es ist kein Problem, VBA-Programme auch auf anderen Rechner zu installieren. Dazu sind folgende Dateien zu sichern:
- Das VBA-Programm mit der Endung .BAS
- Die UserForm-Dateien mit den Endungen frm und .frx. Dabei ist anzumerken, dass die frx-Datei automatisch mit der frm-Datei erzeugt wird, wenn die UserForm-Datei exportiert wird.
Die Dateien mit den Endungen .Bas und .frm sind lesbare Dateien, die mit dem Editor gelesen werden können und den eigentlichen VBA-Code enthalten.
Die genannten Dateien werden in ein Verzeichnis etwa eines USB-Sticks kopiert und danach per Import-Funktion des VBA-Editors auf den Zielrechner überspielt. Ab sofort sind auch für diesen Rechner die VBA-Makros verfügbar.
Zum Exportieren muss die gewünschte Datei angeklickt werden, denn es wird ausschließlich die blau markierte Datei exportiert. Wird darauf nicht geachtet, kann es passieren, dass die falsche Datei den Weg auf den Stick nimmt.
Beim Importieren, was direkt vom USB-Stick vorgenommen werden kann, kann es passieren, dass es eine Fehlermeldung gibt, wenn das neue Makro und ein bereits auf dem Rechner Vorhandenes den gleichen Namen besitzen. Daher unbedingt darauf achten, einen eindeutigen, mit Sicherheit nicht zweimal vorkommenden Namen für Module und UserForms zu verwenden. Dies kann im Eigenschaften-Feld vorgenommen werden. Dazu wird im Feld mit der Bezeichnung (Name) der automatisch vergebene Standardname geändert. Für die UserForm bietet sich der Name ›UserFormTexthexe‹ an. Wichtig: Der Name darf keine Leerzeichen enthalten. Zudem muss unbedingt darauf geachtet werden, dass der Aufruf der UserForm mit dem neuen Namen geschieht. Das muss allerdings manuell vorgenommen werden, da dies nicht automatisch geschieht. Es muss also ›UserForm2.show‹ in ›UserFormTexthexe.show‹ geändert werden. Der Name für das Modul wird auf die gleiche Weise geändert, sodass es beim Import keine Probleme mehr geben dürfte.
Damit der Import von VBA-Makros möglich ist, muss bereits eines vorhanden sein, welches man dann mit ›Bearbeiten‹ öffnen kann. Nur bei geöffneten VBA-Editor bekommt man Zugriff auf die Import-Funktion. Sollte noch kein Makro am Zielrechner vorhanden sein, erstellt man einfach eines. Dazu wird schlicht ein beliebiger Makro-Name eingegeben und der Button ›Erstellen‹ betätigt. Die eigentliche Import-Funktion findet sich unter ›Datei‹. Der Import ist genauso einfach, wie das Öffnen einer Word-Datei. Man muss nicht einmal auf die Endungen achten, da der VBA-Editor die einzelnen Dateien anhand ihrer Endung erkennt und richtig zuordnet.
Wenn ein Makro nicht mehr gewünscht ist, so kann es rückstandlos gelöscht werden. Die erfolgende Abfrage bezüglich der vorherigen Sicherung sollte man nicht leichtfertig überspringen. Ebenso einfach ist die UserForm gelöscht, sodass sich der PC danach genauso präsentiert, als hätte er nie mit den selbst erstellten Makros Kontakt gehabt.
Noch mehr Komfort
Natürlich kann dieses VBA-Programm nur als Grundlage dienen, selbst Hand anzulegen, um für die eigenen Zwecke passende Funktionen einzubinden. Ein Vorschlag wäre, einen Button einzubauen, der das rasche Setzen und Löschen der Checkboxen gestattet. Diese Funktion benötigt nur wenig Zeitaufwand, um implementiert zu werden.
Dazu wird zunächst ein Button etwa neben die Checkboxen platziert. Die Steuerung übernimmt eine globale Variable, die über zwei If Then Else-Abfragen unterschiedliche Ereignisse auslöst. Einmal sollen alle Checkboxen deaktiviert und beim nächsten Druck wieder aktiviert werden. Umgesetzt wird dies über die Eigenschaften-Variable ›Value‹, die wechselweise die logischen Zustände ›True‹ und ›False‹ erhält.
Der dazugehörende Programmtext sieht so aus:
Wie man sieht, werden hier zwei Blöcke wechselweise durchlaufen, je nachdem, welchen Wert die Variable ›Fuellen‹ gerade besitzt. Am Ende jeden Unterprogramms wird der Wert von Fuellen geändert, damit der Ablauf korrekt funktioniert.
Nur die Fantasie setzt Grenzen, was das Aufbohren dieses Beispiels betrifft. Gutes Gelingen!
Skript für Profis
Damit das VBA-Programmieren leicht von der Hand geht, sind wichtige Stichpunkte nachfolgend nochmals aufgeführt.
Der VBA-Editor
In den VBA-Editor kommt man nur, indem entweder ein neues Makro erstellt oder ein vorhandenes Makro bearbeitet wird. Die VBA-Entwicklungsumgebung wird zum direkten Erstellen eines Makros per Tastenkombination ALT+F11 aufgerufen.
VBA-Editor starten
Um ein Makro anzulegen, muss man lediglich über Makros/Makros anzeigen zum Button ›Erstellen‹ gelangen. Nachdem ein passender Name in das Eingabefeld eingegeben wurde, wird ein noch leeres Makro erzeugt, dem nun Leben eingehaucht werden muss.
Eine Alternative
Das manuelle Erstellen von VBA-Code ist gerade für Anfänger eine echte Hürde, weshalb dieser Personenkreis gut beraten ist, zunächst vom Makro-Recorder Gebrauch zu machen und von diesem ein Makro aufzeichnen zu lassen, das anschließend manuell verfeinert werden kann. Auf diese Weise lernt man recht schnell den Einsatz der VBA-Befehle kennen.
Der Projektbaum
Im Fenster ›Projekt‹ werden alle Makros beziehungsweise die Module und UserForms übersichtlich dargestellt. Auf diese Weise bleibt das Projekt stets handhabbar.
Ein einfaches Makro
Programmieren in VBA ist einfach. Ein Fenster wird beispielsweise mit dem Befehl ›MsgBox‹ aufgerufen. In Anführungszeichen eingefasster Text wird darin angezeigt. Das &-Zeichen sorgt dafür, dass der Datumsbefehl ›Date‹ mit diesem Text verknüpft wird.Gestartet wird das Makro entweder mit der Taste F5 oder durch Betätigen des Buttons ›Makro‹, Wahl des Makronamens und Druck auf den ›Ausführen‹-Button.
Eine UserForm
Als UserForm bezeichnet man das vom Programmierer selbst gestaltete Fenster. In dieses lassen sich aus einer Werkzeugsammlung Buttons, Checkboxen und Textfelder einfügen. Auf diese Weise entsteht ein ganz persönliches Bedienfeld, das für eine ganz bestimmte Aufgabe maßgeschneidert ist.
Eigenschaften und Ausrichten
Damit die Elemente in der UserForm sauber ausgerichtet sind, genügt es, diese zu markieren (STRG-Taste gedrückt halten) und per Rechtsklick die gewünschte Ausrichtungsart zu wählen. Eigenschaften, wie Farbe, Sichtbarkeit oder Gruppenzugehörigkeit werden im Eigenschaften-Fenster festgelegt.
Gruppen bilden
OptionButtons müssen nach Gruppen sortiert werden, wenn nicht alle Buttons zusammengehören. Dazu werden die zusammengehörenden OptionsButtons markiert und diesen im Feld GroupName ein gemeinsamer, nur für diese Gruppe geltender Name zugewiesen. Auf diese Weise wird verhindert, dass ein unberechtigter Button den Fokus bekommt. Derjenige OptionButton, der bei Start des Makros zuerst aktiv sein soll, muss unter ›Value‹ den Wert ›True‹ erhalten. Die anderen Buttons dieser Gruppe bekommen ›False‹.
Namen ändern
Damit stets deutlich wird, welches Fenster (UserForm) gerade aktiv ist, muss dieses mit einem aussagekräftigen Text beschriftet werden. Dies geschieht, indem unter ›Formulare‹ die entsprechende UserForm gewählt und anschließend unter ›Caption‹ der gewünschte Text eingegeben wird. Ebenso einfach ist der Modulname zu ändern, was unter ›(Name)‹ vorzunehmen ist.
Makro an Button binden
Wenn ein Button betätigt wird, soll in der Regel irgendetwas passieren. Die dafür nötigen Befehle kann man an den Button hängen, indem dieser doppelt angeklickt wird. Dadurch wird ein Makro-Rupf erzeugt, in den die noch fehlenden VBA-Befehle geschrieben werden.
Globale Variablen
Variablen können lokal oder global wirken. In der Regel sollten Variablen stets lokal wirken, damit Seiteneffekte vermieden werden. In manchen Fällen ist dies nicht möglich, etwa bei Zustandsmerkern, die von jeder Stelle des Makros abgefragt werden müssen. In diesem Fall sind globale Variablen die richtige Wahl. Die globale Variable steht oberhalb des Hauptmakros des jeweiligen Moduls.
Makro sichern
Damit das Makro auf verschiedenen Rechnern eingesetzt werden kann, muss es exportiert werden. Dies kann direkt auf einen USB-Stick erfolgen. Zum Exportieren ist darauf zu achten, dass sowohl das Modul, als auch die dazugehörende UserForm jeweils markiert werden müssen, ehe sie exportiert werden. Wird dies nicht beachtet, findet womöglich eine falsche Datei den Weg auf den Stick.
Makro auf Fremdrechner übertragen
Nachdem das Makro auf einen Stick oder eine tragbare Festplatte gesichert ist, kann es von dort direkt in den VBA-Editor eines Fremdrechners importiert werden. Der Import ist genauso einfach, wie das Öffnen einer Word-Datei. Man muss nicht einmal auf die Endungen achten, da der VBA-Editor die einzelnen Dateien anhand ihrer Endung erkennt und richtig zuordnet.
VBA-Programmier-Schema für Texthexe
Download
Diesen Artikel können Sie hier im PDF-Format [179 KB]
herunterladen.
Das Skript im PDF-Format finden Sie hier [692 KB]
.
Wer nicht programmieren will, kann die Texthexe für Word auch herunterladen. Für wie auch immer geartete Schäden, die sich aus der Nutzung beziehungsweise dem Download dieser Dateien ergeben, kann in keinem Fall die Verantwortung übernommen werden.
Die Dateien sind gepackt und müssen mit Windows oder einem Zip-Programm vor Gebrauch entpackt werden. Für die Funktion des Makros müssen alle Bestandteile danach gemäß obiger Anleitung installiert werden.
Texthexe.zip [4 KB]
War dieser Artikel für Sie hilfreich?
Bitte bewerten Sie diese Seite durch Klick auf die Symbole.
Zugriffe heute: 1 - gesamt: 14241.