Sie sind auf Seite 1von 116

Universittsrechenzentum

Manuela Jrgens Abt.: Wissenschaftl. Anwendungen

Einfhrung in das Arbeiten mit

Applications Visual
for

Basic

Fr Anwender mit Vorkenntnissen in WinWord 97 und Visual Basic-Grundlagen

Fernuniversitt Hagen 1999

Inhaltsverzeichnis
Verzeichnis der Beispiele ............................................................................................... 5 Verzeichnis der Tabellen ................................................................................................ 7

1 2 3

Einleitung........................................................................................................ 9 Makros mit dem Recorder aufzeichnen...................................................... 11 Makros organisieren .................................................................................... 17


3.1 Wie knnen Makros aufgerufen werden? ........................................................ 17
3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 Makro-Aufruf ber ein Dialogfenster ............................................................................ 17 Makro-Aufruf ber einen vorhandenen Menbefehl ..................................................... 17 Makro-Aufruf ber einen eigenen Menbefehl.............................................................. 19 Eigene Menbefehle entfernen....................................................................................... 20 Makro-Aufruf ber Tastenkombinationen (Shortcut) .................................................... 20 Makro-Aufruf ber Symbolleiste ................................................................................... 22

3.2 3.3

Wo werden die Makros gespeichert? .............................................................. 23 Wie kann die Makro-Ausfhrung rckgngig gemacht werden? ...................... 24

Die VBA-Arbeitsumgebung ......................................................................... 25


4.1 4.2 4.3 Ein aufgezeichnetes Makro im VBA-Editor ...................................................... 25 Was sind die Nachteile von aufgezeichneten Makros?.................................... 27 Welches sind die Programmierwerkzeuge des VBA-Editors?......................... 29
4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 Der Projektexplorer........................................................................................................ 29 Das Eigenschaftenfenster ............................................................................................... 31 Das Codefenster ............................................................................................................. 33 Die Menleiste/Die Symbolleiste................................................................................... 33 Die Visual Basic-Hilfe ................................................................................................... 33

4.4 4.5

Wie kann ein Makro getestet werden? ............................................................ 34 Welche Eingabehilfen stellt der VBA-Editor zur Verfgung?............................ 35

VBA-Grundlagen .......................................................................................... 37
5.1 Wie sieht der Aufbau eines VBA-Befehls aus?................................................ 37
5.1.1 5.1.2 5.1.3 Objekte........................................................................................................................... 37 Methoden ....................................................................................................................... 38 Eigenschaften ................................................................................................................. 38

5.2

Was beinhaltet das Word-Objektmodell?......................................................... 39

VBA-Programmierung anhand von Beispielen.......................................... 43


6.1 6.2 Wie werden Word-Objekte und Objekt-Auflistungen verwendet? .................... 43
6.1.1 6.1.2 6.2.1 6.2.2 6.2.3 6.2.4 Die Objekt-Auflistung Documents ............................................................................ 43 Weitere Objekt-Auflistungen: Paragraphs, Words usw............................................ 50 Objektvariablen.............................................................................................................. 52 Die Set-Anweisung ...................................................................................................... 53 Word-Konstanten ........................................................................................................... 54 Spezielle Befehle............................................................................................................ 55

Variablen, Konstanten, Spezielle Befehle........................................................ 52

6.3

Wie kann man in Word-Dokumenten den Cursor bewegen?............................64


6.3.1 6.3.2 6.3.3 6.3.4 Die Methode GoTo ....................................................................................................... 64 Die Methoden HomeKey und EndKey ...................................................................... 66 Die Methoden Movexxx............................................................................................... 67 Die Methoden StartOf und EndOf .............................................................................. 68 Die Methode MoveEnd ............................................................................................... 70 Die Methode WholeStory ............................................................................................ 71 Die Methode Select ..................................................................................................... 71 Die Methode Collapse ................................................................................................ 72 Das Range-Objekt ....................................................................................................... 74 Die Range-Methode .................................................................................................... 75 Die Range-Eigenschaft ............................................................................................... 77 Selection oder Range? ............................................................................................. 77 Die Objekt-Auflistung StoryRanges ........................................................................... 78

6.4

Wie kann man im Word-Dokument markieren?................................................69


6.4.1 6.4.2 6.4.3 6.4.4

6.5

Was sind Range-Objekte und wie werden sie benutzt? ...................................74


6.5.1 6.5.2 6.5.3 6.5.4 6.5.5

6.6 6.7

Wie arbeitet man mit der Zwischenablage? .....................................................80 Wie werden Word-Befehle verwendet?............................................................80
6.7.1 6.7.2 6.7.3 6.7.4 6.7.5 Texte eingeben und bearbeiten ...................................................................................... 80 Texte formatieren........................................................................................................... 82 Mit Tabellen arbeiten..................................................................................................... 87 Funoten und Endnoten einfgen .................................................................................. 89 Kopf- und Fuzeilen einfgen ....................................................................................... 89

Verwendung von Word-Dialogfeldern ........................................................ 91


7.1 7.2 Wie wird ein integriertes Dialogfeld benutzt? ...................................................91 Wie knnen Voreinstellungen in Dialogfeldern eingestellt werden? .................94

Entwicklung eigener Dialogfelder (Userform)............................................ 97


8.1 8.2 8.3 8.4 8.5 Wie wird eine Userform entworfen? .................................................................97 Wie wird das Layout der Userform verndert? .................................................98 Wie werden Userforms aufgerufen? ..............................................................100 Was sind Ereignisprozeduren? ......................................................................101 Wie werden Userform-Steuerelemente im Makro benutzt? ............................102

Automatische Makros ................................................................................ 109


9.1 9.2 Was sind Auto-Makros?.....................................................................................9 Was sind Ereignisse des Word-Dokumentes? ...............................................112

10 Word-Befehle verndern............................................................................ 113 11 Ausblick ...................................................................................................... 115


Sachregister.................................................................................................................117

V Ve er rz ze eiic ch hn niis sd de er rB Be eiis sp piie elle e


Beispiel 1: Buchstabendreher ........................................................................... 12 Beispiel 2: Nachteile eines aufgezeichneten Makros ...................................... 27 Beispiel 3: Alle Fenster ausgeben .................................................................... 48 Beispiel 4: Dokument mit Lese-Passwort speichern....................................... 49 Beispiel 5: Den Inhalt eines Absatzes in einer MessageBox ausgeben ........ 51 Beispiel 6: Einen Absatz zentrieren .................................................................. 55 Beispiel 7: Ein Dokument aktivieren oder ffnen ............................................ 56 Beispiel 8: Alle installierten Schriftarten ausgeben ........................................ 57 Beispiel 9: Alle Felder im Dokument aktualisieren.......................................... 58 Beispiel 10: Schrift formatieren......................................................................... 59 Beispiel 11: Fehlermeldungen erzeugen .......................................................... 60 Beispiel 12: Seitenrnder und Absatzabstnde einstellen ............................. 63 Beispiel 13: Den Cursor bewegen..................................................................... 65 Beispiel 14: Den Cursor ber die Tasten Pos1 und Ende bewegen............... 67 Beispiel 15: Text markieren und formatieren ................................................... 72 Beispiel 16: Alle Funoten formatieren ............................................................ 79 Beispielschnipsel 17: Word-Funktionen aaaaaaText eingeben.......................................................................................... 80

aaaaaaZeichen formatieren................................................................................ 82 aaaaaaAbstze formatieren ............................................................................... 83 aaaaaaFormatvorlagen verwenden ................................................................... 84 aaaaaaRahmen und Schattierungen ................................................................. 84 aaaaaaSeitenrahmen .......................................................................................... 85 aaaaaaTabulatoren ............................................................................................. 85 aaaaaaAufzhlung und Numerierung................................................................ 86 aaaaaaTabellen ................................................................................................... 87 aaaaaaFunoten ................................................................................................. 89 aaaaaaKopf- und Fuzeilen ............................................................................... 89 Beispiel 18: Eine eigene Userform anzeigen.................................................. 100 Beispiel 19: Ereignisprozeduren _Click erstellen .......................................... 101 Beispiel 20: Kontrollkstchen abfragen.......................................................... 102 Beispiel 21: Textfeld fllen............................................................................... 103 Beispiel 22: Listenfeld fllen ........................................................................... 104 Beispiel 23: Dropdown-Listenfeld fllen......................................................... 105 Beispiel 24: Optionsfelder abfragen................................................................ 106 Beispiel 25: AutoNew-Makro erstellen ............................................................ 110

V a Ve er rz ze eiic ch hn niis sd de er rT T ab be elllle en n


Tabelle 1: Markierung mit der Tastatur............................................................. 13 Tabelle 2: Methoden fr Documents ................................................................. 43 Tabelle 3: Methoden fr Document ................................................................... 44 Tabelle 4: Weitere Objektauflistungen.............................................................. 51 Tabelle 5: Prfixe der VBA-Konstanten ............................................................ 54 Tabelle 6: Beispiele fr VBA-Konstanten ......................................................... 54 Tabelle 7: Methoden zur Umrechnung von Maeinheiten............................... 63 Tabelle 8: Word-Konstante des what-Parameters ........................................... 65 Tabelle 9: Word-Konstante des which-Parameters ......................................... 65 Tabelle 10: Word-Konstante der Methoden HomeKey/EndKey ...................... 66 Tabelle 11: Move-Methoden............................................................................... 67 Tabelle 12: Word-Konstante der Move-Methoden............................................ 68

1 Einleitung
Alle Office 97-Anwendungen lassen sich mit Hilfe von Visual Basic for Applications (VBA) um individuelle Funktionen und Befehle erweitern. Dazu existiert eine in Office 97 integrierte komfortable Entwicklungsumgebung, die mit MausUntersttzung und vielen Hilfetexten die Erstellung von Makros wesentlich vereinfachen kann. Die vorliegende Broschre mchte Ihnen die Mglichkeiten von Word-VBA anhand von Beispielen vorstellen. Dabei geht es nicht um eine vollstndige Erluterung aller Programmier-Details, sondern um das Verstehen und Erlernen einiger ausgesuchter grundlegender Programmfunktionen. Ein Word-Makro ist ein Programm, das Word um individuelle und mageschneiderte Funktionen erweitern kann. Dabei knnen unter anderem Was ist ein Makro?

hufig auszufhrende Arbeitsschritte rationalisiert werden, Texte automatisiert bearbeitet werden, komplett neue Word-Funktionen entwickelt werden oder vorhandene Word-Befehle durch eigene ersetzt werden.

Dazu knnen Sie z.B. eigene Dialogfelder definieren, die eine Kommunikation mit dem Word-Benutzer ermglichen, um so den Ablauf Ihrer Word-Makros von auen zu steuern. Auch die Zusammenarbeit mit anderen Office-Komponenten ist mglich, wird in dieser Broschre allerdings nicht vorgestellt. VBA (Visual Basic for Applications) ist eine objektorientierte Programmiersprache, die eine Reihe von Anweisungen und Funktionen zur Verfgung stellt, mit deren Hilfe unter anderem fr die Office 97-Anwendungen (Word, Excel, usw.) Makros erstellt werden knnen. Aber auch Produkte die nicht von Microsoft sind, sind bereits oder werden demnchst mit VBA ausgestattet sein (z.B. AutoCad, CorelDraw, WordPerfect). Im Gegensatz zu VB (Visual Basic), knnen mit VBA keine eigenstndigen Programme geschrieben werden: VBA-Programme sind immer nur im ZusammenWas ist VBA?

Seite 9

Einleitung

hang mit einer anderen Anwendung verwendbar (Word-VBA-Programme laufen also nur, wenn auch Word gestartet ist!) VBA-Programme unterteilen sich in zwei Bereiche: 1. Sprachkern: er ist fr alle Office-Anwendungen gleich und stellt Befehle zur Behandlung von Variablen, Kontrollstrukturen, Funktionsaufrufe usw. zur Verfgung. Mit dem Sprachkern wird die Struktur des Programms festgelegt. 2. Objektmodelle: die Objekte stellen die zu verarbeitenden Daten dar. Hierfr existieren fr jede Office-Anwendung (Word, Excel, Access, PowerPoint und Outlook) eigene Objekte, Methoden und Eigenschaften. Diese Broschre stellt Ihnen Word-VBA vor und setzt voraus, dass Ihnen der Sprachkern bekannt ist und Sie ber gute Word-Kenntnisse verfgen.

Literatur

Bei der Erstellung dieser Broschre waren mir folgende Unterlagen sehr ntzlich:

VBA mit Word 97 lernen Microsoft Word 97:Visual Basic Microsoft Word 97 Training: Programmierung

Addison-Wesley Microsoft Press

ISBN: 3-8273-1326-0 ISBN: 3-86063-738-X

Redmonds

Seite 10

2 M a kr o s m i t d e m R e co r d e r aufzeichnen
Den einfachsten Start in die Welt der Makroprogrammierung finden Sie in dem in Word integrierten Recorder: Mit seiner Hilfe kann eine Folge von einzelnen WordBefehlen, Texteingaben, Markierungen usw. zu einem Makro zusammengefasst und unter einem Namen abgespeichert werden. Dieses Makro kann z.B. auf der Symbolleiste abgelegt oder ber eine Tastenkombination aufgerufen werden. Der Makrorecorder kann jedoch auch benutzt werden, um zunchst die Grundlage fr ein Makro zu erzeugen, das dann anschlieend noch mit dem VBA-Editor nachbearbeitet und ergnzt oder optimiert werden kann. Bevor Sie mit der Aufzeichnung eines Makros beginnen, lohnt es sich, einige berlegungen anzustellen: welche Befehle soll das Makro fr Sie ausfhren und aus welcher Situationen heraus wird es spter aufgerufen? Bedenken Sie, dass bei der Aufzeichnung jede einzelne Cursorbewegung gespeichert wird. Es ist also ein gravierender Unterschied, ob Sie den Cursor an den Anfang einer Zeile setzen, indem Sie ihn zeichenweise nach links positionieren oder ob Sie die Taste Pos 1 dafr benutzen. Einfache aufgezeichnete Makros knnen Sie z.B. einsetzen, um Buchstabendreher zu korrigieren, schnell zwei Zeilen miteinander zu vertauschen, einen Satz aus einem Dokument zu lschen oder eine einzelne Seite im Querformat zu drucken. Planung

Seite 11

Makros mit dem Recorder aufzeichnen

Nach der genauen Planung Ihres Makros knnen Sie mit der Aufzeichnung beginnen: Beispiel 1: Buchstabendreher

Das folgende Makro soll dazu dienen, einen Buchstabendreher in einem Wort zu korrigieren. Dazu soll der Cursor zwischen die zu vertauschenden Buchstaben gesetzt werden.

Den Makrorecorder starten

Zum Starten des Recorders whlen Sie die Befehle

Extras / Makro und klicken anschlieend auf Aufzeichnen . Sie gelangen in das nebenstehende Dialogfeld. Hier knnen Sie dem Makro zunchst einen Namen geben. berschreiben Sie einfach den von Word vorgegebenen Namen Makro1 mit dem gewnschten Namen, z.B. Buchstabendreher. Klicken Sie nun auf die Schaltflche OK . Die weiteren Einstellmglichkeiten in diesem Dialogfenster lernen Sie auch noch kennen.

Nun knnen Sie mit der Aufzeichnung beginnen. Das erkennen Sie an der kleinen Symbolleiste, die fr den Makrorecorder

einblendet wird. Gleichzeitig fhrt die Maus ein kleines Tonband mit sich. All Ihre Aktionen, wie Texteingabe oder Anwhlen von Befehlen, werden von Word aufgezeichnet. Dabei gelten allerdings ein paar Regeln, die Sie whrend der Aufzeichnung beachten mssen; insbesondere was das Markieren mit der Maus betrifft:

Alternativ gelangen Sie auch ber einen Doppelklick auf die MAK-Anzeige in der Statusleiste dorthin.

Seite 12

Mit Hilfe des Makro-Rekorders sind u.a. folgende Dinge nicht mglich:

das Markieren von Text mit Hilfe der Maus. Sobald Ihre Maus das Tonband-Zeichen bei sich trgt, knnen Sie den Text nicht mehr mit der Maus markieren. Sehr hilfreich ist deshalb, wenn man wei, dass man auch mit der Tastatur markieren kann. Dazu halten Sie die Shift -Taste gedrckt und verwenden gleichzeitig z.B. die Pfeiltasten in die verschiedenen Richtungen. Eine Auswahl der Markierungsmglichkeiten:

Was wird nicht aufgezeichnet?

Markieren mit der Tastatur

Markierung erweitern
Ein Zeichen nach rechts Ein Zeichen nach links Bis zum Zeilenende Bis zum Zeilenanfang Eine Zeile nach unten Eine Zeile nach oben Eine Seite nach oben Eine Seite nach unten An den Dokumentanfang Komplettes Dokument

Tastenkombination

Tabelle 1: Markierung mit der Tastatur

Das Positionieren des Cursors an eine beliebige Stelle im Dokument mit der Maus wird ebenfalls nicht aufgezeichnet. Statt dessen muss der Cursor mit Hilfe der Pfeiltasten an die gewnschte Stelle bewegt werden.

Seite 13

Makros mit dem Recorder aufzeichnen

Auch die Eingabe von Optionen zur Druckereinrichtung und die Statistiken zu einem Dokument gehren zu den Elementen, die nicht aufgezeichnet werden.

Aber nun zurck zur Aufzeichnung eines Makros. Sobald der Makrorecorder erscheint, wird jede Taste, jeder Befehl, den Sie benutzen aufgezeichnet. Mit den beiden Schaltflchen, die Ihnen der Makrorecorder bietet,
Aufzeichnung beenden

Aufzeichnung anhalten/fortsetzen

knnen Sie die Aufzeichnung aber auch zwischendurch anhalten, wieder fortsetzen oder auch ganz beenden.

Buchstabendreher korrigieren

Nehmen Sie sich nun kurz Zeit, um das Makro zu planen: berlegen Sie, welche Arbeitsschritte ausgefhrt werden knnten, um zwei Zeichen zu vertauschen. Ein Vorschlag: Wenn der Cursor zwischen zwei Zeichen steht, die vertauscht werden sollen, knnen zum Beispiel folgende Schritte aufgezeichnet werden:

Zeichen rechts vom Cursor markieren: markiertes Zeichen ausschneiden (Bearbeiten / Ausschneiden ein Zeichen nach links positionieren ausgeschnittenes Zeichen wieder einfgen (Bearbeiten/Einfgen danach knnen Sie das Makro beenden ) )

Um das Makro zu testen, setzen Sie den Cursor zwischen zwei Buchstaben und whlen zunchst folgenden Befehl: Extras / Makro / Makros. Klicken Sie dort das von Ihnen erstellte Makro Buchstabendreher an und whlen Sie die Schaltflche Ausfhren. (Sie werden gleich noch kennenlernen, dass man ein Makro noch viel einfacher aufrufen kann). Ihr Makro vertauscht die Buchstaben rechts und links vom Cursor.

Achtung!

Soweit so gut: das Makro erledigt jetzt die von Ihnen gewnschte Arbeit. Aber es macht noch mehr: es berschreibt Ihre Zwischenablage! Haben Sie das bei Ihrer Planung bercksichtigt? Besser wre es gewesen, die Zeichen per Drag&Drop zu vertauschen, weil die Zwischenablage dabei nicht verndert wird. Drag&Drop kann bei der Makroaufzeichnung aber nicht einfach per Maus durchgefhrt wer-

Seite 14

den, sondern mit Hilfe der Taste F2 . Sobald Sie etwas markiert haben und F2 drcken, werden Sie in der Statusleiste gefragt: Wohin verschieben? Bewegen Sie dann den Cursor an die gewnschte Stelle und drcken Sie die Return-Taste.

Also, noch einmal die verbesserte Version des Makros:


Zeichen rechts vom Cursor markieren: F2 -Taste drcken den Cursor zwei Zeichen nach links bewegen die Return-Taste drcken.

Seite 15

3 Makros organisieren
3.1 Wie knnen Makros aufgerufen werden?
Es gibt mehrere Mglichkeiten, ein Makro aufzurufen: ber ein Dialogfenster, ber einen bestehenden oder einen eigenen Menbefehl, ber die Symbolleiste oder ber die Tastatur.

3.1.1 Makro-Aufruf ber ein Dialogfenster


ber die Befehle Extras / Makro / Makros gelangen Sie in das Dialogfenster Makros, in dem Sie den Namen Ihres Makros anklicken knnen und anschlieend ber die Schaltflche Ausfhren aufrufen knnen.

3.1.2 Makro-Aufruf ber einen vorhandenen Menbefehl


Um fr ein Makro einen Eintrag in einem Men zu erzeugen, gehen Sie folgendermaen vor:

Extras / Anpassen Registerkarte Befehle. Klicken Sie hier auf die Kategorie Makros. Suchen Sie dann in der Spalte Befehle Ihr eigenes Makro.

Seite 17

Makros organisieren

Ziehen Sie Ihr Makro dann mit der Maus auf die Menleiste und dort auf den gewnschten Befehl. Ziehen Sie weiter mit der Maus nach unten, damit sich das Men ffnet und weiter nach unten an die Stelle im Men, an der es eingefgt werden soll. Lassen Sie die Maus los, sobald Ihr Makro richtig positioniert ist. Das Makro erscheint nun dort mit einem vorgegebenen Namen.

Makronamen ndern

Um diesen Namen zu ndern, markieren Sie ihn in der Befehlsliste und klicken anschlieend auf die Schaltflche Auswahl ndern. Sie knnen nun einen neuen Namen eintragen, unter dem Ihr Makro in der Befehlsliste erscheinen soll.

Schaltflchensymbole benutzen

Hier haben Sie auch die Gelegenheit, dem Text fr Ihre Schaltflche ein Symbol zuzuordnen: Sie knnen ein vorhandenes Schaltflchensymbol kopieren und vor Ihrem eigenen Befehl als Schaltflchensymbol einfgen und Sie knnen ein Schaltflchensymbol ndern, indem Sie aus dem nebenstehenden Vorrat an vordefinierten Symbolen ein passendes auswhlen. Schlielich knnen Sie auch ein ausgewhltes Symbol noch nachtrglich verndern oder bei entsprechender Begabung ein eigenes Symbol gestalten. Dazu steht Ihnen der Schaltflcheneditor zur Verfgung, den Sie ber Schaltflchensymbol bearbeiten aufrufen knnen. Klicken Sie eine der Farben an und gestalten Sie das Symbol nach Ihren Wnschen.

Seite 18

3.1 Wie knnen Makros aufgerufen werden?

Normalerweise wird nur der Name des Makros angezeigt. ber den Befehl Schaltflche und Text wird das ausgewhlte oder erstellte Symbol zustzlich mit dem Makronamen angezeigt. Um eine logische Unterteilung innerhalb der Befehlsliste vorzunehmen, knnen Sie eine Gruppierung beginnen. Dadurch wird vor dem markierten Befehl ein waagerechter Strich in die Befehlsliste eingefgt. Gruppierungen einfgen

3.1.3 Makro-Aufruf ber einen eigenen Menbefehl


Um einen eigenen Menbefehl fr selbsterstellte Makros zu erzeugen, fhren Sie die folgenden Schritte aus:

Klicken Sie auf Extras / Anpassen und whlen Sie die Registerkarte Befehle. Klicken Sie in der Rubrik Kategorie: auf den Eintrag Neues Men. Es erscheint der Befehl Neues Men, den Sie nun mit der Maus auf die Menleiste (oder auch auf die Symbolleiste) ziehen knnen. Auch hier knnen Sie den Namen ndern, indem Sie anschlieend auf die Schaltflche Auswahl ndern klicken und einen neuen Namen eintippen. Der neue Meneintrag ist zunchst allerdings noch leer. Sie knnen ihn mit Ihren Makros fllen, indem Sie wie auf der vorherigen Seite beschrieben verfahren.

Sie knnen den Eintrag Neues Men brigens nicht nur direkt auf die Menleiste ziehen, sondern auch mitten in einer Befehlsliste ablegen. Damit

erreichen Sie eine weitere Unterteilung der Befehle.

Seite 19

Makros organisieren

3.1.4 Eigene Menbefehle entfernen


Fr den Fall, dass Sie den Makro-Aufruf ber ein Men wieder entfernen2 mchten, knnen Sie das am leichtesten auf die folgende Art und Weise erreichen:

Zum Entfernen eines kompletten Mens halten Sie die Alt -Taste gedrckt, whrend Sie mit der Maus den zu lschenden Menpunkt aus der Menleiste ziehen. Zum Entfernen von Befehlen innerhalb von Mens drcken Sie die Tastenkombination Alt + Strg + - . Der Mauszeiger verndert sein Aussehen und nimmt die Form eines dicken Minuszeichens an. Klicken Sie nun zuerst den Menpunkt und dann den zu entfernenden Befehl an. Dieser wird direkt aus dem Men gelscht. Drcken Sie danach die Esc -Taste, um den Mauszeiger wieder in seine ursprngliche Form zu verwandeln.

3.1.5 Makro-Aufruf ber Tastenkombinationen (Shortcut)


Sie knnen das Makro auch einer Tastenkombination zuordnen. Das kann entweder bereits vor der Aufzeichnung des Makros erfolgen, ist aber auch im Nachhinein noch mglich. Zuordnung vor der Aufzeichnung:

Whlen Sie die Befehle Extras / Makro / Aufzeichnen. Im nachfolgenden Dialogfenster vergeben Sie jetzt nicht nur, wie bereits bekannt, einen Namen fr das Makro, sondern klicken anschlieend auf die nebenstehende Schaltflche zum Zuordnen zur Tastatur.

Zuordnung nach der Aufzeichnung:

Whlen Sie die Befehle Extras / Anpassen. Klicken Sie anschlieend auf die Schaltflche

In beiden Fllen gelangen Sie in den nachfolgenden Dialog Tastatur anpassen.

Es wird dabei nicht das Makro selbst gelscht, sondern nur der Aufruf.

Seite 20

3.1 Wie knnen Makros aufgerufen werden?

Wenn Sie die Tastaturzuweisung nachtrglich vornehmen, whlen Sie zunchst die Kategorie Makros aus. Ansonsten gelangen Sie direkt in das nebenstehende Dialogfenster.

Setzen Sie den Cursor in das Feld Neuen Shortcut drcken: und drcken Sie die gewnschte Tastenkombination.

Klicken Sie anschlieend auf die Schaltflche Zuordnen, um die Verbindung zwischen Shortcut und Makro herzustellen. Aber Vorsicht: viele Tastenkombination sind bereits von Word vorbelegt und sollten nicht oder nur in Ausnahmefllen mit eigenen Makros berschrieben werden. Wenn Sie zufllig so einen Shortcut ausgewhlt haben, erscheint die aktuelle Belegung als Hinweis. Eine Anzahl von freien Shortcuts bietet die Verwendung der Alt Taste. Aber auch hier sind einige Buchstaben zum Ansteuern der Menbefehle vorbelegt: Alt + D ffnet zum Beispiel den Befehl Datei in der Menleiste. Weitere freie Shortcuts finden Sie zusammen mit Strg + Alt . Hier knnen Sie alle Ziffern und einige Buchstaben kombinieren. Auch wenn die Finger knapp werden: Die meisten freien Kombinationen bietet die Verwendung mit Strg + Alt + Shift : smtliche Buchstaben, Ziffern und einige Sonderzeichen knnen verwendet werden. Wollen Sie eigene Shortcuts wieder entfernen und alles so einstellen, wie von Word vordefiniert, gengt ein Klick auf die Schaltflche Vorgabe. Nach Rckfrage stellt Word den ursprnglichen Zustand der Tastenkombinationen wieder her. ShortcutVoreinstellung benutzen Vorsicht bei der Shortcut-Vergabe

Seite 21

Makros organisieren

3.1.6 Makro-Aufruf ber Symbolleiste


Wollen Sie fr Ihren Makroaufruf eine eigene Schaltflche auf der Symbolleiste einrichten, so knnen Sie das entweder direkt vor der Aufzeichnung des Makros oder auch im Nachhinein durchfhren. Eigene Symbolleiste erstellen Benutzen Sie sehr viele eigene Makros kann auch die Erstellung einer kompletten eigenen Symbolleiste hilfreich sein.

Whlen Sie unter Extras / Anpassen die Registerkarte Symbolleisten. Klicken Sie auf die Schaltflche Neu. Sie knnen nun einen Namen fr Ihre Symbolleiste vergeben. Zur Angabe, wo Ihre Symbolleiste gespeichert werden soll, lesen Sie das nchste Kapitel 3.2 auf Seite 23. Nachdem Sie auf OK geklickt haben, erscheint Ihre Symbolleiste, die Sie nun an einer beliebigen Stelle positionieren knnen.

Zuordnung vor der Aufzeichnung:

Whlen Sie die Befehle Extras / Makro / Aufzeichnen. Im nachfolgenden Dialogfenster vergeben Sie jetzt nicht nur, wie bereits bekannt, einen Namen fr das Makro, sondern klicken anschlieend auf die nebenstehende Schaltflche zum Zuordnen zur Symbolleiste.

Zuordnung nach der Aufzeichnung:

Whlen Sie die Befehle Extras / Anpassen. Klicken Sie auf die Registerkarte Befehle und whlen Sie die Kategorie Makros.

Genauso wie bei der Erstellung eigener Menpunkte, geht es nun weiter: Symbolleiste mit Schaltflchen fllen Ziehen Sie das gewnschte Makro in die eigene Symbolleiste. Sobald Sie die Maus loslassen, erscheint der komplette Makroname. Klicken Sie auf die Schaltflche Auswahl ndern, um ein Schaltflchensymbol auszuwhlen oder selbst zu erstellen. (Nheres zum Arbeiten mit Schaltflchensymbolen siehe Seite 18).

Seite 22

3.2 Wo werden die Makros gespeichert?

Damit in der Symbolleiste nur die Schaltflche, nicht aber der Makroname angezeigt wird, klicken Sie als nchstes auf den Eintrag Standard. Auch wenn der Makroname nicht angezeigt wird, sollten Sie trotzdem einen sprechenden Namen fr das Makro whlen: diese Angabe wird nmlich als QuickInfo angezeigt, wenn Sie die Schaltflche mit der Maus ohne zu Klicken berhren. QuickInfo

Um zwischen logisch zusammengehrenden Makro-Schaltflchen senkrechte Trennstriche zu erzeugen, knnen Sie im Anpassen-Dialog jederzeit auf Auswahl ndern klicken und den Eintrag Gruppierung beginnen auswhlen.

Gruppierungen einfgen

Um eigene Schaltflchen aus der Symbolleiste zu entfernen, halten Sie die Alt Taste gedrckt, whrend Sie das zu lschen Symbol mit der Maus aus der Symbolleiste herausziehen. Sie lschen damit nicht das Makro selbst, sondern nur die Schaltflche.

Eigene Schaltflchen lschen

3.2 Wo werden die Makros gespeichert?


Makros werden von Word in einer Dokumentvorlage abgelegt. Das zuvor beschriebene Dialogfenster zum Aufzeichnen von Makros (Seite 12) schlgt zum Beispiel vor, das Makro fr alle Word-Dokumente zur Verfgung zu stellen und es deshalb in der Standarddokumentvorlage normal.dot abzuspeichern. Bentigen Sie ein Makro nicht grundstzlich in jedem Dokument, dann knnen Sie stattdessen auch gezielt eine Dokumentvorlage auswhlen, die das Makro speichern soll. brigens werden auch Ihre vernderten Men- und Symbolleisten, sowie die von Ihnen belegten Tastenkombinationen in einer Dokumentvorlage gespeichert. Dazu knnen Sie in den Dialogfenstern unter Extras / Anpassen ebenfalls entweder die normal.dot auswhlen, um die Anpassungen in allen Dokumenten zu benutzen oder eine andere Dokumentvorlage auswhlen. Gnstig ist es, wenn Sie zusammengehrende Makros und Symbole/Shortcuts gemeinsam in der gleichen Vorlage speichern. Makros und Symbolleisten lassen sich zwischen verschiedenen Dokumenten und Dokumentvorlagen hin- und herkopieren, lschen und umbenennen. Dazu whlen Sie den Befehl Extras / Vorlagen und Add-Ins... und klicken anschlieend auf die Schaltflche Organisieren. ber die verschiedenen Registerkarten knnen Seite 23

Makros organisieren

Sie nun zum Beispiel Makros zwischen zwei Vorlagen austauschen. Die standardmig angezeigten Dateien knnen mit der entsprechenden Schaltflche geschlossen werden; anschlieend knnen Sie dann beliebig weitere Dateien ffnen, die die bentigten Makros enthalten.

3.3 Wie kann die Makro-Ausfhrung rckgngig gemacht werden?


Wenn Sie ein Makro aufrufen, werden ja meistens eine gewisse Anzahl verschiedener Eingaben und Befehle automatisch durchgefhrt. Wenn Sie nun die Ausfhrung des gesamten Makros rckgngig machen mchten, so gengt es nicht, einfach auf die Schaltflche zu klicken: damit

wird nmlich nur der letzte Befehl Ihres Makros zurckgenommen. Um die komplette Makroausfhrung rckgngig zu machen, mssen Sie sich die Liste der letzten Befehle ansehen. Alles, was hier mit VBA beginnt, wurde von Ihrem Makro ausgefhrt. Diese Eintrge mssen Sie markieren, damit alle Makroaktionen rckgngig gemacht werden.

Seite 24

4 Die VBA-Arbeitsumgebung
Fr die Erstellung von VBA-Programmen steht Ihnen eine komplette Arbeitsumgebung zur Verfgung. Das Office 97-Paket beinhaltet VBA in der Version 5.0. Sie verfgen damit ber den sogenannten VBA-Editor, der zum Schreiben, Bearbeiten und Testen von Makros benutzt werden kann und ber ein auerordentlich mchtiges Hilfesystem, mit dem Sie jederzeit Ihre VBA-Kenntnisse anhand von Beispielen erweitern knnen, gezielt nach Lsungen fr Fehlermeldungen suchen knnen oder sich auch einfach einen berblick ber die verschiedenen VBAFunktionalitten verschaffen knnen.

4.1 Ein aufgezeichnetes Makro im VBA-Editor


Der einfachste Einstieg in die VBA-Programmierung beginnt in der Regel damit, sich ein Makro, das man aufgezeichnet hat, einfach mal im VBA-Editor anzuschauen. Auch spter noch werden Sie sicherlich immer wieder auf die Mglichkeit zurckgreifen, ein Makro aufzuzeichnen, um es dann im VBA-Editor weiter zu verfeinern: damit erspart man sich hufig Schreib- und Programmierarbeit. Das Makro, das wir zu Anfang dieser Broschre aufgezeichnet haben, schauen wir uns nun einmal im Editor an, um an diesem Beispiel sowohl die VBA-Umgebung, als auch den ersten VBA-Programmcode kennenzulernen. Whlen Sie die Befehle Buchstabendreher im VBA-Editor

Extras / Makro / Makros Markieren Sie anschlieend Ihr aufgezeichnetes Makro und klicken Sie auf die Schaltflche Bearbeiten. Der Microsoft VisualBasic-Editor wird aufgerufen. In der Task-Leiste Ihres Windows-Betriebssystems bleibt aber die Anwendung Word weiterhin sichtbar, so dass Sie jederzeit zwischen Word und dem VBA-Editor wechseln knnen.

Seite 25

Die VBA-Arbeitsumgebung

Der VisualBasic-Editor besteht zunchst einmal aus drei einzelnen Fenstern, die sich alle verschieben, vergrern oder auch ganz schlieen lassen. Diese Fenster beinhalten die wichtigsten Visual Basic Programmierwerkzeuge. Projektexplorer

In diesem Fenster befindet sich der sogenannte Projektexplorer. Ein Projekt ist in Word jedes geffnete Dokument und jede aktive Dokumentvorlage. Im obigen Beispiel ist unter anderem also die Word-Datei vba.doc geffnet. Das Projekt Normal besitzt unter anderem einen untergeordneten Ordner Module, in dem sich ein Modul mit dem Namen NewMacros befindet: Hier werden standardmig alle Prozeduren abgelegt, die Sie aufgezeichnet haben. Mehr zum Projektexplorer und seinen Inhalten lesen Sie im Kapitel 4.3.1 auf Seite 29.

Eigenschaftenfenster

Das Eigenschaftenfenster zeigt die Eigenschaften des jeweils markierten Projektes an. Das im obigen Beispiel ausgewhlte Projekt NewMacros besitzt lediglich eine einzige Eigenschaft: einen Namen. Fr andere Projekte wrde hier zum Beispiel angezeigt, ob die automatische Silbentrennung eingestellt ist, an welchen Stellen die voreingestellten Tabstops definiert sind und ob fehlerhafte Wrter durch die Rechtschreibhilfe rot gewellt unterstrichen werden sollen. Das Schne: diese Eigenschaften werden nicht nur angezeigt, sondern lassen sich auch direkt ndern. Mehr zum Eigenschaftenfenster finden Sie im Kapitel 4.3.2 auf Seite 31.

Seite 26

4.2 Was sind die Nachteile von aufgezeichneten Makros?

Im Codefenster sehen Sie den VBA-Code, der durch die Aufzeichnung Ihres Makros automatisch erzeugt wurde. Durch unterschiedliche Farben werden die einzelnen Programmzeilen deutlich voneinander abgesetzt: schwarze Schrift fr die Befehle, blaue Schrift fr speziell reservierte Schlsselwrter und grne Schrift fr Kommentare. Hier schon mal die ersten Erklrungen zu dem eigentlichen Programmcode:
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend

Codefenster

Markiere ein Zeichen rechts


WordBasic.MoveText

Verschiebe den Text


Selection.MoveLeft Unit:=wdCharacter, Count:=2

Gehe zwei Zeichen nach links


WordBasic.OK

Verschiebe hierhin. In diesem Codefenster werden Sie spter Ihre eigenen VBA-Prozeduren erstellen. Weitere Erluterungen zu diesem Fenster finden Sie im Kapitel 4.3.3 auf Seite 33. Die weiteren Elemente des VBA-Editors, wie zum Beispiel die Men- und die Symbolleiste werden Sie im weiteren Verlauf der Broschre noch kennenlernen.

4.2 Was sind die Nachteile von aufgezeichneten Makros?


Angenommen, wir wollen ein Makro zur Zeichenformatierung aufzeichnen: Beispiel 2: Nachteile eines aufgezeichneten Makros Beim Aufruf des Makros soll der markierte Text fett und kursiv formatiert werden

Seite 27

Die VBA-Arbeitsumgebung

Da das Makro fr bereits markierten Text aufgerufen werden soll, besteht die Aufzeichnung lediglich aus dem Formatieren der Zeichen. Erster Ansatz: Sie zeichnen ein Makro auf, das den Text mit Hilfe der Symbole auf der Symbolleiste formatiert. Wenn Sie nun Ihren Text markie-

ren und das neue Makro aufrufen, dann wird der Text fett und kursiv. Was aber passiert, wenn der markierte Text bereits fett oder kursiv oder sogar beides ist? Dann schaltet Ihr Makro das bereits vorhandene Format wieder aus! Beim Aufzeichnen von Makros gibt es keine Mglichkeit, das bisherige Format abzufragen, damit das Makro entsprechend unterschiedlich darauf reagieren kann. Zweiter Ansatz: Sie zeichnen ein Makro auf, das den Text mit Hilfe des Format / Zeichen-Befehls formatiert. Wenn Sie hier fett und kursiv auswhlen, dann werden die markierten Zeichen unabhngig von Ihrem vorherigen Format immer fett und kursiv dargestellt. Wenn wir uns aber das Ergebnis dieses Makros einmal im VBAEditor ansehen, werden wir folgendes vorfinden:
Sub FettKursiv() ' FettKursiv Makro ' Makro aufgezeichnet am 29.04.99 von Manuela Jrgens ' With Selection.Font .Name = "Times New Roman" .Size = 11 .Bold = True .Italic = True .Underline = wdUnderlineNone .StrikeThrough = False .DoubleStrikeThrough = False .Outline = False .Emboss = False .Shadow = False .Hidden = False .SmallCaps = False .AllCaps = False .ColorIndex = wdAuto .Engrave = False .Superscript = False .Subscript = False .Spacing = 0 .Scaling = 100 .Position = 0 .Kerning = 0 .Animation = wdAnimationNone End With End Sub

Word merkt sich jede eingestellte Option aller drei Registerkarten des Format-Dialogfensters. Bentigt htten wir fr unser Beispiel lediglich die Anweisungen: Seite 28

4.3 Welches sind die Programmierwerkzeuge des VBA-Editors?

Sub FettKursiv() With Selection.Font .Bold = True .Italic = True End With End Sub

Das heit, aufgezeichnete Makros knnen sich unter Umstnden sehr aufblhen und beinhalten Anweisungen, die man nicht bentigt und mglicherweise auch nicht beabsichtigt hat. Das aufgezeichnete Makro setzt die Zeichen nmlich jetzt nicht nur fett und kursiv, sondern auch in TimesNewRoman, 11 Punkte, usw. Das selbst geschriebene Makro behlt statt dessen die Schriftart und gre des markierten Bereichs immer bei und stellt fett und kursiv nur zustzlich ein. Insgesamt gesehen, sind aufgezeichnete Makros zu inflexibel, um grere Funktionen damit zu erstellen.

4.3 Welches sind die Programmierwerkzeuge des VBA-Editors?


Wollen Sie den VBA-Editor direkt aufrufen, so benutzen Sie dafr entweder den Befehl Extras / Makros / VisualBasic Editor oder wahlweise die Tastenkombination Alt + V bzw. Alt + F11 . Die Men- und Symbolleisten, der Projektexplorer, das Eigenschaftenfenster und das Codefenster sind neben der ausfhrlichen Hilfefunktion die wichtigsten Werkzeuge des VBA-Editors. Den VBA-Editor aufrufen

4.3.1 Der Projektexplorer


Der Projektexplorer zeigt alle in Word geffneten Dokumente einschlielich der zugeordneten oder geffneten Dokumentvorlagen an. Ist der Projektexplorer auf Ihrem Bildschirm nicht sichtbar, so knnen Sie ihn ber den Befehl Ansicht / Projekt-Explorer anzeigen lassen (alternativ knnen Sie auch das zugehrige Symbol der Symbolleiste verwenden).

Seite 29

Die VBA-Arbeitsumgebung

Im Projektexplorer knnen Sie, wie im Windows-Explorer auch, die einzelnen Hierarchien durch Anklicken des PlusZeichens vor dem entsprechenden Namen ffnen. Projekte Die geffneten Word-Projekte sind jeweils in der obersten Hierarchie angegeben. In unserem Beispiel sind das u.a. die Dokumentvorlagen normal.dot (Projektname: Normal) und Outlook2HB.dot (Projektname: TemplateProject (Projektname: Pro-

(Outlook2HB)), sowie das Dokument vba.doc

ject(Vba)). Jedes Projekt besteht aus weiteren Komponenten. Diese sind in unserem Beispiel zunchst Microsoft Word-Objekte und Module- bzw. Verweise-Ordner, die wir uns nun im einzelnen anschauen wollen. Weitere Komponenten werden wir spter noch kennen lernen. Microsoft Word-Objekte Der Ordner Microsoft Word Objekte beinhaltet immer ein Objekt mit dem Namen ThisDocument. Wir werden uns auf Seite 112 noch nher damit beschftigen. Hier nur soviel: Wenn Sie auf den Eintrag ThisDocument klicken, werden im Eigenschaftenfenster die zu Ihrem Dokument gehrenden Eigenschaften angezeigt. Spter werden Sie kennenlernen, wie Sie mit diesem Eintrag z.B. das ffnen und Schlieen Ihrer Word-Dokumente steuern knnen. Module Der Ordner Module enthlt die zu einem Dokument oder einer Dokumentvorlage gehrigen Makros bzw. Prozeduren. Das obige Beispiel enthlt im Projekt Normal ein Modul mit dem Namen NewMacros. Dieses wird automatisch angelegt, wenn Sie unter Word ein Makro aufzeichnen. Alle aufgezeichneten Makros werden im Projekt Normal unter dem Namen NewMacros abgespeichert. Ein Doppelklick auf diese Datei zeigt im Codefenster die zugehrigen Makros an. Die Modulnamen selbst werden unter Word nicht angezeigt; Sie knnen sich die darin befindlichen Makros entweder ber die Befehle Extras / Makro / Makros oder im Codefenster im Prozedurfeld (siehe Seite 33) anschauen. Verweise Im Ordner Verweise befindet sich ein Hinweis darauf, mit welcher Dokumentvorlage das Projekt verknpft ist. Im obigen Beispiel liegt der Datei vba.doc die Seite 30

4.3 Welches sind die Programmierwerkzeuge des VBA-Editors?

Vorlage Outlook2HB.dot zugrunde. Diese Vorlage ist deshalb ebenfalls im Projektexplorer aufgelistet. Mit der Symbolleiste des Projektexplorers lsst sich die Anzeige der Objekte verndern: zeigt den zum Modul gehrigen Code im Codefenster an. (Alternative: Doppelklick auf den Modulnamen) aktiviert ein ausgewhltes Objekt. Zum Beispiel knnen Sie damit im Projekt vba.doc das Objekt ThisDocument unter Word anzeigen lassen. wechselt zwischen der Ordneransicht und der Ansicht der einzelnen Projektinhalte. Ordneransicht Projektinhalt Symbolleiste

Bei der Ansicht der Projektinhalte wird die hierarchische Gliederung im Ordner nicht angezeigt, sondern nur die einzelnen Komponenten. Ob es sich dabei um ein Modul, ein Dokument oder um einen Verweis handelt, ist dann nur noch aus dem zugehrigen Symbol ersichtlich.

4.3.2 Das Eigenschaftenfenster


Das Eigenschaftenfenster zeigt u.a. die Eigenschaften von Word-Objekten und Modulen an. Diese Eigenschaften lassen sich hier auch direkt verndern. Wenn Sie das Eigenschaftenfenster nicht sehen, knnen Sie es mit Ansicht / Eigenschaftenfenster, dem Symbol oder der Taste F4 anzeigen lassen.

Seite 31

Die VBA-Arbeitsumgebung

Whlen Sie ein Objekt aus, zum Beispiel das Modul NewMacros, so werden die zugehrigen Eigenschaften angezeigt. Die einzige Eigenschaft dieses Moduls besteht aus seinem Namen; diesen knnen Sie bei Bedarf direkt in der zweiten Spalte ndern, indem Sie auf den Eintrag doppelklicken und den neuen Namen (keine Leerzeichen verwenden) einfach eintippen. Dieser erscheint dann in der genderten Form direkt im Projektexplorer. Die Eigenschaften des Dokumentes vba.doc sind schon wesentlich umfangreicher: Auch hier gibt es eine Eigenschaft Name, die Sie verndern knnen. Weitere Eigenschaften sind z.B.

AutoHyphenation: der Wert ist auf True gesetzt, das bedeutet, die Silbentrennung findet automatisch statt. Wenn Sie den Wert hier auf False ndern, wird in dem zugehrigen Word-Dokument die Silbentrennung ausgestellt. Versuchen Sie es mal: mit Extras / Sprache / Silbentrennung knnen Sie den Effekt direkt berprfen.

DefaultTabStop: der Abstand zwischen den Standard-Tabulator-Stellen; diese Angabe wird allerdings in Punkten gerechnet, wobei 1 Punkt 0,035 cm ist. HyphenationZone: die Silbentrennzone, deren Angabe hier ebenfalls in Punkten vorgenommen wird.

Wenn Sie die Bedeutung der weiteren Eigenschaften kennenlernen wollen, hier schon einmal ein kurzer Vorgriff: Klicken Sie auf die gewnschte Eigenschaft und drcken Sie anschlieend die F1 -Taste. Es wird die Visual Basic-Hilfe aufgerufen, die die einzelnen Eigenschaften ausfhrlich erklrt. Genaue Angaben zum Umgang mit der Hilfe erfahren sie noch im Kapitel 4.3.5 auf Seite 33 .

Seite 32

4.3 Welches sind die Programmierwerkzeuge des VBA-Editors?

Das Eigenschaftenfenster verfgt insgesamt ber die zwei Registerkarten Alphabetisch und Nach Kategorien, beide zeigen die gleichen Eigenschaften unterschiedlich sortiert.

4.3.3 Das Codefenster


Das Codefenster zeigt den Inhalt Ihrer Makros an, wenn Sie im Projektexplorer ein Modul doppelt anklicken. Dieses Fenster ist der eigentliche Editor, mit dem Sie den Programmcode Ihrer Makros eingeben.

Zuoberst sind zwei Dropdown-Listenfelder angezeigt: das linke Feld ist das Objektfeld und enthlt normalerweise den Eintrag (Allgemein). Das rechte Feld ist das Prozedurfeld; hier wird der Namen der Prozedur angezeigt, die gerade im Editor bearbeitet wird. Mit den Schaltflchen links unten knnen Sie steuern, ob Sie nur den Programmcode einer Prozedur sehen mchten oder aller Programme eines Moduls.

4.3.4 Die Menleiste/Die Symbolleiste


Der VBA-Editor besitzt eine eigene Menleiste und Symbolleiste: Hiermit knnen Sie u.a. Ihre Makros editieren, speichern, durchsuchen, formatieren und testen.

4.3.5 Die Visual Basic-Hilfe


Da der Visual Basic-Editor eine umfangreiche Bedienungsmglichkeit bietet und die Programmiersprache VBA eine fast unberschaubare Anzahl von Werkzeugen und Anweisungen beinhaltet, wird die VBA-Hilfe Ihr stndiger Begleiter werden. Sehr schn ist, dass die einzelnen Themen nicht nur theoretisch erklrt werden, Seite 33

Die VBA-Arbeitsumgebung

sondern Sie fast immer auch die Mglichkeit haben, sich entsprechende Beispiele anzeigen zu lassen, die Sie bei Bedarf auch direkt in Ihre eigenen Prozeduren kopieren und dann abndern knnen. Sie haben viele Mglichkeiten, die Hilfe-Funktion aufzurufen: Office-Assistent

Sie knnen den Office-Assistenten in der von Word bekannten Form aufrufen und ihm Fragen zu einem bestimmten Thema stellen. Sie knnen ber den Menbefehl ? / Inhalt und Index die Hilfe aufrufen, gelangen dann aber automatisch in die allgemeine Hilfe fr Visual BasicProgrammierung. Sie verfgen jedoch zustzlich ber eine Hilfedatei, die speziell Themen fr Word-VBA enthlt. Wenn Sie diese aufrufen wollen, verfahren Sie folgendermaen:

Menbefehl

Whlen Sie die Registerkarte Inhalt Doppelklicken Sie das Thema Visual Basic-Referenz fr Microsoft Word

Doppelklicken Sie auf den Eintrag Shortcut fr Visual Basic-Referenz fr Microsoft Word.

F1

Ansonsten ist die Taste F1 sehr hilfreich, da Sie ihnen kontextbezogene Hilfen anbietet: befinden Sie sich in einem Fenster oder Dialogfeld, so fordern Sie mit dieser Taste spezielle Hilfe an. Arbeiten Sie statt dessen gerade im Programmcode, knnen Sie jederzeit z.B. eine Anweisung markieren und dann die F1 drcken; Sie erfahren dann mehr ber die gewnschte Anweisung.

4.4 Wie kann ein Makro getestet werden?


Nicht jede Prozedur, die Sie erstellen luft auf Anhieb richtig. Wenn Sie bei der Fehlersuche Probleme haben, knnen Sie das Makro komfortabel Schritt fr Schritt testen. Dazu gibt es im Men den entsprechenden Befehl Testen. Hiermit knnen Sie jede Anweisung einzeln ausfhren; die Makrobearbeitung hlt danach an und Sie knnen in der Word-Anwendung direkt prfen, welche Auswirkung die Anweisung hatte. Zustzlich knnen Sie ber den Befehl Ansicht weitere Fenster zu Kontrollzwecken ffnen, die Ihnen z.B. den Inhalt von Variablen anzeigen.

Seite 34

4.5 Welche Eingabehilfen stellt der VBA-Editor zur Verfgung?

Zum Testen von Prozeduren gibt es auch eine eigene Symbolleiste: whlen Sie Ansicht / Symbolleisten / Testen. Sie erhalten dann die folgenden Schaltflchen:

Eine Einzelschrittprfung knnen Sie bequem durchfhren, indem Sie lediglich auf das Symbol klicken.

4.5 Welche Eingabehilfen stellt der VBA-Editor zur Verfgung?


Fr die Eingabe Ihrer Makros steht Ihnen im VBA-Editor ein sehr empfehlenswertes Hilfsmittel zur Verfgung: ber den Befehl Extras / Optionen knnen Sie auf der Registerkarte Editor einige Automatismen einstellen. Zum Beispiel knnen Sie es so einrichten, dass Elemente, die einen Befehl bilden, automatisch aufgelistet werden und diverse QuickInfos und Tipps angezeigt werden. Das fhrt dann dazu, dass bei der Eingabe der VBA-Befehle automatisch ein DropdownListenfeld angezeigt wird, in dem alle logisch mglichen Vervollstndigungen des Befehls angezeigt werden. Ein Doppelklick auf die Vervollstndigung ergnzt den Befehl entsprechend. Wie sich diese Einstellungen genau bei der VBA-Programmierung auswirken, werden Sie im Verlauf der Broschre noch nher erfahren.

Seite 35

5 VBA-Grundlagen
5.1 Wie sieht der Aufbau eines VBA-Befehls aus?
Vor dem Programmieren mit VBA mssen einige Begriffe der objektorientierten Programmiersprache definiert werden, die die Basis fr die folgenden Ausfhrungen bilden. VBA-Befehle sehen folgendermaen aus: Objektname.Methode [Argument1 [:=Wert][,...]] Objektname.Eigenschaft = Wert Voraussetzung ist die Kenntnis der Begriffe Objekte, Methoden und Eigenschaften.

5.1.1 Objekte
Objekte bilden die eigentliche Grundlage von VBA. Jedes Element von Word wird als Objekt bezeichnet: das Dokument selbst, die einzelnen Abstze des Dokumentes, Tabellen, Felder, Textmarken usw. Das sogenannte Objektmodell vereint in einer hierarchischen Anordnung die einzelnen Objekte von Word und wird im Kapitel 5.2 auf Seite 39 nher beschrieben. Zustzlich werden gleichartige Objekte in sogenannten ObjektAuflistungen zusammengefasst. Diese Auflistungen werden auch als Collection bezeichnet. Mit Hilfe eines Index kann auf die einzelnen Objekte der Collection zugegriffen werden. Ein Beispiel: das gerade aktuell bearbeitete Dokument ist ein DocumentObjekt-Auflistung Colletion Objektmodell

Object, whrend alle zum gleichen Zeitpunkt in Word geffneten Dokumente zur Documents-Auflistung gehren. Um auf das dritte Dokument zuzugreifen, wird dann das Objekt Documents(3) angesprochen. Ebenso kann gezielt auf ein benanntes Dokument zugegriffen werden, z.B. mit Documents("bericht.doc"). Oder: der gerade aktuell bearbeitete Absatz ist ein Paragraph-Objekt, whrend alle im Dokument befindlichen Abstze zur Paragraphs-Auflistung gehren.

Seite 37

VBA-Grundlagen

5.1.2 Methoden
Je nachdem welches Word-Objekt vorliegt, kann man es auf unterschiedliche Arten verwenden. Ein Dokument kann man zum Beispiel ffnen, speichern oder drucken, einen Absatz oder ein Wort kann man lschen oder verschieben. Diese Aktionen werden als Methoden bezeichnet. Jedes Word-Objekt besitzt auch seine eigenen Methoden. Ein Beispiel: um alle geffneten Dokumente zu speichern kann man die Documents-Objekt-Auflistung mit der Methode Save benutzen. Documents.Save Um gezielt ein Dokument zu schlieen wird die Close-Methode verwendet. Documents("bericht.doc").Close Um das erste Wort in einem Dokument zu lschen, verwenden Sie die WordsObjekt-Auflistung mit der Methode Delete. Words(1).Delete

5.1.3 Eigenschaften
Die Eigenschaften beschreiben die Attribute eines Word-Objektes. Zu jedem Objekt gehren ganz spezifische Eigenschaften, die ber Zuweisungen mit Werten belegt werden. Eigenschaften festlegen Beispiele: Ein Dokument hat u. a. die Silbentrennung eingestellt oder nicht (AutoHyphenation). Um diese Eigenschaft festzulegen, knnen Sie folgende Wertzuweisung vornehmen: Documents(1).AutoHyphenation = True Ein Satz hat z.B. als Eigenschaft eine bestimmte Fonteinstellung. Diese knnen Sie ber die Zuweisung: Sentences(1).Font.Name = "Courier" beeinflussen.

Seite 38

5.2 Was beinhaltet das Word-Objektmodell?

Die beiden obigen Beispiele zeigen:

Es gibt Eigenschaften, die nur sogenannte Boolean-Werte True oder False annehmen knnen und es gibt Eigenschaften, die als Zeichenketten festgelegt werden3. Die Eigenschaften sind hierarchisch aufgebaut. Das kann man am zweiten Beispiel Font.Name sehen: Name ist die Eigenschaft des Objektes Font. Dieses ist wiederum die Eigenschaft der Objektauflistung Sentences.

Eigenschaften knnen aber nicht nur gesetzt, sondern auch abgefragt und auf eine andere Variable zugewiesen werden. Beispiele: If Sentences(1).Font.Name = "Courier" Then .... Schriftart = Sentences(1).Font.Name

Eigenschaften abfragen

5.2 Was beinhaltet das Word-Objektmodell?


Sie werden im Laufe dieser Broschre eine Reihe verschiedener Word-Objekte kennenlernen. Dabei werden Sie feststellen, dass die Anzahl der Objekte recht umfangreich ist. Zur Orientierung empfiehlt es sich, einfach mal einen Blick in die Hilfe zu werfen, um sich das Objektmodell ein bisschen genauer anzuschauen. Hier knnen Sie auch zu jedem spteren Zeitpunkt immer mal wieder nachschauen, welche Objekte Sie noch verwenden knnen. Online-Hilfe: Starten Sie die Online-Hilfe wie im Kapitel 4.3.5 auf Seite 34 beschrieben. Whlen Sie die Index-Registerkarte und geben Sie den Suchbegriff Objekthierarchie ein. Sie gelangen in folgende bersicht: Hilfen zum Word-Objektmodell

Zustzlich gibt es noch Eigenschaften mit numerischen Werten.

Seite 39

VBA-Grundlagen

Hier kann man schon einmal eine erste Struktur der Hierarchie erkennen. Durch farbliche Gestaltung knnen Sie auch sehen, welche Objekte lediglich als Objekt (blaue Farbe; im Beispiel: dunkelgraue Farbe) existieren und zu welchen Objekten auch Auflistungen (gelbe Farbe; im Beispiel: hellgraue Farbe) vorhanden sind. Die oberste Stufe der Hierarchie bildet das Objekt Application. Damit ist die Word-Anwendung selbst gemeint. Darunter angesiedelt ist zum Beispiel die Objekt-Auflistung Documents. Durch Anklicken des dort angebrachten roten Pfeils knnen Sie die Hierarchie erweitern und herausfinden, welche Objekte unter Documents aufgefhrt sind. Die untergeordneten Objekte werden als Multiple Objekte bezeichnet. Klicken Sie ein Objekt direkt an, so werden Erluterungen, die mglichen Methoden und Eigenschaften, sowie Beispiele zur Verwendung angezeigt.

Seite 40

5.2 Was beinhaltet das Word-Objektmodell?

Objektkatalog: Weitere Hilfen ber die Zusammenhnge

Objektkatalog

zwischen Objekten, Methoden und Eigenschaften erhalten Sie ber den Objektkatalog. Den knnen Sie sich im VBAEditor anzeigen lassen ber Ansicht / Objektkatalog. Whlen Sie die Word-

Objekte aus. Sie knnen dann die einzelnen Objekte in der linken Fensterhlfte anklicken und erfahren in der rechten Fensterhlfte, welche Methoden und Eigenschaften zur Verfgung stehen. Codefenster: Auch im Codefenster werden Sie bei der Zuordnung von Objekten, und Methoden Codefenster

Eigenschaften

untersttzt. Sobald Sie ein Objekt eingegeben haben und den nachfolgenden Punkt eintippen, ffnet sich ein Dropdown-Listenfeld mit allen zugehrigen Methoden und Eigenschaften. Voraussetzung dafr ist allerdings, dass Sie diesen Automatismus unter Extras / Optionen auf der Registerkarte Editor auch eingestellt haben. An

dem zugehrigen Icon knnen Sie Methoden

und Eigenschaften

auseinanderhalten. Zum Verwenden dieser Dropdown-Eintrge klicken Sie doppelt auf das bentigte Element oder markieren es und benutzen zum Einfgen die Tabulatortaste. Wenn Sie die Befehle von Hand eingeben und die Return-Taste drcken, dann werden Ihre Anweisungen automatisch zur besseren Lesbarkeit in Gro/Kleinbuchstaben umgesetzt. Daran knnen Sie dann auch erkennen, dass Ihre Eingabe korrekt ist. Seite 41

VBA-Grundlagen

Globale Eigenschaften und Methoden

Normalerweise werden die Objekte der Hierarchie von Stufe zu Stufe benutzt. Wollen Sie beispielsweise das erste Dokument speichern, so mssten Sie genaugenommen jede bergeordnete Hierarchiestufe anfhren: Application.Documents(1).Save In den meisten Fllen kann man den Objektnamen Application aber auch weglassen; diese Methoden und Eigenschaften werden dann als global bezeichnet. Es gengt also vllig, die folgende Anweisung zu kodieren. Documents(1).Save

Seite 42

6 VBA-Programmierung anhand von Beispielen


Anhand der nachfolgenden Beispiele mchte ich Ihnen die VBA-Programmierung vorstellen. Aus der Vielfalt von Word-Objekten, wollen wir uns zunchst einige wichtige heraussuchen.

6.1 Wie werden Word-Objekte und ObjektAuflistungen verwendet?


6.1.1 Die Objekt-Auflistung Documents 6.1.1.1 Die Methoden
Alle in Word geffneten Dokumente werden in der Objekt-Auflistung Documents verwaltet. Auf die einzelnen Dokumente kann ber einen Index zugegriffen werden. Die Anzahl der Methoden und Eigenschaften fr diese Objektliste ist berschaubar: Methoden fr Documents Documents.Add Documents.Open Documents.Save Documents.Close Documents.Item Datei / Neu Datei / ffnen Datei / Speichern Datei / Schlieen Bezugnahme auf ein Documents-Objekt
Tabelle 2: Methoden fr Documents

Word-Befehl

Einige der oben genannten Methoden sind sowohl fr die DocumentsObjektliste, als auch fr das Document-Objekt vorhanden.

Seite 43

VBA-Programmierung anhand von Beispielen

Fr das Document-Objekt werden wir uns nur einige ausgewhlte zustzliche Methoden anschauen:

Methoden fr Document Activate PrintOut

Word-Befehl Fenster / Nummer Datei / Drucken

Tabelle 3: Methoden fr Document

Beispiele: Ein neues Dokument anlegen Documents.Add Hierbei wird die globale Dokumentvorlage normal.dot als Basis verwendet. Mchten Sie ein neues Dokument auf der Basis einer anderen Vorlage anlegen, zum Beispiel einen Bericht, so bentigen Sie das Argument Template: Documents.Add Template:="Bericht" Beachten Sie hier, wie auch in den weiteren Beispielen, dass das Argument jeweils einen Wert mit := zugewiesen bekommt!

Ein bestehendes Dokument ffnen

Documents.Open FileName:="C:\Work\Bericht.doc" ber das Argument FilenName mssen Sie den Namen der Datei angeben, die geffnet werden soll. Dabei knnen Sie den kompletten Pfad angeben oder ohne Pfadangabe auf Dateien im aktuellen Verzeichnis zugreifen.

Ein Dokument speichern

Documents("Bericht.doc").Save Das angegebene Dokument wird unter dem gleichen Namen gespeichert. Mit dem gleichen Befehl knnen Sie auch alle geffneten Dokumente speichern. Documents.Save

Seite 44

6.1 Wie werden Word-Objekte und Objekt-Auflistungen verwendet?

Jedes Dokument wird unter seinem Namen gespeichert. Bei Dokumenten, die noch unbenannt sind, gelangen Sie in das normale Speicher-Dialogfenster. Um ein Dokument unter einem anderen Namen zu speichern, verwenden Sie eine andere Methode:
Documents("Bericht.doc").SaveAs FileName:="Zwisch.doc"

Fr das Schlieen von Dokumenten verwenden Sie die Close-Methode: Documents("Zwisch.doc").close Sie gelangen danach in den Dialog, in dem Sie sich entscheiden mssen, ob Sie die nderungen speichern wollen oder nicht. Um diesen Dialog auch in Ihrem Makro zu bercksichtigen, knnen Sie die Anweisung um ein Argument erweitern:
Documents("Bericht.doc").Close SaveChanges:=wdSaveChanges Documents("Zwisch.doc").Close SaveChanges:=wdDoNotSaveChanges

Ein Dokument schlieen

Die Datei Bericht.doc wird mit nderungen gespeichert, die Datei Zwisch.doc ohne. Das obige Beispiel benutzt zum ersten Mal Word-interne Konstanten, die auf Seite 54 noch beschrieben werden. Ein Dokument aktivieren Fokus setzen

Wenn Sie mehrere Dokumente geffnet haben, so knnen Sie gezielt ein Dokument zur Bearbeitung aktivieren. Documents("Bericht.doc").Activate Documents(1).Activate Die Aktivierung eines Dokumentes wird auch als Fokus setzen bezeichnet. Eigentlich haben wir ja schon in den vorherigen Beispielen gezielt einzelne Document-Objekte aus der Documents-Auflistung angesprochen: wir haben dafr entweder den Namen oder eine Indexnummer verwendet. Genaugenommen mssten wir in diesen Fllen mit der Methode Item arbeiten. Da es sich aber um eine Standardmethode fr Auflistungen handelt, kann sie auch

Seite 45

VBA-Programmierung anhand von Beispielen

weggelassen werden. Die beiden folgenden Anweisungen sind also jeweils synonym: Documents.Item(1).Activate Documents(1).Activate

Documents.Item("Bericht.doc").Activate Documents("Bericht.doc").Activate

Ein Dokument drucken

Um ein Document-Objekt zu drucken, verwenden Sie die Methode PrintOut. Verschiedene Argumente erlauben es Ihnen, nur einzelne Seiten zu drucken, Kopien zu erstellen und alle weiteren Optionen, die Ihnen auch der Dialog Datei / Drucken bietet, einzustellen. Um das angegebene Dokument zu drucken, verwenden Sie folgende Anweisung: Documents("Bericht.doc").PrintOut Um nur die aktuelle Seite zu drucken, erweitern Sie den Befehl:
Documents("Bericht.doc").PrintOut Range:=wdPrintCurrentPage

Auch hier erfolgt die Steuerung wieder ber interne Word-Konstanten, die auf Seite 54 noch beschrieben werden.

6.1.1.2 Die Eigenschaft ActiveDocument


Bisher haben wir aus der Documents-Auflistung ber den Index oder den Namen ein bestimmtes Dokument angesprochen. Damit Sie sich auf das Dokument beziehen knnen, das gerade aktiv ist (also den Fokus hat) knnen Sie mit der Eigenschaft ActiveDocument arbeiten. Es handelt sich hierbei um eine Eigenschaft des Objektes Application, wobei man den Objekt-Namen durchaus wieder weglassen kann.

Ein Beispiel:

Seite 46

6.1 Wie werden Word-Objekte und Objekt-Auflistungen verwendet?

Um den Namen des aktiven Dokumentes zu erfahren, knnen Sie ihn mit dem VisualBasic-Befehl MsgBox ausgeben. Vorausgesetzt das aktive Dokument ist das erste der Objektliste, erzeugen die folgenden Befehle identische Ausgaben: MsgBox Documents(1).Name MsgBox Application.ActiveDocument.Name MsgBox ActiveDocument.Name Die Bezugnahme auf ActiveDocument garantiert immer, dass man das aktive Dokument bearbeitet. Um ein bichen Licht ins Dunkel der Objekt-Auflistungen, Objekte und Eigenschaften zu bringen, schauen Sie sich die folgende Graphik an: Sie reprsentiert die Einzelteile der Angabe Application.ActiveDocument.Name. Objekt

Objekt

Eigenschaft Eigenschaft

Durch Anwendung der Eigenschaft ActiveDocument auf das Objekt Application entsteht ein Document-Objekt, dessen Eigenschaft Name nun benutzt werden kann.

6.1.1.3 Die Eigenschaft Count


Die Eigenschaft Count enthlt die Anzahl aller zu einem Zeitpunkt geffneten Dokumente. Um diese Anzahl am Bildschirm auszugeben, verwenden Sie die folgende Anweisung: MsgBox Documents.Count

Seite 47

VBA-Programmierung anhand von Beispielen

6.1.1.4 Beispiele
Beispiel 3: Alle Fenster ausgeben Das Makro soll dazu dienen, die Namen aller geffneten Word-Dokumente in einer MessageBox auszugeben. Das aktive Dokument soll mit Sternchen gekennzeichnet werden.

Sub AlleDokumente() ' Ermitteln aller geffneten Dateien ' Aktives Dokument kennzeichnen

Geffnet = "" . 1 . 2 . 3 . 4 . 5 . 6 Next For Each Dok In Documents Geffnet = Geffnet & vbCr & Dok.Name If ActiveDocument.Name = Dok.Name Then Geffnet = Geffnet & " End If ***"

. 7 . 8

Geffnet = Geffnet & vbCr & "Anzahl geffneter Dokumente: " _ & Documents.Count

' Text ausgeben . 9 MsgBox Geffnet End Sub

Bemerkungen zu den mit Zahlen markierten Zeilen: Zeile 1/6: Die For Each Anweisung bearbeitet die gesamte Objektauflistung. Jedes einzelne geffnete Dokument, das sich in der Auflistung Documents befindet, wird der Reihe nach ausgewhlt. Die For Each-Anweisung endet in der Zeile 6 mit der Anweisung Next. Nheres zu dieser Anweisung erfahren Sie auf Seite 55. Zeile 2/9: Hier wird die Zeichenkette Geffnet zusammengesetzt, die in Zeile 9 mit der MsgBox-Anweisung ausgegeben wird. Dazu wird

Seite 48

6.1 Wie werden Word-Objekte und Objekt-Auflistungen verwendet?

auch die Konstante vbCr (VisualBasic Carriage Return) benutzt, die einen Zeilenumbruch erzeugt. Zeile 3-5: Mit der If-Anweisung wird abgefragt, ob der Name des aktiven Dokuments mit dem Namen der gerade bearbeiteten Datei der Documents-Liste bereinstimmt. Ist das der Fall, wird in Zeile 4 die Zeichenkette Geffnet um Sternchen zur Kennzeichnung der aktiven Datei erweitert. Die If-Anweisung wird in Zeile 5 mit End If beendet. Zeile 7/8: Schlielich wird die Zeichenkette Geffnet noch einmal erweitert und zwar um die Anzahl der geffneten Dateien. Dazu gengt es, die Eigenschaft Count der Documents-Auflistung zu benutzen. Zeile 9: Ausgabe der Zeichenkette Geffnet.

Beispiel 4: Dokument mit Lese-Passwort speichern Das Makro soll dazu dienen, ein Dokument zu ffnen und anschlieend unter einem anderen Namen mit einem Lese-Passwort abzuspeichern.

Sub SpeichernMitPasswort() ' Speichern einer Datei mit Passwort-Schutz

' Dokument ffnen Documents.Open FileName:="c:\Eigene Dateien\Bericht.doc"

'Passwort-Eingabe vorbereiten 1 . 2 . 3 . 4 . Meldung = "Bitte Passwort eingeben:" Titel = "Passwort-Eingabe" Standardwert = "Geheim" Passwort = InputBox(Meldung, Titel, Standardwert)

Seite 49

VBA-Programmierung anhand von Beispielen

' Dokument mit Passwort speichern 5 . 6 . With Documents("C:\Eigene Dateien\Bericht.doc") .SaveAs FileName:="Geheimbericht.doc", Password:=Passwort .Close 7 . End With End Sub

Bemerkungen zu den mit Zahlen markierten Zeilen: Zeile 1-3: Diese Zeilen bereiten den Dialog mit dem Benutzer ber die InputBox vor. Es werden Variablen fr den Meldungstext, fr die Beschriftung der Titelzeile und den Standardwert fr die Eingabe vorbelegt. Zeile 4: Zeile 5/7: Das Passwort wird ber die InputBox mit einem Wert versehen. Die With-Anweisung erleichtert die Bezugnahme auf ein Objekt. Fr die angegebene Objekt-Auflistung Documents brauchen anschlieend nur noch die Methoden und Eigenschaften, allerdings mit dem fhrenden Punkt, eingegeben zu werden. Nheres dazu finden Sie auf Seite 58. Die With-Anweisung wird mit der Anweisung End With in Zeile 7 beendet. Zeile 6: Die Datei wird unter einem neuen Namen gespeichert. Das Argument Password legt das Lese-Passwort fr diese Datei fest. Analog knnten Sie mit dem Argument WritePassword das Schreibpasswort festlegen.

6.1.2 Weitere Objekt-Auflistungen: Paragraphs, Words usw.


Ein Word-Dokument gliedert sich in der Regel immer in folgende Einzelteile: Dokument

 Abschnitt Absatz Satz Wort Zeichen.

Zustzlich enthlt es hufig weitere Elemente: Tabellen, Felder, Textmarken, Formatvorlagen, usw.

Seite 50

6.1 Wie werden Word-Objekte und Objekt-Auflistungen verwendet?

Alle diese Elemente knnen Sie bei Ihrer Makroerstellung benutzen, indem Sie die entsprechenden Objektnamen verwenden. Eine genaue bersicht erhalten Sie mit der Word Visual Basic-Hilfe, indem Sie sich die Objekthierarchie anzeigen lassen und auf den roten Pfeil hinter dem Objekt Documents klicken. Einige der untergeordneten Objekt sind z.B.: Element Abschnitt Absatz Satz Wort Zeichen Funote Tabelle Feld Textmarke Formatvorlage Objektauflistung Sections Paragraphs Sentences Words Characters Footnotes Tables Fields Bookmarks Styles

Tabelle 4: Weitere Objektauflistungen

Beispiel 5: Den Inhalt eines Absatzes in einer MessageBox ausgeben Das Makro gibt einen Absatz in einer MsgBox aus. Dabei soll der Benutzer ber eine InputBox die Absatznummer selbst bestimmen knnen. Es werden solange Abstze angezeigt, bis der Benutzer eine Null eingibt.

Sub AbsatzAnzeigen() ' Den Inhalt von Abstzen in einer MessageBox anzeigen

' InputBox-Vorbereitung Meldung = "Bitte Absatznummer eingeben:" & vbCr & "Abbruch mit 0"

Seite 51

VBA-Programmierung anhand von Beispielen

Titel = "Absatz-Eingabe" Standardwert = 1 1 . 2 . 3 . Absatznummer = InputBox(Meldung, Titel, Standardwert) Do While Absatznummer > 0 Absatz = ActiveDocument.Paragraphs(Absatznummer) MsgBox Absatz Absatznummer = InputBox(Meldung, Titel, Standardwert) 4 . Loop End Sub

Bemerkungen zu den mit Zahlen markierten Zeilen: Zeile 1: Zeile 2/4: Die Absatznummer wird eingelesen. Mit der Do While-Schleife wird die nachfolgende Bearbeitung solange durchgefhrt, wie die eingegebene Absatznummer grer als Null ist. Die Schleife wird in Zeile 4 mit der Loop-Anweisung beendet. Zeile 3: Die Objekt-Variable Absatz bekommt ihren Inhalt von dem Objekt Paragraphs(Absatznummer) und wird anschlieend ausgegeben. Das nchste Kapitel beschreibt diese Objekt-Variablen nher. Analog zum obigen Beispiel knnen Sie auch alle anderen Objekte eines WordDokuments benutzen.

6.2 Variablen, Konstanten, Spezielle Befehle


6.2.1 Objektvariablen
Variablen werden in Visual Basic unter anderem mit der Dim-Anweisung deklariert. In vielen Fllen kann man diese Deklaration zwar auch unterlassen; diese Variablen werden dann implizit deklariert und mit dem Standardtyp Variant versehen, der alle Datenformate verarbeiten kann. In unseren bisherigen Beispielen haben wir genau diesen Mechanismus benutzt. Trotzdem sollten Sie Ihre Variablen besser explizit deklarieren, um Fehlerfllen vorzubeugen. In diesem Kapitel sollen allerdings nur die Datentypen beschrieben werden, die speziell fr Word VBA bentigt werden.

Seite 52

6.2 Variablen, Konstanten, Spezielle Befehle

In Objektvariablen knnen Sie Teile Ihres Word-Dokuments speichern. Dazu definieren Sie die Variable z.B. folgendermaen: ' Allgemeine Objekt-Variable Dim Var As Object ' Objekt-Variable fr Dokumente Dim Dok As Document ' Objekt-Variable fr Abstze Dim Absatz As Paragraph ' Objekt-Variable fr Tabellen Dim Tabelle As Table ' Objekt-Variable fr Schriften Dim Schrift As Font Anschlieend existieren Variablen, die Sie z.B. mit dem gesamten Dokument, einem Absatz, oder einem Fontnamen belegen knnen. Ganz genau genommen, speichert die Object-Variable nicht den Inhalt des Objektes selbst, sondern nur die Adresse (4 Bytes) des Objektes.

Objektvariablen

6.2.2 Die Set-Anweisung


Die Wertzuweisungen fr die oben beschriebenen Objektvariablen knnen Sie mit Hilfe der Set-Anweisung vornehmen: Set Dok = ActiveDocument Set Absatz = Dok.Paragraphs(1) Set Tabelle = Dok.Table(1) Dabei wird der Objektvariablen genau genommen eine Adresse zugewiesen, die auf das Objekt verweist. Das Beispiel 5 von Seite 51 sollte also besser folgendermaen aussehen:
Sub AbsatzAnzeigen() : Dim Absatz As Paragraph : 5 . 6 . Do While Absatznummer > 0 Set Absatz = ActiveDocument.Paragraphs(Absatznummer) : End Sub

Seite 53

VBA-Programmierung anhand von Beispielen

Die Wertzuweisung Nothing hebt die Zuordnung wieder auf: Set Absatz = Nothing

6.2.3 Word-Konstanten
Im Beispiel auf Seite 45 haben wir bereits zum ersten Mal mit Word-Konstanten gearbeitet.
Documents("Zwisch.doc").Close SaveChanges:=wdDoNotSaveChanges

Diese Konstanten dienen eigentlich nur der besseren Lesbarkeit und reprsentieren ganz normale Zahlen. Sie sind jedoch nicht variabel, sondern haben einen konstanten Wert. Zustzlich zu den schon in Visual Basic vorhandenen Konstanten, stellt jede Office-Application noch eigene VBA-Konstanten zur Verfgung. Anhand eines Prfixes knnen diese den einzelnen Anwendungen zugeordnet werden. Prfix wd xl ac vb Application Word Excel Access Visual Basic

Tabelle 5: Prfixe der VBA-Konstanten

Einige Beispiele: vbCr vbTab vbBack wdAlignParagraphCenter wdLineStyleDouble Return Tabulatorzeichen Rckschrittzeichen Zentrierter Absatz Doppelte Linie

Tabelle 6: Beispiele fr VBA-Konstanten

Seite 54

6.2 Variablen, Konstanten, Spezielle Befehle

Beispiel 6: Einen Absatz zentrieren Das folgende Makro zentriert den ersten Absatz des aktiven Dokumentes mit Hilfe einer Word-Konstante.

Sub AbsatzZentrieren() ' Den Inhalt eines Absatzes zentrieren

Dim Absatz As Paragraph

Set Absatz = ActiveDocument.Paragraphs(1) Absatz.Format.Alignment = wdAlignParagraphCenter End Sub

Die Namen der Konstanten muss man sich nicht merken: der VBA-Editor gibt uns bei der Eingabe des Befehls alle mglichen Konstantennamen zur Auswahl an:

6.2.4 Spezielle Befehle 6.2.4.1 For Each-Anweisung


Um alle Objekte einer Objektauflistung der Reihe nach zu durchsuchen, knnen Sie die For Each ... Next-Anweisung verwenden. Mit Exit For kann diese Schleife vorzeitig abgebrochen werden. Im Gegensatz zur normalen For Anweisung, mssen Sie hierbei nicht wissen, wieviel Objekte vorhanden sind und wie hufig Ihre Schleife ausgefhrt werden muss.

Seite 55

VBA-Programmierung anhand von Beispielen

Die allgemeine Syntax des Kommandos sieht folgendermaen aus: For Each Objekt in Objektliste Anweisungen Next

Beispiel 7: Ein Dokument aktivieren oder ffnen

Das folgende Makro aktiviert das Dokument Bericht.doc, wenn es bereits geffnet ist. Ansonsten wird das Dokument geffnet.

Sub DokffnenAktivieren() ' Ein Dokument wird geffnet oder aktiviert, wenn es ' bereits geffnet ist

Dim Dok As Document Dim DokGefunden As Boolean

DokGefunden = False For Each Dok In Documents If Dok.Name = "Bericht.doc" Then Dok.Activate DokGefunden = True Exit For End If Next

If DokGefunden = False Then Documents.Open FileName:="Bericht.doc" End If

End Sub

Seite 56

6.2 Variablen, Konstanten, Spezielle Befehle

Beispiel 8: Alle installierten Schriftarten ausgeben

Das folgende Makro ermittelt alle installierten Schriftarten, sowie die Gesamtzahl der installierten Schriften. Eine neue Datei wird geffnet, in die die Namen aller ermittelten Schriftenarten geschrieben werden.

Sub AlleSchriftarten() ' Die Namen aller Schriftarten werden mit der Anzahl ' der Schriften in eine neue Datei geschrieben

1 .

Dim Schrift As Variant Dim Text As String

Text = "" 2 . For Each Schrift In FontNames Text = Text & vbCr & Schrift Next Text = Text & vbCr & vbCr & _ "Anzahl aller Schriften:" & FontNames.Count

Documents.Add 3 . ActiveDocument.Range = Text End Sub

Bemerkungen zu den mit Zahlen markierten Zeilen: Zeile 1 & 2: In Zeile 2 wird die Variable Schrift benutzt, um das AuflistungsObjekt FontNames zu durchlaufen. Dazu muss die Variable als Variant deklariert werden. Zeile 3: Die Range-Methode wird in Kapitel 6.5.2 auf Seite 75 noch erklrt. Hier nur soviel: die Variable Text wird in das neue leere Dokument geschrieben.

Seite 57

VBA-Programmierung anhand von Beispielen

Beispiel 9: Alle Felder im Dokument aktualisieren

Das folgende Makro bringt alle Felder eines Dokumentes auf den neuesten Stand.

Sub FelderAktualisieren() ' Alle Felder werden aktualisiert

Dim Feld As Field

For Each Feld In Fields 1. Next Feld.Update

End Sub

Bemerkungen zu den mit Zahlen markierten Zeilen: Zeile 1: Die Update-Methode aktualisiert das Feld.

6.2.4.2 With-Anweisung
Die in Word vorhandene Objekt-Hierarchie fhrt hufig dazu, dass innerhalb von Anweisungen sehr lange Objektreferenzen bentigt werden. Die With-Anweisung gestattet es, die Referenzen bersichtlicher zu gestalten und gleichzeitig noch Tipparbeit zu ersparen. Die Syntax With Objekt .Objekt-Methode/Eigenschaft End With

Seite 58

6.2 Variablen, Konstanten, Spezielle Befehle

Statt Dok.Content.Font.Name = "Comic Sans MS" Dok.Content.Font.Size = "14" Dok.Content.Font.Underline = wdUnderlineDotted werden im nachfolgenden Beispiel die Referenzen vereinfacht dargestellt.

Beispiel 10: Schrift formatieren

Das folgende Makro formatiert die Schrift im gesamten Dokument neu.

Sub SchriftFormatieren() ' Die Schrift im Dokument formatieren

Dim Dok As Document Set Dok = ActiveDocument

1. 2. 3. 4. 5.

With Dok.Content.Font .Name = "Comic Sans MS" .Size = "14" .Underline = wdUnderlineDotted End With

End Sub

Bemerkungen zu den mit Zahlen markierten Zeilen: Zeile 1/5: Beginn und Ende der With-Anweisung. Die innenstehenden Anweisungen beziehen sich alle auf Dok.Content.Font. Dabei ist Content eine Eigenschaft, die wir spter noch kennenlernen werden. Hier nur soviel: es wird der gesamte Dokument-Text angesprochen. Zeile 2-4: Die Schrift des Dokuments wird verndert auf die Schriftart Comic Sans MS in einer Schriftgre von 14 Punkten und zustzlich mit einer gepunkteten Linie unterstrichen.

Seite 59

VBA-Programmierung anhand von Beispielen

6.2.4.3 Fehlerbehandlung
Damit die Ausfhrung Ihrer VBA-Makros nicht durch eventuelle Laufzeitfehler abbricht, knnen Fehler-Behandlungs-Routinen erstellt werden. Mit Hilfe des ErrObjektes lt sich die Fehlernummer und Fehlerbeschreibung klren. Eine ganze Reihe von Fehlernummern ist in Visual Basic bereits vordefiniert. Einige davon sind zwar im Prinzip vorhanden, aber zum aktuellen Ausfhrungszeitpunkt des Makros nicht definiert: Sie erhalten dann als Fehlerbeschreibung immer die Zeichenfolge "Anwendungs- oder objektdefinierter Fehler" zurck. Um einen berblick ber alle definierten Fehlerbeschreibungen zu bekommen, knnen Sie folgendes Makro verwenden: Beispiel 11: Fehlermeldungen erzeugen Das folgende Makro erzeugt der Reihe nach Fehlermeldungen und druckt diese in eine Datei. Die Ausgabe anwendungs- oder objektdefinierter Fehlernummern wird dabei unterdrckt. Danach wird eine anwendungs- und objektdefinierte Fehlermeldung (fr Funoten) gezielt ausgelst und ebenfalls ausgegeben. Ein Auszug des Ergebnisses finden Sie auf der bernchsten Seite.

Sub Fehlermeldung() ' Fehlermeldungen anlisten

Dim Fehlermeldung As String Dim i As Long Dim Funote As Object

1.

On Error GoTo FehlerRoutine

' Fehlermeldungen der Reihe nach auslsen 2. 3. 4. Next For i = 1 To 65535 Err.Raise i

' Spezielle Fehlermeldung fr eine Dokument-Komponente auslsen 5. Set Funote = ActiveDocument.StoryRanges(wdFootnotesStory)

'Fehlermeldungen in ein neues Dokument schreiben 6. Documents.Add

Seite 60

6.2 Variablen, Konstanten, Spezielle Befehle

7.

ActiveDocument.Range = Text

8.

Exit Sub

9.

FehlerRoutine: ' Ausgabe leerer Fehlermeldungen unterdrcken

10. If Err.Description <> "Anwendungs11.

oder objektdefinierter Fehler"

Then

Text = Text & Err.Number & ": " & Err.Description & vbCr

12. End If 13. Resume Next

End Sub

Bemerkungen zu den mit Zahlen markierten Zeilen: Zeile 1/9: Durch die On Error GoTo-Anweisung wird im Fehlerfall auf die angegebene Sprungmarke FehlerRoutine in Zeile 9 verzweigt. Zeile 2/4: Die For-Schleife zhlt einen Index i von 1 bis 65535 hoch. Dies ist der fr das Err-Objekt mgliche Wertebereich. Zeile 3: Mit Err.Raise i wird auf das Err-Objekt die Raise Methode mit der Nummer i angewandt: das bedeutet, es wird gezielt die Fehlersituation i ausgelst, was gleichzeitig das Auslsen der Anweisung in Zeile 1 zur Folge hat. Es erfolgt also ein Sprung in Zeile 9, in der sich die FehlerRoutine befindet. Zeile 10/11/12: Innerhalb der Fehlerroutine wird der Text mit den Fehlernummern und Beschreibungen zusammengestellt. Da viele Fehlernummern zunchst nicht definiert sind, wird ihre Ausgabe durch die IfAbfrage in Zeile 10 unterdrckt. Die Eigenschaften Number und Description des Err-Objektes beinhalten jeweils die Fehlernummer und die zugehrige Fehlerbeschreibung. Zeile 13: Mit der Anweisung Resume Next gelingt der Sprung zurck an die Stelle, die der Zeile mit der den Fehler auslsenden Anweisung folgt also der Sprung in Zeile 4. Damit wird die For-Schleife nun solange weitergefhrt, bis der maximale Wert erreicht ist. Seite 61

VBA-Programmierung anhand von Beispielen

Zeile 5:

Hier wird die Objekt-Variable Funote mit einem Wert belegt; was sich genau hinter der Eigenschaft StoryRanges verbirgt, erfahren Sie noch im Kapitel 6.5.5 auf Seite 78. Hier aber schon einmal soviel: Durch die Angabe der Konstante wdFootnotesStory wird auf eine Funote im Text zugegriffen. Existiert keine Funote im Dokument, wie in unserem Beispiel, wird ein Fehler ausgelst. Damit verzweigt das Programm erneut in die FehlerRoutine in Zeile 9 um die Fehlernummer und Beschreibung zu verwerten. In diesem Beispiel wird eine Fehlernummer 5941 ausgelst, die bis zu diesem Zeitpunkt den Fehlertext "Anwendungs- oder objektdefinierter Fehler" enthielt. Dieser Text wird nun auf den unten angegebenen aussagekrftigeren Inhalt verndert.

Zeile 6/7:

Hier wird abschlieend noch ein neues Dokument geffnet, in das die ermittelten Fehlernummern und Beschreibungen geschrieben werden.

Ein kleiner Auszug des Ergebnisses:


3: Return ohne GoSub 5: Unzulssiger Prozeduraufruf oder ungltiges Argument 6: berlauf 7: Nicht gengend Speicher 9: Index auerhalb des gltigen Bereichs : 735: Datei kann nicht in TEMP-Verzeichnis gespeichert werden 744: Suchtext nicht gefunden 746: Begriff zum Ersetzen zu lang 5941: Das angeforderte Element ist nicht in der Sammlung vorhanden.

Seite 62

6.2 Variablen, Konstanten, Spezielle Befehle

6.2.4.4 Maeinheiten
In Makros werden fr alle Maeinheiten generell Punkte verwendet. Bei der Einstellung der Schriftgre ist uns das ja auch ganz gelufig. Wenn Sie aber zum Beispiel die Seitenrnder Ihres Dokumentes einstellen mchten, so ist die Verwendung von Zentimetern sinnvoller. Zur Umrechnung von Punkten in andere Maeinheiten stellt Word-VBA verschiedene Methoden zur Verfgung. Z.B. wird mit der Methode CentimetersToPoints(Zentimeter-Angabe) die angegebene Zentimeterzahl fr die Word-internen Berechnungen in Punkte umgerechnet. Wollen Sie also in Ihrem Makro die Maeinheit 10 cm benutzen, so mssen Sie statt dessen schreiben: CentimetersToPoints(10) Weitere Methoden, die zum Teil vielleicht nicht so gebruchlich sind, knnen Sie der nachstehenden Tabelle entnehmen: Methode CentimetersToPoints(cm) MillimetersToPoints(mm) InchesToPoints(inch) LinesToPoints(lines) Bedeutung Zentimeter in Punkte Millimeter in Punkte Zoll in Punkte Zeilen in Punkte Berechnung 1 cm = 28,35 Punkte 1mm = 2,85 Punkte 1 Zoll = 72 Punkte 1 Zeile = 12 Punkte

Tabelle 7: Methoden zur Umrechnung von Maeinheiten

Beispiel 12: Seitenrnder und Absatzabstnde einstellen

Das folgende Makro ffnet ein neues Dokument und stellt die Seitenrnder, sowie die Abstnde vor und nach jedem Absatz ein.

Seite 63

VBA-Programmierung anhand von Beispielen

Sub SeitenRnder() ' Seitenrnder und Absatzabstnde einstellen

Documents.Add ' Seitenrnder einstellen mit Zentimeter-Angaben With ActiveDocument.PageSetup .LeftMargin = CentimetersToPoints(3) .RightMargin = CentimetersToPoints(5) .TopMargin = CentimetersToPoints(2.5) .BottomMargin = CentimetersToPoints(2.5) End With ' Absatzabstnde einstellen mit Zeilen-Angaben With ActiveDocument.Paragraphs .SpaceAfter = LinesToPoints(2) .SpaceBefore = LinesToPoints(1) End With

End Sub

6.3 Wie kann man in Word-Dokumenten den Cursor bewegen?


Um sinnvolle Makros zu schreiben, ist es auf jedenfall notwendig, den Cursor innerhalb des Dokumentes zu bewegen. Fr Texteingaben und Markierungen, die wir spter noch kennenlernen werden, kann man den Cursor zum Beispiel an den Anfang oder das Ende des Dokumentes platzieren oder auch um zwei Zeichen nach rechts oder unten bewegen. Selection-Objekt Die Stelle, an der sich der Cursor befindet, kann ber das Selection-Objekt angesprochen werden. (Mehr zum Selection-Objekt auf Seite 69). Fr dieses Objekt existieren eine Reihe von Methoden, von denen wir uns im folgenden einige anschauen wollen. 6.3.1

Die Methode GoTo

Mit der GoTo-Methode knnen Sie den Cursor an einer ganz bestimmten Stelle im Dokument positionieren. Dazu bentigen Sie die Angabe verschiedener Parameter:
Selection.GoTo [what:=Element, which:=Richtung, count:=Zhler, name:=Name]

Seite 64

6.3 Wie kann man in Word-Dokumenten den Cursor bewegen?

Die Angaben zu den Parametern what und which werden ber Word-Konstante definiert. Einige Beispiele: What definiert das Element, zu dem positioniert werden soll. Die zugehrige Konstante beginnt immer mit wdGoTo und endet mit dem Namen des Elementes: wdGoToBookmark
(Textmarken)

What

wdGoToLine (Zeilen) wdGoToObject (Objekte) wdGoToPage (Seiten) wdGoToTable (Tabellen) wdGoToSection (Abschnitte)

wdGoToField (Felder) wdGoToFootnote (Funoten) wdGoToGraphic (Graphiken) wdGoToHeading (berschriften)

Tabelle 8: Word-Konstante des what-Parameters

Which gibt die Richtung an. Auch hier beginnen alle Konstanten mit wdGoTo und enden mit einer Angabe zur Richtung: wdGoToFirst (erste) wdGoToNext (nchste) wdGoToLast (letzte) wdGoToPrevious (vorherige)

Which

Tabelle 9: Word-Konstante des which-Parameters

Count bestimmt die Anzahl der Elemente, um die der Cursor bewegt werden soll. Er ist voreingestellt auf den Wert 1 und muss immer positiv sein. Soll rckwrts positioniert werden, so muss das ber das Argument Which eingestellt werden. Die Angabe eines Namens ist dann vorteilhaft, wenn Sie zum Beispiel eine bestimmte Textmarke, ein Feld oder einen Kommentar anspringen wollen. Beispiel 13: Den Cursor bewegen Das folgende Makro positioniert den Cursor an verschiedene Stellen im Dokument unter Verwendung der unterschiedlichen Word-Konstanten. Name Count

Seite 65

VBA-Programmierung anhand von Beispielen

Sub CursorBewegen() ' Den Cursor an verschiedene Positionen bewegen

' zwei Zeilen vor Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=2

' eine Zeile zurck Selection.GoTo What:=wdGoToLine, Which:=wdGoToPrevious

' zur ersten Tabelle im Dokument Selection.GoTo What:=wdGoToTable, Which:=wdGoToFirst

' zur Textmarke "Konstante" Selection.GoTo What:=wdGoToBookmark, Name:="Konstante"

End Sub

6.3.2 Die Methoden HomeKey und EndKey


Die Tasten Pos 1 und Ende knnen ebenfalls in der VBA-Programmierung benutzt werden. Dazu dienen die folgenden Methoden: Selection.HomeKey [Unit, Extend] Selection.EndKey [Unit, Extend] HomeKey entspricht dabei der Taste Pos 1 und EndKey der Taste Ende . Ob an das Ende der Zeile oder an das Ende des gesamten Dokumentes gesprungen werden soll, legen Sie ber die Unit fest. Diese wird durch eine Word-Konstante reprsentiert. wdStory (Dokument) wdLine (Zeile) wdColumn (Tabellenspalte) wdRow (Tabellenzeile)

Tabelle 10: Word-Konstante der Methoden HomeKey/EndKey

Das Argument Extend wird erst im nchsten Kapitel auf Seite 69 beschrieben.

Seite 66

6.3 Wie kann man in Word-Dokumenten den Cursor bewegen?

Beispiel 14: Den Cursor ber die Tasten Pos1 und Ende bewegen

Das folgende Makro positioniert den Cursor an verschiedene Stellen im Dokument unter Verwendung der Pos1/Ende-Tasten in Kombination mit den unterschiedlichen Units.

Sub Pos1Ende() ' Den Cursor ber die Tasten Pos1 und Ende bewegen

' zum Dokumentanfang Selection.HomeKey unit:=wdStory

' zum Zeilenende Selection.EndKey unit:=wdLine

' zur letzten Tabelle im Dokument letzte Zeile/Spalte Selection.GoTo What:=wdGoToTable, Which:=wdGoToLast Selection.EndKey unit:=wdRow Selection.EndKey unit:=wdColumn

End Sub

6.3.3 Die Methoden Movexxx


Eine Reihe weiterer Methoden verschiebt den Cursor ab der aktuellen Position in eine beliebige Richtung. Diese Methoden werden unter Movexxx zusammengefasst. Selection.MoveUp Selection.MoveDown Selection.MoveLeft Selection.MoveRight nach oben nach unten nach links nach rechts

Tabelle 11: Move-Methoden

Die genaue Syntax sieht fr alle Methoden gleich aus: Selection.Movexxx [Unit, Count, Extend]

Seite 67

VBA-Programmierung anhand von Beispielen

Mit Unit wird dabei festgelegt, welche Einheit fr die Cursorbewegung verwendet werden soll. hnlich, wie in den vorhergehenden Methoden, kommen auch hier wieder Word-Konstante zum Einsatz, die abhngig von der verwendeten MoveMethode sind: Fr MoveUp und MoveDown: wdLine (Zeile) wdWindow (Rand des aktiven Fensters) Fr MoveRight und MoveLeft wdCharacter (Zeichen) wdSentence (Satz) wdWord (Wort) wdCell (Tabellen-Zelle) wdParagraph (Absatz) wdScreen (Bildschirmseite)

Tabelle 12: Word-Konstante der Move-Methoden

Mit Count wird die Anzahl der Einheiten festgelegt, um die der Cursor bewegt werden soll. (Anmerkung: bei Unit:=wdWindow wird immer Count:=1 gesetzt). Der Parameter Extend wird im folgenden Kapitel auf Seite 69 nher beschrieben.

6.3.4 Die Methoden StartOf und EndOf


Die Methoden StartOf und EndOf beziehen sich immer auf den Anfang bzw. das Ende einer Texteinheit, die ber eine der blichen Textkonstanten nher beschrieben wird. So eine Texteinheit kann ein Absatz, eine Tabelle, ein Abschnitt und hnliches sein. Die Syntax: Selection.StartOf [Unit, Extend] Selection.EndOf [Unit, Extend] Als Unit knnen die nun schon bekannten Word-Konstanten verwendet werden. Um zum Beispiel an den Anfang eines Absatzes zu springen, benutzten Sie den Befehl:

Seite 68

6.4 Wie kann man im Word-Dokument markieren?

Selection.StartOf Unit:=wdParagraph Die Extend-Angabe wird im nchsten Kapitel vorgestellt.

6.4 Wie kann man im Word-Dokument markieren?


Das A und O bei der Bearbeitung von Word-Dokumenten besteht in der Voraussetzung, Dokumentteile zu markieren. Bevor Sie Abstze verschieben oder lschen knnen, Text formatieren oder kopieren, mssen Sie Word die zu bearbeitenden Stellen mit Hilfe der Markierung bekannt machen. Das geht natrlich auch in VBA-Makros. Aus dem vorherigen Kapitel wissen wir bereits, dass die Cursor-Position als Selection-Objekt bezeichnet wird. Aber auch der markierte Teil eines Dokumentes wird so bezeichnet. Dieses Objekt ist immer ein zusammenhngender Bereich von Zeichen. Aus unserer tglichen Arbeit mit Word wissen wir, dass gleichzeitig immer nur ein Bereich markiert sein kann; folgerichtig existiert in einem Dokument immer genau ein Selection-Objekt. Genau genommen, ergibt sich brigens das Selection-Objekt aus der SelectionEigenschaft des Application-Objektes. Selection-Objekt

Objekt Application Selection Selection Eigenschaft Movexxx

Objekt

Methode

Statt Application.Selection.MoveRight Schreiben Sie dann lediglich

Seite 69

VBA-Programmierung anhand von Beispielen

Selection.MoveRight Um nun eine Markierung im Dokument zu erzeugen, knnen wir zum Teil die Methoden verwenden, die wir bereits im vorherigen Kapitel kennengelernt haben. Die Methoden werden lediglich um den Parameter Extend ergnzt. Markierungen erzeugen
'Wort markieren Selection.MoveRight Unit:=wdWord, Extend:=wdExtend

'Alles bis zum Dokumentanfang markieren Selection.HomeKey Unit:=wdStory, Extend:=wdExtend

'Den aktuellen Absatz markieren Selection.StartOf Unit:=wdParagraph Selection.MoveDown Unit:=wdParagraph, Extend:=wdExtend

'Absatz ab Cursorposition markieren Selection.EndOf Unit:=wdParagraph, Extend:=wdExtend

Der Parameter Extend ist voreingestellt auf den Wert Extend:=wdMove. Dabei wird lediglich der Cursor versetzt, ohne dass eine Markierung erzeugt wird. Mit Extend:=wdExtend wird whrend der Cursorbewegung gleichzeitig markiert.

6.4.1 Markierung erweitern / reduzieren

Die Methode MoveEnd

Die MoveEnd-Methode erweitert die Markierung ab Cursorposition/Markierungsende bis zum Ende des angegebenen Textbereiches. Hierbei wird immer markiert, es ist also nicht mglich, lediglich den Cursor zu verschieben. Aus diesem Grund ist auch kein Extend-Parameter erforderlich. Die Syntax: Selection.MoveEnd [Unit, Count]

Seite 70

6.4 Wie kann man im Word-Dokument markieren?

Ist die Count-Angabe ein positiver Wert, so wird die Markierung in Richtung Dokumentende erweitert, ist der Wert negativ, so wird die Markierung Richtung Dokumentanfang reduziert. 'Markierung um drei Abstze erweitern Selection.MoveEnd Unit:=wdParagraph, Count:=3

'Markierung um einen Absatz reduzieren Selection.MoveEnd Unit:=wdParagraph, Count:=-1

6.4.2 Die Methode WholeStory


Die einfachste Mglichkeit, um das gesamte Dokument zu markieren, bietet die Methode WholeStory. Die Syntax Selection.WholeStory Gesamtes Dokument markieren

6.4.3 Die Methode Select


Mit Select kann ein Element des Dokumentes markiert werden: das knnen zum Beispiel Wrter, Graphiken, Textmarken, Tabellen usw. sein. Beispiele: ActiveDocument.Words(1).Select ActiveDocument.Bookmarks(1).Select ActiveDocument.Tables(1).Select

Seite 71

VBA-Programmierung anhand von Beispielen

6.4.4 Die Methode Collapse


Markierung entfernen Um eine Markierung wieder zu entfernen, knnen Sie die Collapse-Methode verwenden. Selection.Collapse [Direction]

Das Argument Direction gibt die Richtung an - ob der Cursor anschlieend am Anfang oder am Ende der Markierung positioniert werden soll. Die Angabe erfolgt ber die beiden Word-Konstanten wdCollapseStart bzw. wdCollapseEnd. Hinweis Wird die Markierung eines kompletten Absatzes reduziert, so befindet sich der Cursor anschlieend hinter der Absatzmarke und damit im nchsten Absatz. Das kann Auswirkungen auf das weitere Vorgehen Ihres Makros haben. In einigen Fllen kann es deshalb sinnvoll sein, vor dem Anwenden der Collapse-Methode, das Markierungsende um ein Zeichen nach links zu verschieben, damit die Absatzmarke selbst nicht mit markiert ist. Beispiel 15: Text markieren und formatieren Das nachfolgende Makro erstellt eine neue Datei mit Text, markiert anschlieend absatzweise die einzelnen Textstcke und formatiert sie unterschiedlich.

Sub TexteMarkieren() ' Den Text absatzweise markieren und formatieren

Documents.Add With Selection 1. .InsertAfter "Dies ist eine berschrift" & vbCr & vbCr _
& "Dies ist ein normaler Absatz" & vbCr & vbCr _ & "Dies ist eine Unterschrift"

' An den Dokumentanfang springen 2. .HomeKey unit:=wdStory

' Die berschrift markieren und formatieren 3. .MoveDown unit:=wdParagraph, Extend:=wdExtend

Seite 72

6.4 Wie kann man im Word-Dokument markieren?

.Font.Name = "Arial" .Font.Size = "18" .Font.Bold = True

' Den bernchsten Absatz markieren und formatieren 4. 5. .MoveDown unit:=wdParagraph, Count:=2, Extend:=wdMove .EndOf unit:=wdParagraph, Extend:=wdExtend .Font.Size = "12"

' Markierung entfernen / neuen Absatz mit


' Text im gleichen Format hinzufgen

6. 7. 8.

.MoveEnd unit:=wdCharacter, Count:=-1 .Collapse wdCollapseEnd .InsertAfter vbCr & "Dies der nchste Absatz" & vbCr

' Letzten Absatz markieren und formatieren 9. 10. .MoveDown unit:=wdParagraph, Count:=3 .EndKey unit:=wdStory, Extend:=wdExtend .Font.Name = "Script12 BT" End With End Sub

Bemerkungen zu den mit Zahlen markierten Zeilen: Zeile 1: In das neu geffnete Dokument werden drei Textzeilen mit jeweils zwei Absatzschaltungen voneinander getrennt, eingetragen. Zeile 2: der Cursor wird ohne Markierung an den Dokumentanfang gesetzt. Zeile 3: Der Cursor wird mit Markierung um einen Absatz nach unten bewegt. Anschlieend werden diverse Zeichenformate fr den markieren Bereich benutzt (Arial, Schriftgre 18pt, fett). Zeile 4: Der Cursor wird auf den bernchsten Absatz ohne Markierung bewegt. Zeile 5: Bis zum Ende des Absatzes wird markiert; die Schrift wird auf 12pt gesetzt. Zeile 6: Das Ende der Markierung wird um ein Zeichen zurckgenommen. Damit ist die Absatzende-Marke nun nicht mehr markiert. Zeile 7: Die Markierung wird entfernt und der Cursor wird am Ende der Markierung positioniert. Er steht nun direkt vor der AbsatzendeMarke.

Seite 73

VBA-Programmierung anhand von Beispielen

Zeile 8:

Als erstes wird nun eine Absatz-Marke eingefgt. Da der Cursor sich in einem Absatz mit einer 12-Punkte-Schrift befindet, wird dieses Format an den neuen Absatz vererbt. Der eingegebene Text erhlt also die gleiche Formatierung, wie der vorherige Absatz.

Zeile 9: Zeile 10:

Der Cursor wird ohne Markierung vor den letzten Absatz gesetzt. Bis zum Dokumentende wird markiert, damit anschlieend die Schrift auf Script12 BT gesetzt werden kann.

Tip

Wenn Sie in Ihrem Makro feststellen wollen, ob Text markiert ist, dann verwenden Sie dafr die Type-Eigenschaft des Selection-Objekts:
If Selection.Type = wdSelectionIP Then MsgBox "Nichts markiert" Else End If MsgBox Len(Selection.Text) & "Zeichen markiert"

6.5 Was sind Range-Objekte und wie werden sie benutzt?


6.5.1 Das Range-Objekt
Range-Objekte sind eines der wichtigsten Objekte in Word-VBA. Sie existieren auch in anderen Office-Anwendungen, haben aber unterschiedliche Bedeutungen. In Word sind Range-Objekte definiert als eine zusammenhngende Folge von Zeichen. Ein Range hat einen genauen Anfangs- und Endpunkt; er kann das gesamte Dokument, Teile des Dokumentes oder auch lediglich eine einzelne Stelle enthalten. Sie sind zunchst einmal dem Selection-Objekt, das eine Markierung enthlt sehr hnlich, weisen aber einige Unterschiede auf: Unterschiede zum Selection-Objekt

Range-Objekte sind unabhngig von der Markierung im Dokument. Sie verndern einen eventuell markierten Bereich nicht. Es knnen gleichzeitig mehrere Range-Objekte definiert und benutzt werden (zur Erinnerung: ein Selection-Objekt existiert genau einmal im Dokument). Range-Objekte sind im Prinzip Teile des Dokumentes, die ber einen Namen angesprochen werden knnen. Dieser Name bleibt whrend der gesamten Aus-

Seite 74

6.5 Was sind Range-Objekte und wie werden sie benutzt?

fhrung eines Makros verfgbar, nicht aber ber die Beendigung des Makros hinaus. Neben dem Range-Objekt stellt Word-VBA auch eine Range-Methode zur Verfgung, mit der der Anfang und das Ende des Range-Objektes definiert werden knnen und eine Range-Eigenschaft, die andere Objekte zu Range-Objekten macht.

6.5.2 Die Range-Methode


Die Range-Methode macht aus einem Teilbereich des Dokumentes ein RangeObjekt und benennt diesen Teilbereich gleichzeitig. Diese Methode kann nur auf das Document-Objekt angewandt werden. Die Syntax: ActiveDocument.Range [(Start:=zahl, End:=zahl)] ber die einzugebenden Zahlen wird der Anfang und das Ende des Ranges festgelegt. Dabei werden alle Zeichen mitgezhlt, auch die nicht druckbaren und verborgen formatierten. Die Zhlung beginnt mit 0 vor dem ersten Zeichen, wird mit 1 nach dem ersten Zeichen fortgefhrt, usw. Werden die Parameter Start und End nicht angegeben, so wird das gesamte Dokument zum Range-Objekt. Beispiele, angewandt auf den nachfolgenden Text Das ist ein Beispiel Start und End

ActiveDocument.Range (Start:=0, End:=3)

Das ist ein Beispiel

ActiveDocument.Range (Start:=12, End:=12) Das ist ein |Beispiel

ActiveDocument.Range (Start:=8, End:=12) Das ist ein Beispiel

Seite 75

VBA-Programmierung anhand von Beispielen

Um die ersten 100 Zeichen des Dokumentes als Range-Objekt mit dem Namen TextBereich zu definieren und den Text anschlieend zu formatieren, knnen Sie folgende Anweisungen verwenden:
Sub RangeObjekte() Dim TextBereich As Range Set TextBereich = ActiveDocument.Range(Start:=0, End:=100) With TextBereich .Bold = True .Font.Size = 14 End With End Sub

Oder alternativ:
Sub RangeObjekte2() Dim Dok As Document Set Dok = ActiveDocument Dok.Range(Start:=0, End:=100).Bold = True Dok.Range(Start:=0, End:=100).Font.Size = 14 End Sub

Die Range-Methode kann, wie im zweiten Beispiel, auch angewandt werden ohne dass der Bereich einen Namen bekommt. Beziehen sich allerdings mehrere Anweisungen auf den Bereich, so lohnt es sich immer, ihn auch zu benennen. Haben Sie mehrere Range-Objekte definiert, so knnen Sie jederzeit eins davon durch den Befehl Range-Objekt.Select auswhlen. Also zum Beispiel: TextBereich.Select

Seite 76

6.5 Was sind Range-Objekte und wie werden sie benutzt?

6.5.3 Die Range-Eigenschaft


Viele Objekte innerhalb von Word verfgen ber die Eigenschaft Range. Wird sie auf ein Objekt angewandt, so ist das Ergebnis ein Range-Objekt. Wollen Sie den ersten Absatz Ihres Dokumentes als Range-Objekt benutzen, so knnen Sie die folgenden Anweisungen verwenden:
Sub RangeObjekte3() Dim Dok As Document Dim Absatz As Range Set Dok = ActiveDocument Set Absatz = Dok.Paragraphs(1).Range End Sub

Die Variable Absatz enthlt anschlieend den Inhalt des ersten Absatzes. Weitere Objekte, fr die Sie die Range-Eigenschaft verwenden knnen, sind z.B. Character, Words, Sentences, Bookmarks usw. Die Range-Methode kann lediglich fr das Document-Objekt benutzt werden. Dazu werden zustzlich die Parameter Start und End zur Eingrenzung des Range-Objektes zur Verfgung gestellt. Die Range-Eigenschaft wird von verschiedenen Objekten zur Verfgung gestellt, besitzt allerdings keine Parameter. Egal, ob Sie lieber die Methode oder die Eigenschaft verwenden: das Ergebnis ist immer ein Range-Objekt. Unterschiede: Range-Methode Range-Eigenschaft

6.5.4 Selection oder Range?


Viele Funktionen lassen sich sowohl ber Selection- als auch ber RangeObjekte lsen. Da bei Verwendung von Range-Objekten aber die Positionierung und Markierung der Textbereiche entfllt, ist ihre Verwendung in der Regel den Selection-Objekten vorzuziehen. Um zum Beispiel den ersten Absatz eines Dokumentes zu lschen, wrden Sie mit Selection-Objekten folgende Befehle benutzen:
Selection.HomeKey unit:=wdStory Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend Selection.Delete

Seite 77

VBA-Programmierung anhand von Beispielen

Mit einem Range-Objekt gengt die nachstehende Anweisung:


Dok.Paragraphs(1).Range.Delete

6.5.5 Die Objekt-Auflistung StoryRanges


Die Objekt-Auflistung StoryRanges enthlt insgesamt bis zu maximal 11 Range-Objekte, die alle mglichen Dokument-Komponenten darstellen.

Dokumentkomponenten

Die 11 vorhandenen Dokument-Komponenten sind:

Kommentar Fu- und Endnoten Kopf- und Fuzeilen (gerader, ungerader und der ersten Seite) Textfelder Normaler Textbereich

Die Objekt-Auflistung StoryRanges enthlt alle Dokumentkomponenten, die Sie auch tatschlich in Ihrem Dokument benutzen.

StoryRangeEigenschaft

Den Inhalt der StoryRange-Auflistung erfahren Sie ber die gleichnamige StoryRange-Eigenschaft des Document-Objektes und die Verwendung von WordKonstanten, die auf die einzelnen Dokumentkomponenten zugreifen. Um den normalen Textbereich in einer MsgBox auszugeben, knnen Sie beispielsweise die Konstante wdMainTextStory verwenden: MsgBox ActiveDocument.StoryRanges(wdMainTextStory) Weitere Konstante nehmen Bezug auf die restlichen Dokument-Komponenten. Diese werden bei der Eingabe im VBA-Editor direkt als Ergnzungshilfe angezeigt, so dass die Auffhrung aller Konstanten hier nicht ntig ist.

Seite 78

6.5 Was sind Range-Objekte und wie werden sie benutzt?

Beispiel 16: Alle Funoten formatieren Das folgende Makro wechselt, sofern sich Funoten in Ihrem Dokument befinden, in den Funotenbereich Ihres Dokumentes und formatiert alle Texte fett und in einer 12-Punkte-Schrift.

Sub AlleFussnotenFormatieren() ' Alle Funoten im Dokument formatieren

Dim Dok As Document 1. Dim Fussnote As Range Set Dok = ActiveDocument

2. 3. 4. 5.

If Footnotes.Count > 0 Then Set Fussnote = Dok.StoryRanges(wdFootnotesStory) Fussnote.Bold = True Fussnote.Font.Size = 12 End If End Sub

Bemerkungen zu den mit Zahlen markierten Zeilen: Zeile 1: Zeile 2: Die Variable Fussnote wird als Range-Objekt definiert. ber die Eigenschaft Count erfahren Sie, ob sich berhaupt Funoten im Dokument befinden. Zeile 3: Die Variable Fussnote umfasst nach dieser Anweisung smtliche Inhalte aller Funoten im Dokument. Dazu wird sie mit dem Objekt StoryRanges und der Word-Konstanten wdFootnotesStory belegt. Zeilen 4/5: Da die Variable Fussnote nun alle Funotentexte beinhaltet, kann die Formatierung dieses Bereiches direkt vorgenommen werden.

Seite 79

VBA-Programmierung anhand von Beispielen

6.6 Wie arbeitet man mit der Zwischenablage?


Die Methoden Copy, Cut und Paste dienen dazu, bestimmte Objekte in die Zwischenablage (Clipbord) hinein oder hinaus zu befrdern. Das knnen zum Beispiel Range- oder Selection-Objekte sein. Um den ersten Absatz eines Dokumentes in die Zwischenablage zu kopieren verwenden Sie den Befehl: ActiveDocument.Paragraphs(1).Range.Copy Anschlieend knnen Sie den Cursor eine Zeile nach unten bewegen und an der Cursorposition den Inhalt der Zwischenablage wieder einfgen: Selection.MoveDown Selection.Paste Die Cut-Methode arbeitet analog zur Copy-Methode, entfernt allerdings nach der bertragung in die Zwischenablage den markierten Text aus dem Dokument.

6.7 Wie werden Word-Befehle verwendet?


Die Verwendung von Word-Befehlen kann hier natrlich nicht komplett vorgestellt werden. Aber anhand von weiteren Beispielen sollen Sie zumindest einige Grundlagen erfahren, mit denen Sie selbst weiter experimentieren knnen.

6.7.1 Texte eingeben und bearbeiten


Einige der vorangegangenen Beispiele haben bereits Texte in leere Dokumente eingefgt. Hier sollen nun einige weitere Befehle aufgezhlt werden, mit deren Hilfe Texte eingegeben und auch wieder gelscht werden knnen. Die nachfolgenden Anweisungen beziehen sich alle auf die Cursor-Position im Dokument und verwenden dazu das Selection-Objekt. Text eingeben Selection.TypeText Text := text Der angegebene Text wird in das Dokument eingetragen. War zuvor etwas markiert, so wird der Text eventuell berschrieben und zwar dann, wenn unter Extras / Optionen auf der Registerkarte Bearbeiten die Option Eingabe ersetzt Markierung angekreuzt ist. Dies knnen Sie in Ihrem VBA-Programm aber zuvor auch abfragen und die Markierung dann entfernen:

Seite 80

6.7 Wie werden Word-Befehle verwendet?

If Options.ReplaceSelection = True Then Selection.Collapse Direction:=WdCollapseStart End If Der Text wird dann vor der Markierung eingefgt. Alternativen zum Einfgen von Text mit der TypeText-Methode sind zum Beispiel die Methoden InsertAfter und InsertBefore.

Einen Absatz fgen Sie mit der Methode TypeParagraph ein: Selection.TypeParagraph Alternativ kann auch die Word-Konstante vbCr als Text ausgegeben oder die Methode InsertParagraph benutzt werden.

Absatzmarke

Um eine neue Seite zu beginnen, verwenden Sie die Methode InsertBreak: Selection.InsertBreak Die InsertBreak-Methode fgt jedoch nicht nur Seitenwechsel, sondern auch Spalten- und Abschnittswechsel ein. Die Steuerung dieser Methode wird ber diverse Word-Konstanten vorgenommen. Voreingestellt ist .InsertBreak(wdPageBreak); deshalb erfolgt ohne Angabe einer Konstanten ein Seitenwechsel. Zur Eingabe von Sonderzeichen verwenden Sie die InsertSymbol-Methode. Dazu muss man allerdings genau wissen, in welchem Font sich das Sonderzeichen befindet und vor allen Dingen: an welcher Stelle im Font liegt das Symbol.
Selection.InsertSymbol CharacterNumber:=175, Font:="Symbol", _ Unicode:=False

Seitenumbruch

Sonderzeichen

ber den Parameter Font whlen Sie den gewnschten Zeichensatz aus, in unserem Beispiel den Symbol-Font. Die Angabe CharacterNumber legt den ANSI-Code des bentigten Zeichens fest, sofern Unicode:=False eingestellt ist. Der ANSI-Code eines Zeichens ergibt sich, indem Sie auf die Position des Zeichens in der Tabelle die Zahl 31 addieren. ber die ANSI-Codes 32 bis 255 kn-

Seite 81

VBA-Programmierung anhand von Beispielen

nen Sie somit alle Zeichen einer Zeichentabelle ansprechen. Der oben verwendete ANSI-Code 175 erzeugt einen Pfeil nach unten .

Text lschen

Zeichen knnen links oder rechts vom Cursor gelscht werden: links mit der Methode TypeBackspace, rechts mit Delete. Selection.TypeBackspace Lscht, wie die Rckschritt-Taste, ein Zeichen links vom Cursor Selection.Delete Unit:=wdWord, Count:=2 lscht zwei Wrter rechts vom Cursor. Der Befehl entspricht der Entf -Taste.

Text berschreiben

Mit der Text-Eigenschaft eines Selection- oder Range-Objektes knnen Sie Text berschreiben. Die nachfolgende Anweisung berschreibt das erste Wort des Dokumentes: ActiveDocument.Words(1).Text = "Das "

6.7.2 Texte formatieren


Wir haben es in den vorangegangen Kapiteln schon hufig benutzt: Die Formatierung von Texten. Sowohl Zeichen- als auch Absatzformate knnen verwendet werden. Zeichenformate Zeichenformate werden ber das Font-Objekt festgelegt. Dazu wird die FontEigenschaft eines Selection- oder Range-Objektes verndert. Beispiele:
With Selection.Font .Bold = True .Name = "Arial" .Size = 24 .Underline = wdUnderlineSingle .Outline = True End With

Seite 82

6.7 Wie werden Word-Befehle verwendet?

Das vorstehende Beispiel setzt den markierten Text in einer 24pt groen, fetten Arial-Schrift und verwendet eine einfache Unterstreichung. Gleichzeitig wird die Schrift als Outline verwendet es werden also nur die ueren Linien gezeichnet. Insgesamt knnen alle Einstellungen der drei Registerkarten verndert werden, die der Befehl Format / Zeichen Ihnen zur Verfgung stellt. Dazu knnen Sie eine Reihe weiterer Eigenschaften des Font-Objektes benutzen: z.B. ColorIndex fr die Schriftfarbe, StrikeThrough fr durchgestrichenen Text, Scaling zum Strecken oder Stauchen der Schrift usw.

Um Abstze zu formatieren, knnen verschiedene Eigenschaften des ParagraphFormat-Objektes benutzt werden.


With ActiveDocument.Paragraphs(1).Range.ParagraphFormat .Alignment = wdAlignParagraphJustify .FirstLineIndent = CentimetersToPoints(1) .LeftIndent = CentimetersToPoints(1) .RightIndent = CentimetersToPoints(1) .SpaceBefore = 6 .SpaceAfter= 6 .Space15 End With

Absatzformate

Der erste Absatz des Dokumentes wird in Blocksatz erstellt. Gleichzeitig wird er rechts und links um einen Zentimeter eingerckt. Die erste Zeile wird zustzlich um einen Zentimeter eingerckt. Vor und nach dem Absatz werden 6 Punkte Abstand gesetzt; der Zeilenabstand wird durch .Space15 auf anderthalb Zeilen festgelegt. Auch hier knnen die Einstellungen aller Registerkarten unter Format / Absatz angesprochen werden.

Seite 83

VBA-Programmierung anhand von Beispielen

Zeichen- / Absatzformate zurcksetzen

Um sowohl Zeichen- als auch Absatzformate wieder zurckzusetzen auf das Format, das in der mit dem Text verbundenen Formatvorlage vorgegeben ist, knnen Sie die Reset-Methode verwenden: With ActiveDocument.Content .Font.Reset .ParagraphFormat.Reset End With

Formatvorlagen

Formatvorlagen knnen ber die Style-Eigenschaft von Range/SelectionObjekten zugewiesen werden. ActiveDocument.Content.Style = "normaler Absatz" Der obige Befehl verbindet den gesamten Text des Dokumentes mit der Formatvorlage Normaler Absatz.

Rahmen Schattierungen

Zum Einrahmen und Schattieren von Abstzen verwenden Sie die Eigenschaft Borders bzw. Shading
With ActiveDocument.Paragraphs(1) .Borders(wdBorderBottom).LineStyle = wdLineStyleDouble .Borders(wdBorderTop).LineStyle = wdLineStyleSingleWavy .Borders(wdBorderTop).ColorIndex = wdDarkRed .Shading.Texture = wdTexture10Percent .Shading.BackgroundPatternColorIndex = wdYellow End With

Der erste Absatz des Dokumentes erhlt eine untere doppelte Rahmenlinie, eine obere gewellte Rahmenlinie in rot, und eine gelbe Hintergrundfarbe mit 10%Schattierung. Ist das angegebene Objekt kein Absatz, sondern ein Wort, so wird der Rahmen um das Wort gesetzt.

Seite 84

6.7 Wie werden Word-Befehle verwendet?

Borders ist eigentlich eine Objekt-Auflistung, die die vier einzelnen Seiten, die es einzurahmen gilt, enthlt. In einer Schleife knnen somit alle vier Seiten ein Rahmenformat zugewiesen bekommen. Auch Seitenrahmen knnen mit der Borders-Eigenschaft erstellt werden:
For Each Seite In ActiveDocument.Sections(1).Borders Seite.ArtStyle = wdArtChampagneBottle Seite.ArtWidth = 12 Next

Seitenrahmen

Mit ArtStyle wird ber eine Konstante das Aussehen des Rahmens festgelegt und mit ArtWidth die Breite des Rahmens. Obiges Beispiel erstellt fr alle vier Seiten einen Rahmen, der Champagnerflaschen in einer 12-Punkte-Gre enthlt. Da Seitenrahmen fr die verschiedenen Abschnitte des Dokumentes getrennt definiert werden knnen, wird obiger Rahmen fr den ersten Abschnitt festgelegt.

Mit VBA knnen Sie auch Tabulator-Stellen setzen, ausrichten und wieder lschen.

Tabulatoren

Das folgende Makro fgt fr den ersten Absatz des Dokumentes zwei Tabulatoren ein und benutzt diese anschlieend zum Erstellen einer Liste.

Sub TabulatorStellen() ' Beispiel: Setzen und Benutzen von Tabulatorstellen

1 .

ActiveDocument.Paragraphs(1).Tabstops.ClearAll With Selection.Paragraphs(1).Tabstops

2 .

.Add Position:=CentimetersToPoints(5), _ Leader:=wdTabLeaderDots, Alignment:=wdAlignTabLeft

3 .

.Add Position:=CentimetersToPoints(9), _ Alignment:=wdAlignTabCenter End With

Selection.HomeKey unit:=wdStory 4 . Selection.TypeText Text:="erstens" & vbTab & "zweitens" & _ vbTab & "drittens"

Seite 85

VBA-Programmierung anhand von Beispielen

5 . 6 .

Selection.TypeParagraph Selection.TypeText Text:="eins" & vbTab & "zwei" & _ vbTab & "drei"

7 .

Selection.TypeParagraph

End Sub

Das Ergebnis:
erstens .......................................zweitens eins............................................zwei drittens drei

Bemerkungen zu den mit Zahlen markierten Zeilen: Zeile 1: Zeile 2: Alle TabStops des ersten Absatzes werden gelscht bei 5 Zentimeter wird ein linksbndiger TabStop mit gepunkteten Fllzeichen gesetzt Zeile 3: Zeile 4-7: bei 9 Zentimeter wird ein zentrierter TabStop gesetzt unter Verwendung der Konstanten vbTab werden die Tabulatoren angesprungen und Text ausgegeben.

Aufzhlung und Numerierung

Zum Erstellen von Aufzhlungen und Nummerierungen verwenden Sie die ListFormat-Eigenschaft, die weitere Methoden zur Verfgung stellt:
ActiveDocument.Content.ListFormat.ApplyBulletDefault ActiveDocument.Content.ListFormat.ApplyNumberDefault

Der erste Befehl versieht alle Abstze im Dokument mit dem standardmig voreingestellten Aufzhlungszeichen, der zweite Befehl erzeugt stattdessen eine Standardnummerierung. Die Methode ApplyOutlineNumberDefault spricht die Nummerierung der Registerkarte Gliederung unter Format / Aufzhlung und Numerierung an. Die Methode ApplyListTemplate ermglicht es, auf andere Symbole und Nummerierungsformate zuzugreifen:
ActiveDocument.Content.ListFormat.ApplyListTemplate _ ListTemplate:=ListGalleries(wdBulletGallery).ListTemplates(5)

Im obigen Beispiel wird aus den mglichen Zeichen der Aufzhlungsliste das 5. Symbol ausgewhlt. Seite 86

6.7 Wie werden Word-Befehle verwendet?

6.7.3 Mit Tabellen arbeiten


Um Tabellen in Ihr Dokument einzufgen, knnen Sie den Befehl
ActiveDocument.Tables.Add [Range, numRows, numColumns]

Tabelle einfgen

benutzen. Dazu muss zunchst die Stelle ber den Parameter Range angegeben werden, an der die Tabelle eingefgt werden soll. Anschlieend wird die Anzahl der Zeilen und Spalten festgelegt. Eine Tabelle an der aktuellen Cursorposition mit 5 Zeilen und 2 Spalten knnen Sie einfgen mit:
ActiveDocument.Tables.Add Range:=Selection.Range, _ numRows:=5, numColumns:=2

Alternativ knnen Sie eine Tabelle auch folgendermaen einfgen:


Dim MTab As Table Set MTab = ActiveDocument.Tables.Add(Selection.Range, 5, 2)

Zum Fllen der Tabelle kann zum Beispiel folgende Schleife dienen:
With ActiveDocument.Tables(1) For zeile = 1 To 5 For spalte = 1 To 2 .Cell(zeile, spalte).Range.InsertAfter "Zelle " & _ zeile & "," & spalte Next Next End With

Tabelle fllen

Weitere Beispiele zeigen, wie man auf die einzelnen Bestandteile der Tabelle zugreifen kann. Vorausgesetzt, wir haben folgende Vereinbarung getroffen:
Dim MTab As Table Set MTab = ActiveDocument.Tables(1)

Dann knnen wir die letzte Zelle der Tabelle mit Inhalt fllen:

Seite 87

VBA-Programmierung anhand von Beispielen

MTab.Cell(MTab.Rows.Count, _ MTab.Columns.Count).Range.InsertAfter "Letzte Zelle"

Die erste Zeile lschen


MTab.Rows(1).Delete

Alle Spalten auf die optimale Breite setzen


MTab.Columns.AutoFit

Eine neue Spalte vor der zweiten Spalte einfgen


MTab.Columns.Add BeforeColumn:=MTab.Columns(2)

Die neue Spalte auf 5cm Breite setzen, wobei alle anderen Spaltenbreiten unverndert bleiben
MTab.Columns(2).SetWidth _ columnwidth:=CentimetersToPoints(5), _ RulerStyle:=wdAdjustNone

Die erste Zeile mit einem 3D-Rahmen versehen


For Each seite In MTab.Rows(1).Borders seite.LineStyle = wdLineStyleEmboss3D Next

Die zweite Spalte grau schattieren


MTab.Columns(2).Shading.BackgroundPatternColorIndex = wdGray25

Seite 88

6.7 Wie werden Word-Befehle verwendet?

AutoFormate verwenden
MTab.AutoFormat Format:=wdTableFormatColorful1

6.7.4 Funoten und Endnoten einfgen


Um eine automatisch nummerierte Funote an der Stelle einzufgen, an der sich der Cursor befindet, verwenden Sie nachfolgenden Befehl: Funoten einfgen
ActiveDocument.Footnotes.Add Range:=Selection.Range,_ Text:="Dies ist eine Funote"

Endnoten knnen Sie analog ber den Befehl Endnotes einfgen. Mit Hilfe weiterer Eigenschaften knnen Sie die Startnummer und das Format der Nummerierung vorgeben. Um zum Beispiel ab dem Wert 2 mit Symbolen zu nummerieren, benutzen Sie die folgenden Eigenschaften:
ActiveDocument.Footnotes.NumberStyle = wdNoteNumberStyleSymbol ActiveDocument.Footnotes.StartingNumber = 2

6.7.5 Kopf- und Fuzeilen einfgen


Das Einfgen von Kopf- und Fuzeilen knnen Sie folgendermaen vornehmen:
With ActiveDocument.Sections(1) 'Text fr alle Kopfzeilen definieren .Headers(wdHeaderFooterPrimary).Range.Text = _ "Dies ist eine Kopfzeile" 'Doppelte Linie unter den Text setzen .Headers(wdHeaderFooterPrimary).Range.Borders_ (wdBorderBottom).LineStyle = wdLineStyleDouble 'Text fr alle Fuzeilen definieren und 'Cursor auf den zweiten TabStop setzen .Footers(wdHeaderFooterPrimary).Range.Text = "Seite" _ & vbTab & vbTab 'Doppelte Linie ber den Text setzen .Footers(wdHeaderFooterPrimary).Range.Border_

Seite 89

VBA-Programmierung anhand von Beispielen

(wdBorderTop).LineStyle =

wdLineStyleDouble

'Automatische Seitennumerierung hinzufgen .Footers(wdHeaderFooterPrimary).PageNumbers.Add End With

Die verwendete Word-Konstante wdHeaderFooterPrimary definiert gleiche Kopf- und Fuzeilen fr alle Seiten des Abschnittes. Andere Konstante, wie zum Beispiel wdHeaderFooterEvenPages oder wdHeaderFooterFirstPage knnen zur weiteren Differenzierung der Kopf-/Fuzeilen auf geraden oder der ersten Seite verwendet werden. Das obige Beispiel zeigt auch, wie Sie mit Linien die Kopf-/Fuzeilen vom brigen Text trennen knnen und wie Sie eine automatische Seitennummerierung hinzufgen knnen.

Fr alle weiteren Befehle, die Sie unter Word benutzen knnen, stehen entsprechende VBA-Objeke, -Methoden und Eigenschaften zur Verfgung. Details zur Verwendung und jede Menge Beispiele beschreibt die Online-Hilfe des VBAEditors.

Seite 90

7 Verwendung von WordDialogfeldern


Wenn Sie mit Word Ihre Dokumente verarbeiten, gelangen Sie hufig in verschiedene Dialogfelder, in denen Sie bestimmte Einstellungen vornehmen knnen. Wenn Sie zum Beispiel den Befehl Format / Zeichen whlen, gelangen Sie in ein Dialogfeld zum Festlegen der verschiedenen Zeichenformate. Solche Dialogfelder knnen Sie auch ber VBA aufrufen. Um mit Dialogfeldern zu arbeiten, verwenden Sie das Dialogs-Auflistungsobjekt.

7.1 Wie wird ein integriertes Dialogfeld benutzt?


Um ein in Word bereits vorhandenes Dialogfeld anzuzeigen, knnen Sie die Show-Methode verwenden. Der allgemeine Aufbau des Befehls sieht folgendermaen aus: Dialogs(wdWordDialog-Konstante).Show Show-Methode

Ein Beispiel: zum Aufruf des oben angesprochenen Format/ZeichenDialogfeldes, benutzen Sie den Befehl Dialogs(wdDialogFormatFont).Show

Whrend das Dialogfenster angezeigt wird, wartet die Ausfhrung des Makros auf die Eingaben und das Schlieen des Dialogfeldes durch den Benutzer. Nach dem Schlieen des Dialogfensters werden die vom Benutzer vorgenommenen Einstellungen fr das weitere Arbeiten bercksichtigt. Die Dialogkonstanten, die Sie benutzen knnen, werden immer nach dem gleichen Muster gebildet: Sie beginnen mit wdDialog und werden ohne Leerzeichen mit dem englischen Namen des zum Dialogfeld gehrenden Befehls beendet. Die

Seite 91

Verwendung von Word-Dialogfeldern

Konstante wdDialogFormatFont, ruft also das Dialogfeld fr den Befehl Format / Zeichen auf. Bei der Eingabe des Befehls wird im VBA-Editor eine Liste der mglichen Konstanten angezeigt, so dass Sie bequem die passende auswhlen knnen.

Registerkarte auswhlen

Besitzt ein Dialogfeld mehrere Registerkarten, so knnen Sie ber die DefaultTab-Eigenschaft beeinflussen, welche Registerkarte im Vordergrund angezeigt werden soll:
With Dialogs(wdDialogFormatFont) .DefaultTab = wdDialogFormatFontTabCharacterSpacing .Show End With

Verwenden Sie die DefaultTab-Eigenschaft nicht, so liegt standardmig die zuletzt benutzte Registerkarte oben.

Display-Methode

Soll ein Benutzer keine Eingaben im Dialogfeld vornehmen, so wird das Fenster mit der Display-Methode angezeigt. Der allgemeine Befehlsaufbau: Dialogs(wdWordDialog-Konstante).Display [Timeout] ber TimeOut kann die Zeitspanne angegeben werden, innerhalb derer das Dialogfeld angezeigt wird. Danach wird es von Word automatisch geschlossen; ansonsten wird die Anzeige des Fensters erst beendet, wenn der Benutzer es schliet. Das TimeOut wird in Maeinheiten von 0,001 Sekunden angegeben. Um ein Dialogfenster genau 5 Sekunden anzuzeigen, verwenden Sie folgenden Befehl: Dialogs(wdDialogFormatFont).Display timeout:=5000

Execute-Methode

Mit der Execute-Methode werden Einstellungen im Dialogfeld vorgenommen, ohne dass das Dialogfeld angezeigt wird. Die in VBA eingestellten Werte des Dialogfeldes werden durch Execute auf das Dokument angewendet.

Seite 92

7.1 Wie wird ein integriertes Dialogfeld benutzt?

With Dialogs(wdDialogFormatFont) .Bold = 1 .Execute End With

Im Beispiel wird die Schrift im Dialogfeld auf fett gesetzt und anschlieend auf die Stelle im Dokument, an der sich der Cursor befindet, angewendet.

Die Methoden Show und Display geben Ergebniswerte zurck, die darauf schlieen lassen, ber welche Schaltflche der Benutzer das Dialogfeld verlassen hat oder welche Befehlsschaltflche er angeklickt hat. Die Ergebniswerte knnen Sie der folgenden Tabelle entnehmen: Ergebniswert -2 -1 0 Schlieen OK Abbrechen Identisch mit der Systemschaltflche X Befehlsschaltflche >0 1 2 Beispiel:
Select Case Dialogs(wdDialogFormatFont).Display Case -1 MsgBox "Die Schaltflche OK wurde bettigt" Case -2 MsgBox "Die Schaltflche Schlieen wurde bettigt" Case 0 MsgBox "Die Schaltflche Abbrechen wurde bettitgt" Case Else MsgBox "Befehlsschaltflche wurde bettigt" End Select

Schlieen von Dialogfeldern

Schaltflche

erste Schaltflche zweite Schaltflche usw.

Seite 93

Verwendung von Word-Dialogfeldern

7.2 Wie knnen Voreinstellungen in Dialogfeldern eingestellt werden?


Die anzuzeigenden Dialogfelder knnen vorab ber VBA mit bestimmten Werten vorbelegt werden. Um z.B. verschiedene Einstellungen im Dialogfeld Format/Zeichen voreinzuEinstellungen definieren stellen, bentigen Sie folgende Befehle:
Dim dlg As dialog Set dlg = Dialogs(wdDialogFormatFont) With dlg .DefaultTab = wdDialogFormatFontTabFont .Font = "Helvetica" .DoubleStrikeThrough = 1 .AllCaps = 1 .Color = 5 .Show End With

Die Schrift Helvetica wird eingestellt, doppelt durchgestrichen, in Grobuchstaben und der fnften Farbe (rosa). Einstellungen abfragen Auf die gleiche Weise knnen Einstellungen des Benutzers auch abgefragt werden.
Set dlg = Dialogs(wdDialogFormatParagraph) With dlg .DefaultTab = wdDialogFormatParagraphTabIndentsAndSpacing If .LeftIndent = "1 cm" Then .LeftIndent = "2 cm" Else .LeftIndent = "1 cm" End If .Show End With

Eine komplette bersicht ber die Argumente, die Sie in Verbindung mit WordDialogkonstanten benutzen knnen, finden Sie in der VBA-Online-Hilfe.

Seite 94

7.2 Wie knnen Voreinstellungen in Dialogfeldern eingestellt werden?

Wenn Sie die Wahl haben, zwischen der Verwendung von Dialogfeldern und der anfangs vorgestellten Benutzung von Methoden und Eigenschaften, so sollten Sie sich nicht fr die Dialogfelder entscheiden. Die Einstellungen, die wir im vorletzten Beispiel fr die Schrift vorgenommen haben, knnen Sie schneller mit den folgenden Befehle erreichen:
With Selection.Font .Name = "Helvetica" .DoubleStrikeThrough = 1 .AllCaps = 1 .ColorIndex = wdPink End With

Tip!

Seite 95

8 Entwicklung eigener Dialogfelder (Userform)


Word-VBA bietet Ihnen auch die Mglichkeit, eigene Dialogfelder zu definieren: die sogenannten Userforms. Der VBA-Editor stellt Ihnen dafr eine Toolbox zur Verfgung, in der Sie alle bentigten Steuerelemente zur Erstellung eigener Userforms vorfinden. Da die Erstellung von Userforms Bestandteil des VB-Grundlagen-Kurses (Broschre B/009) ist, soll hier nur kurz darauf eingegangen werden.

8.1 Wie wird eine Userform entworfen?


Whlen Sie im VBA-Editor den Befehl Einfgen / Userform. Eine leere Userform wird in einem Fenster mit dem Namen UserForm1 angezeigt.

Gleichzeitig erscheint im Projekt-Explorer ein Verzeichnis mit dem Namen Formulare, in dem die Userform eingetragen ist.

Seite 97

Entwicklung eigener Dialogfelder (Userform)

Normalerweise wird auch die Werkzeugsammlung angezeigt; ist das bei Ihnen nicht der Fall, so whlen Sie den Befehl Ansicht / Werkzeugsammlung oder klicken Sie auf die Schaltflche Userform fllen Um die Userform mit Werkzeugen zu fllen, arbeiten Sie folgendermaen:

Klicken Sie auf das bentigte Werkzeug; der Cursor wird zum Pluszeichen. Ziehen Sie nun in der Userform an der gewnschten Position und in der bentigten Gre das ausgewhlte Element auf.

Wenn Sie das Werkzeug direkt mit der Maus aus der Toolbox in Ihre Userform ziehen, so wird das Element in einer Standardgre eingefgt. Alle Elemente knnen Sie nachtrglich bzgl. Position und Gre verndern. Wenn Sie wissen mchten, welche Bedeutung die einzelnen Tools haben, gengt es, die Maus auf das entsprechende Werkzeug zu bewegen (nicht klicken). In der Quick-Info knnen Sie dann die Bedeutung der Elemente ablesen.

8.2 Wie wird das Layout der Userform verndert?


Sowohl die Userform selbst, als auch die einzelnen Steuerelemente knnen in ihren Eigenschaften verndert werden: z.B knnen Sie den Namen des Elementes, die Farbe oder Gre, den Wert, die Schriftart oder den Text in der Titelleiste verndern. Dazu benutzen Sie beim Entwurf des Formulars das Eigenschaftenfenster im VBA-Editor und knnen, falls gewnscht, diese Eigenschaften whrend der Ausfhrung Ihres Makros erneut verndern. Das Eigenschaftenfenster enthlt zwei Registerkarten: eine zur alphabetischen Anzeige und eine zur Anzeige sortiert nach Kategorien. Letztere ist insbesondere fr Anfnger sinnvoll, da hier gezielt die Schriften, Positionen oder Darstellungen verndert werden knnen. Das nachfolgende Beispiel zeigt die Eigenschaften der Userform selbst. Insbesondere die Eigenschaft Name aus der Kategorie Verschiedenes sollte verndert werden, damit Sie die Userform spter ber einen sprechenden Namen aufrufen knnen.

Seite 98

8.2 Wie wird das Layout der Userform verndert?

Das Einstellen der Eigenschaften ist einfach: nach Anklicken der gewnschten Eigenschaften knnen Sie entweder direkt einen Wert eintragen oder es erscheint ein Pfeil zum Aufklappen eines weiteren Mens, aus dem Sie die gewnschte Eigenschaft dann nur noch auswhlen mssen. Dies ist zum Beispiel bei Farben der Fall oder auch bei allen Eigenschaften, die lediglich die Werte True und False enthalten knnen. Bei der Eigenschaft Schriftart erscheinen stattdessen drei Punkte, die Sie anklicken knnen; danach ffnet sich ein Fenster zur Vorschau und Auswahl verschiedener Schriften. Auf die gleiche Art knnen Sie die verschiedenen Steuerelemente anklicken und die Eigenschaften verndern. Eine erste Userform mit Text, drei Schaltflchen und einem Kontrollkstchen knnte also folgendermaen aussehen: Die Beschriftung der Schaltflche kann brigens ber die Eigenschaft Caption eingestellt werden.

Seite 99

Entwicklung eigener Dialogfelder (Userform)

8.3 Wie werden Userforms aufgerufen?


Um eine eigene Userform anzuzeigen und wieder auszublenden, gibt es verschiedenen Methoden: Show-Methode Die Show-Methode ldt die angegebene Userform in den Hauptspeicher und zeigt sie dem Benutzer an: userformname.show Der Name der Userform mu mit der Eigenschaft Name bereinstimmen. Um zum Beispiel die obige Userform mit Namen Rechnung aufzurufen, wechseln Sie im Projekt-Explorer wieder in das zugehrige Projekt und schreiben dort folgende VBA-Programm: Beispiel 18: Eine eigene Userform anzeigen
Sub RechnungAufrufen() Rechnung.Show End Sub

Werden ausgehend von einer ersten Userform weitere Dialoge aufgerufen, so kann Hide-Methode die erste Userform mit der Hide-Methode ausgeblendet werden: userform.hide Sie verbleibt zwar im Speicher, wird aber fr den Benutzer nicht mehr angezeigt. Load-Methode Um eine Userform in den Speicher zu laden ohne sie fr den Benutzer anzuzeigen, arbeiten Sie mit der Load-Methode load userform Sie knnen dann ber VBA-Programme auf die Eigenschaften und Werte dieser Userform zugreifen; der Benutzer kann sie aber weder sehen noch verndern. Unload-Methode Um eine Userform wieder aus dem Speicher zu entfernen, benutzen Sie die Unload-Methode. unload userform Seite 100

8.4 Was sind Ereignisprozeduren?

8.4 Was sind Ereignisprozeduren?


Eine am Bildschirm angezeigte Userform bietet dem Benutzer meistens mehrere Mglichkeiten: Text eingeben, Elemente aus Drop-Down-Listen auswhlen, Schaltflchen einfach oder doppelt anklicken usw. Je nachdem, welche Aktion der Benutzer vorgenommen hat, muss die weitere Verarbeitung initiiert werden: dazu dienen die Ereignisprozeduren. Fr jedes in Ihrer Userform auszuwhlende Steuerelement sollten Sie eine Ereignisprozedur definieren. Zur Erstellung der Ereignisprozedur klicken Sie in dem Entwurf Ihrer Userform doppelt auf das Steuerelement, fr das Sie den Programmcode eingeben wollen. Sie gelangen automatisch in das Codefenster, in dem bereits ein voreingestellter Name der Prozedur eingetragen ist.

Der Name der Ereignisprozedur setzt sich zusammen aus der Eigenschaft Name der Schaltflche, in unserem Beispiel erstellen und dem Ereignis Click. Das heit, wenn in unserem obigen Rechnungs-Beispiel die Schaltflche Rechnung erstellen angeklickt wird, wird diese Ereignis-Prozedur erstellen_Click ausgefhrt.

Beispiel 19: Ereignisprozeduren _Click erstellen


Private Sub erstellen_Click() Rechnung.Hide RechErstellen.Show End Sub

Die Userform Rechnung wird ausgeblendet, statt dessen wird die Userform RechErstellen angezeigt. Beim Anklicken der Schaltflche Rechnung drucken, kann zum Beispiel der normale Druck-Dialog aufgerufen werden.

Seite 101

Entwicklung eigener Dialogfelder (Userform)

Private Sub drucken_Click() Dialogs(wdDialogFilePrint).Show End Sub

Die Schaltflche Programm beenden knnte dann noch die Userform mit der Unload-Methode ausblenden und aus dem Speicher entfernen. Weitere Ereignisse Auer einem einfachen Klick auf eine Schaltflche, knnen natrlich noch weitere Ereignisse eintreten. Welche das sind, erfahren Sie, wenn Sie auf den Pfeil neben dem Prozedurnamen Click klicken: es existieren u.a. Prozeduren zur Fehlerbehandlung, zu Cursor- und Mausbewegungen, zu Drag & Drop und verschiedenes mehr.

8.5 Wie werden Userform-Steuerelemente im Makro benutzt?


Um Benutzereingaben in der Userform abzufragen, kann man ber die Eigenschaft Name des Steuerelementes auf den Inhalt zugreifen. Einige Beispiele: Kontroll-Kstchen abfragen Wollen Sie im obigen Beispiel abfragen, ob die Rechnung verschickt wurde oder nicht, so knnen Sie den Wert des Kontroll-Kstchens (Standardname: CheckBox1) folgendermaen im Makro abfragen. Beispiel 20: Kontrollkstchen abfragen
Private Sub beenden_Click() 'Beispiel 19: Wert eines Kontroll-Kstchens abfragen If CheckBox1.Value = False Then MsgBox "Nicht vergessen: Rechnung verschicken" End If Unload Rechnung End Sub

Seite 102

8.5 Wie werden Userform-Steuerelemente im Makro benutzt?

Beispiel 21: Textfeld fllen Die Userform-Steuerelemente knnen genauso in einem VBA-Makro benutzt werden, wie die bisher vorgestellten Word-Objekte auch. Um in einem Textfeld (Standardname TextBox1) den Inhalt eines Absatzes auszugeben, den Text in mehrere Zeilen zu umbrechen und am rechten Fensterrand einen ScrollBar einzufgen, knnen Sie mit folgenden Makrobefehlen arbeiten.
Private Sub UserForm_Initialize() 'Zeilenumbruch TextBox1.MultiLine = True 'ScrollBar TextBox1.ScrollBars = fmScrollBarsVertical 'Text TextBox1.Text = ActiveDocument.Paragraphs(100).Range End Sub

Textfeld fllen

Das Makro trgt brigens den Namen UserForm_Initialize: die Befehle werden dadurch automatisch ausgefhrt, bevor die Userform angezeigt wird, also zur Initialisierung des Dialogfensters.

Auch ein Listenfeld (Standardname ListBox1) wird gefllt, bevor die Userform angezeigt wird. Deshalb wird auch hier der Programmname UserForm_Initialize bentigt.

Listenfeld fllen

Seite 103

Entwicklung eigener Dialogfelder (Userform)

Beispiel 22: Listenfeld fllen Angenommen Sie haben nebenstehende Userform erstellt. Sobald ein Artikel im Listenfeld angeklickt wird, z.B. die EDV-Lampe, soll automatisch ein Textfeld mit dem angeklickten Artikel erscheinen. Dieses Textfeld ist in der Userform schon enthalten, aber noch unsichtbar. Folgende Prozedur wird dafr bentigt:

Private Sub UserForm_Initialize() 'Listbox-Eintrge erstellen ListBox1.AddItem "Schreibtischunterlage" ListBox1.AddItem "EDV-Lampe" ListBox1.AddItem "Drehstuhl" ListBox1.AddItem "Zeitschriftenordner" ListBox1.AddItem "Sonstige Artikel" 'Unsichtbare Beschriftung und Textfeld Label1.Visible = False TextBox2.Visible = False End Sub

Die AddItem-Methode fllt das Listenfeld mit dem angegebenen Text. Gleichzeitig wird die Eigenschaft Visible der bereits in der Userform vorhandenen Label1 und TextBox2-Steuerelemente auf False gesetzt. Sie sind also nicht zu sehen. Wird nun in der Userform ein Element der Liste angeklickt, so kann die weitere Verarbeitung in der ListBox1_Click-Prozedur definiert werden:

Seite 104

8.5 Wie werden Userform-Steuerelemente im Makro benutzt?

Private Sub ListBox1_Click() 'Label und Textbox sichtbar TextBox2.Visible = True Label1.Visible = True 'Textbox mit dem angeklickten Wert fllen TextBox2.Text = ListBox1.Value End Sub

Durch obigen Programmcode erscheint nach Anklicken

eines Artikels jeweils folgende Userform: die Label1 und TextBox2-Felder werden sichtbar und der angeklickte Text wird in TextBox2 eingetragen.

Das gleiche Beispiel knnen Sie natrlich auch ber ein Dropdown-Listenfeld (Standardname ComboBox1) lsen. Beispiel 23: Dropdown-Listenfeld fllen Die auszuwhlenden Artikel werden erst angezeigt, wenn man das Dropdown-Feld ffnet. Als Voreinstellung wird der erste Artikel angezeigt. Dropdown-Listenfeld

Private Sub UserForm_Initialize() 'ComboBox fllen ComboBox1.AddItem "Schreibtischunterlage" ComboBox1.AddItem "EDV-Lampe" ComboBox1.AddItem "Drehstuhl"

Seite 105

Entwicklung eigener Dialogfelder (Userform)

ComboBox1.AddItem "Zeitschriftenordner" ComboBox1.AddItem "Sonstige Artikel" 'Standardwert bei der ersten Anzeige ComboBox1.ListIndex = 0 Label1.Visible = False TextBox2.Visible = False End Sub

Die ListIndex-Eigenschaft wird bentigt, um gezielt eine Zeile der ComboBox anzusprechen. Wichtig: die Zhlung beginnt bei 0. Im obigen Beispiel wird beim ersten Aufruf der Userform die ComboBox mit dem Inhalt der ersten Zeile gefllt (Schreibtischunterlage). Wird dieser Befehl nicht angegeben, so bleibt das Dropdown-Feld leer.

Optionsfeld

Das letzte Beispiel mchte Ihnen die Arbeit mit einem Optionsfeld (Standardname: OptionButton1) vorstellen. Beispiel 24: Optionsfelder abfragen Angenommen, Sie mchten folgende Userform verarbeiten: Das Besondere an Optionen ist, da immer nur eine angeklickt werden kann. Abhngig von der ausgewhlten Option, soll beim Beenden der Userform in einer MsgBox die ausgewhlte Zahlungsform erscheinen.
Private Sub CommandButton1_Click() 'Ermitteln, welche Option angeklickt wurde If OptionButton1.Value = True Then Text = OptionButton1.Caption If OptionButton2.Value = True Then Text = OptionButton2.Caption If OptionButton3.Value = True Then Text = OptionButton3.Caption If OptionButton4.Value = True Then Text = OptionButton4.Caption MsgBox Text Unload Optionsfeld End Sub

Seite 106

8.5 Wie werden Userform-Steuerelemente im Makro benutzt?

ber die Eigenschaft Value kann fr jeden OptionButton ermittelt werden, ob er ausgewhlt wurde. Ist das der Fall, dann kann der Text einfach auf die Beschriftung des OptionButton gesetzt werden, der in der Eigenschaft Caption zu finden ist.

Seite 107

9 Automatische Makros
9.1 Was sind Auto-Makros?
Alle bisher vorgestellten Makros wurden direkt vom Benutzer aufgerufen. Es gibt jedoch auch die Mglichkeit, Makros automatisch von Word aufrufen zu lassen. Voraussetzung dafr ist lediglich, dass das Makro einen bestimmten vorgegebenen Namen hat. Insgesamt stellt Word fnf Auto-Makros zur Verfgung:

AutoExec AutoNew AutoOpen AutoClose AutoExit

wird beim Starten von Word aufgerufen wird beim Erstellen eines neuen Dokumentes aufgerufen wird beim ffnen eines bestehenden Dokumentes aufgerufen wird beim Schlieen eines Dokumentes aufgerufen wird beim Beenden von Word aufgerufen

Wenn Sie ein Makro erstellen, das einen der oben angegebenen Namen besitzt, dann wird es automatisch ausgefhrt, wenn das in der rechten Tabellenspalte stehende Ereignis eintritt. Dabei knnen Auto-Makros, genau wie andere Makros auch, in jedem Word-Dokument, in Dokumentvorlagen und auch in der normal.dot gespeichert werden.

Seite 109

Automatische Makros

Beispiel 25: AutoNew-Makro erstellen Sie mchten beim Erstellen einer neuen Datei automatisch eine Userform aufrufen, die dem Benutzer die Mglichkeit gibt, die voreingestellte Schriftgre zu verndern. Sie bentigen also das Auto-Makro AutoNew, mit den beiden nachfolgenden Prozeduren:
Private Sub UserForm_Initialize() 'Textbox mit der voreingestellten Schriftgre fllen TextBox1.Text = Selection.Font.Size 'Zweiten OptionsButton als angeklickt einstellen OptionButton2.Value = True End Sub

Private Sub CommandButton1_Click() 'Abhngig vom angekreuzten OptionsButton, wird die 'Schrift um 2 Punkte vergrert oder verkleinert. If OptionButton2.Value = True Then Selection.Font.Size = Selection.Font.Size + 2 End If If OptionButton3.Value = True Then Selection.Font.Size = Selection.Font.Size - 2 End If MsgBox "Schriftgre:" & Selection.Font.Size & " eingestellt" Unload Schriftwahl End Sub

Abhngig von der ausgewhlten Option, wird die Schriftgre um 2 Punkte vergrert, verkleinert oder beibehalten. Abschlieend wird in einer MessageBox die eingestellte Schriftgre noch einmal ausgegeben.

Seite 110

9.1 Was sind Auto-Makros?

Analog wre es denkbar, beim ffnen eines Dokumentes im Auto-Makro AutoOpen den Dateinamen abzufragen und einen bestimmten Druckertreiber einzustellen oder beim Schlieen eines Dokumentes ber AutoExit eigene Sicherungskopien anzulegen usw.

Nicht immer ist die Ausfhrung der Auto-Makros erwnscht. Um die Verarbeitung eines automatischen Makros zu verhindern, knnen Sie die Shift -Taste gedrckt halten, whrend Sie ein Dokument ffnen oder schlieen. Um im obigen Beispiel beim Erstellen einer neuen Datei nicht in die Userform zur Schriftgrennderung zu kommen, drcken Sie die Shift -Taste und klicken gleichzeitig mit der Maus auf das Symbol zum Erstellen einer neuen Datei. Das Makro AutoNew wird dann nicht aufgerufen. Das Makro AutoExec startet nur dann automatisch beim Aufruf von Word, wenn es sich im Startordner von Word befindet. Wo das ist, knnen sie unter dem WordBefehl Extras / Optionen auf der Registerkarte Dateiablage nachlesen. Bei der Verwendung von Auto-Makros knnen Namenskonflikte auftreten, wenn Sie zum Beispiel sowohl im Dokument das Makro AutoClose erstellt haben, als auch in der damit verbundenen Vorlage. In solchen Fllen benutzt Word immer das Makro, das dem Benutzer am nchsten ist. Existiert im Dokument ein Makro AutoClose, so wird dieses ausgefhrt, auch wenn zustzlich in der Vorlage ein Makro AutoClose vorhanden ist. Das gleichnamige Makro in der Vorlage wird in diesem Fall nicht ausgefhrt. Ein Auto-Makro kann auch direkt aus jedem anderen Makro aufgerufen werden. Dazu bentigen Sie die RunAutoMacro-Methode. ber Word-Konstante knnen Sie festlegen, welches Auto-Makro aufgerufen werden soll. ActiveDocument.RunAutoMacro Which:=wdAutoNew

Auto-Makros unterdrcken

Hinweis: AutoExec

Reihenfolge

Auto-Makro direkt aufrufen

Seite 111

Automatische Makros

9.2 Was sind Ereignisse des Word-Dokumentes?


Ereignisse haben wir bereits bei den Userforms kennengelernt: sobald ein Steuerelement, z.B. eine Befehlsflche angeklickt wird, wird die zugehrige Ereignisprozedur aufgerufen. Auch im Word-Dokument selbst gibt es Ereignisse, die hnlich wie die AutoMakros arbeiten. Insgesamt werden die drei Ereignisse New, Open und Close untersttzt. Die Ereignissprozedur eines Word-Objektes knnen Sie definieren, wenn Sie im Projektexplorer den Ordner Microsoft Word Objekte auswhlen und doppelt auf den Eintrag ThisDocument klicken. Im Codefenster wird das Objekt Document angezeigt mit seinen drei zugehrigen Ereignissen. Angenommen, Sie mchten beim Erstellen einer neuen Datei immer in der Ansicht / Seiten-Layout arbeiten und die Zoom-Einstellung auf Seitenbreite vordefinieren. Dann knnen Sie dafr folgendes Document_New-Makro schreiben:
Private Sub Document_New() ActiveWindow.ActivePane.View.Type = wdPageView ActiveWindow.ActivePane.View.Zoom.PageFit = wdPageFitBestFit End Sub

Reihenfolge:

Treten in einem Dokument sowohl Auto-Makros, als auch DokumentEreignisprozeduren auf, so werden erst die Auto-Makros ausgefhrt und dann die Ereignisprozeduren. Sind sowohl in der Dokumentvorlage, als auch im Dokument gleichnamige Ereignisprozeduren definiert, so wird erst die Prozedur in der Vorlage und dann die Prozedur des Dokumentes ausgefhrt.

Seite 112

10 Word-Befehle verndern
Fast alle Word-Befehle knnen Sie verndern, indem Sie z.B. einfach ein eigenes Makro mit dem Namen eines Word-Befehls, schreiben. Verwenden Sie dazu folgende Befehle:

Whlen Sie Extras / Makro / Makros. Im Listenfeld Makros in: whlen Sie den Eintrag Word-Befehlen aus. Es erscheinen die

Namen aller WordBefehle. Hier whlen Sie den Befehl aus, den Sie ndern mchten, z.B. Datei/ Speichern. Schaltflche Die Bear-

beiten steht leider nicht zur Verfgung, so dass man nicht nachschauen kann, welche Arbeitsschritte hier ausgefhrt werden.

Im Listenfeld Makros in: mssen Sie nun eintragen, wo das Makro gespeichert werden soll, also zum Beispiel in der normal.dot, wenn Sie den eigenen Speicher-Befehl in jedem Dokument benutzen mchten. Danach klicken Sie auf die Schaltflche Erstellen, um Ihre eigenen VBABefehle zu programmieren.

Anschlieend wird beim Speichern von Dateien Ihr eigener Befehl benutzt und nicht mehr der Standard-Word-Befehl.

Seite 113

11 Ausblick
Die Beschreibung zustzlicher Mglichkeiten der VBA-Programmierung knnte bestimmt noch weitere 100 Seiten fllen. Fr diese erste Einfhrungsbroschre wollen wir es jedoch bei den bisher kurz vorgestellten Themen belassen. Ein Themengebiet, das in dieser Broschre nicht bercksichtigt wurde, ist die Verwendung anderer Office-Produkte aus Word-VBA heraus. Es ist zum Beispiel mglich, in Word-Makros Excel-Berechnungen durchzufhren oder PowerPointPrsentationen zu starten. Im VBA-Editor gibt es dazu den Befehl Extras / Verweise. Man gelangt in ein Men, in dem man die bentigten Object Librarys ankreuzen kann (z.B. Excel 8.0 oder PowerPoint 8.0 Object Library). Wer sich fr dieses Thema interessiert, findet in der anfangs genannten Literatur Schritt fr Schritt einige beispielhafte Programme.

Seite 115

Seite 116

S Sa ac ch hr re eg giis st te er r
AutoOpen ................................ 109

A
Absatz ........................................ 68 Absatzformate............................ 83 Absatzmarke .............................. 81 Abschnitte .................................. 65 Activate...................................... 44 ActiveDocument ........................ 46 ActivePane............................... 112 Add ............................................ 43 AddItem ................................... 104 Alignment .................................. 83 ApplyBulletDefault.................... 86 ApplyListTemplate .................... 86 ApplyNumberDefault ................ 86 ApplyOutlineNumberDefault .... 86 Argument CharacterNumber................... 81 Count...................................... 65 Direction ................................ 72 End......................................... 75 Extend .................................... 70 FileName................................ 44 Font ........................................ 81 Name...................................... 65 Password ................................ 50 Range ..................................... 46 SaveChanges.................... 45, 54 Start........................................ 75 Template ................................ 44 Text........................................ 80 Unicode.................................. 81 Unit ........................................ 66 What....................................... 65 Which..................................... 65 WritePassword ....................... 50 ArtStyle...................................... 85 Aufzhlung ................................ 86 Aufzeichnung............................. 11 AutoClose ................................ 109 AutoExec ................................. 109 AutoExit................................... 109 Auto-Makros direkt aufrufen...................... 111 erstellen................................ 109 Reihenfolge.................. 111, 112 unterdrcken ........................ 111 AutoNew.................................. 109

B
BackgroundPatternColorIndex .. 84 Begriffe...................................... 37 Bildschirmseite .......................... 68 boolean ...................................... 39 Borders ...................................... 84 BottomMargin ........................... 64

C
Caption ...................................... 99 Cell ............................................ 88 CentimetersToPoints ................. 63 ClearAll ..................................... 85 Clipboard ................................... 80 Close...................................43, 112 Codefenster.....................27, 33, 41 Collapse ..................................... 72 Colletion .................................... 37 Columns..................................... 88 Content ...................................... 59 Copy .......................................... 80 Count ......................................... 47 Cursorbewegung........................ 64 Cut ............................................. 80

D
Datei Drucken ................................. 44 Neu ........................................ 43 ffnen.................................... 43 Schlieen ............................... 43 Speichern ............................... 43 DefaultTab................................. 92 Deklaration Document .............................. 53 Font........................................ 53 Object .................................... 53 Paragraph............................... 53 Table...................................... 53 Description ................................ 61 Dialogfeld eigenes ................................... 97

Seite 117

Sachregister

integriertes ..............................91 Registerkarte whlen ..............92 schlieen.................................93 Voreinstellung ........................94 Dialogs .......................................91 Dim.............................................52 Display .......................................92 Do While ....................................52 Documents Methoden................................43 Dokument ...................................66 aktivieren ................................45 anlegen....................................44 drucken ...................................46 ffnen .....................................44 schlieen.................................45 speichern.................................44 Dokumentkomponenten .............78 Dokumentvorlage .......................23 Dropdown.................................105

E
Eigenschaft ActiveDocument.....................46 Alignment...............................83 ArtStyle ..................................85 AutoHyphenation ...................38 BackgroundPatternColorIndex84 Bold ........................................82 Borders ...................................84 BottomMargin ........................64 Caption ...................................99 ColorIndex..............................83 Content ...................................59 Count ......................................47 DefaultTab..............................92 Description .............................61 FirstLineIndent .......................83 Font.............................39, 59, 82 LeftIndent ...............................83 LeftMargin..............................64 LineStyle ................................84 Name ................................39, 98 Number...................................61 Outline ....................................82 Range......................................77 RightIndent.............................83 RightMargin ...........................64 Scaling ....................................83 Schriftart.................................99 Shading...................................84 Size .........................................82 Space15 ..................................83 SpaceAfter ........................64, 83 SpaceBefore......................64, 83 StoryRange .............................78

StoryRanges ...........................60 StrikeThrough ........................83 Style .......................................84 Text ........................................82 Texture ...................................84 TopMargin .............................64 Type .......................................74 Underline................................82 Visible ..................................104 Eigenschaften abfragen..................................39 festlegen .................................38 globale....................................42 zuweisen.................................39 Eigenschaftenfenster ............26, 31 Eingabehilfen .............................35 End If .........................................49 End With ..............................50, 58 EndKey.......................................66 Endnoten ....................................78 EndOf .........................................68 Ereignisprozeduren ..................101 Ereignisse .................................112 Ergebniswerte.............................93 Err ..............................................60 Execute.......................................92 Exit For ......................................55

F
Fehlerbehandlung.......................60 Fehlerbeschreibung ....................60 Fehlernummer ............................60 Felder .........................................65 Fenster........................................44 FirstLineIndent...........................83 Fokus..........................................45 Font ......................................59, 82 For Each ...............................48, 55 Formatvorlagen ..........................84 Formulare ...................................97 Funoten.........................65, 78, 89 Fuzeilen..............................78, 89

G
GoTo ....................................61, 64 Graphiken...................................65 Gruppierungen .....................19, 23

H
Hide..........................................100 HomeKey ...................................66

Seite 118

Sachregister

I
If 49 InchesToPoints .......................... 63 InputBox .................................... 50 InsertBreak................................. 81 InsertParagraph .......................... 81 Item............................................ 43

K
Kommentar ................................ 78 Komponenten............................. 30 Kontroll-Kstchen.................... 102 Kopfzeilen............................ 78, 89

L
Laufzeitfehler............................. 60 LeftIndent .................................. 83 LeftMargin................................. 64 LinesToPoints ............................ 63 LineStyle.................................... 84 Listenfeld ................................. 103 Literatur ..................................... 10 Load ......................................... 100 Loop........................................... 52

M
Makro aufrufen.................................. 17 aufzeichnen ............................ 11 Definition................................. 9 Namen ndern ........................ 18 organisieren............................ 24 planen..................................... 11 rckgngig machen ................ 24 speichern ................................ 23 Test ........................................ 34 ber Dialogfenster.................. 17 ber eigenen Menbefehl....... 19 ber Symbolleiste .................. 22 ber Tastenkombination......... 20 ber vorhandenen Menbefehl17 Makrorecorder ........................... 11 anhalten.................................. 14 aufzeichnen ............................ 14 beenden .................................. 14 Cursor positionieren............... 13 Drag&Drop ............................ 14 fortsetzen................................ 14 Markieren mit der Tastatur .... 13 Regeln fr die Aufzeichnung . 12

starten .................................... 12 markieren................................... 69 Markierung entfernen................................ 72 erweitern................................ 70 erzeugen................................. 70 gesamtes Dokument............... 71 reduzieren .............................. 70 Maeinheiten ............................. 63 Menbefehle, eigene entfernen.. 20 Methode AddItem............................... 104 ApplyBulletDefault ............... 86 ApplyListTemplate................ 86 ApplyNumberDefault ............ 86 ApplyOutlineNumberDefault 86 CentimetersToPoints ............. 63 Close...................................... 38 Collapse ................................. 72 Copy ...................................... 80 Cut ......................................... 80 Delete................................38, 82 Display................................... 92 EndKey.................................. 66 EndOf .................................... 68 Execute .................................. 92 globale ................................... 42 GotTo .................................... 64 Hide ..................................... 100 HomeKey............................... 66 InchesToPoints ...................... 63 InsertBreak ............................ 81 InsertParagraph...................... 81 LinesToPoints........................ 63 Load..................................... 100 MillimetersToPoints .............. 63 MoveDown ............................ 67 MoveEnd ............................... 70 MoveLeft ............................... 67 MoveRight............................. 67 MoveUp................................. 67 Paste ...................................... 80 PrintOut ................................. 46 Raise ...................................... 61 Range................................57, 75 Reset ...................................... 84 RunAutoMacro .................... 111 Save ....................................... 38 SaveAs................................... 45 Select ..................................... 71 Show...............................91, 100 StartOf ................................... 68 TypeBackspace...................... 82 TypeParagraph....................... 81 TypeText ............................... 80 Unload ................................. 100 Update ................................... 58 WholeStory............................ 71

Seite 119

Sachregister

Methoden....................................38 Microsoft VisualBasic-Editor.....25 Microsoft Word-Objekte ............30 Millimeter...................................63 MillimetersToPoints ...................63 Module .......................................30 MoveDown.................................67 MoveLeft ....................................67 MoveRight..................................67 MoveUp......................................67 MsgBox ................................47, 48 Multiple Objekte.........................40

Objektmodell........................10, 37 Objektreferenzen ........................58 Objektvariable............................52 Office-Assistent..........................34 On Error .....................................61 Open...................................43, 112 Optionsfeld...............................106

P
ParagraphFormat ........................83 Password ....................................50 Paste ...........................................80 Planung.......................................11 Prfix..........................................54 ac54 vb............................................54 wd...........................................54 xl 54 PrintOut................................44, 46 Programmierwerkzeuge .......26, 29 Codefenster ............................33 Eigenschaftenfenster ..............31 Menleiste ..............................33 Projekte ..................................30 Symbolleiste...........................33 Projekte ......................................30 Projektexplorer...............26, 29, 97 Microsoft Word-Objekte ........30 Module ...................................30 Projekte ..................................30 Symbolleiste...........................31 Verweise.................................30 Prozedurfeld ...............................33 Punkte ........................................63

N
Name ..........................................98 New ..........................................112 Next ......................................48, 55 normal.dot ............................23, 44 Number.......................................61 Numerierung...............................86

O
Object Librarys.........................115 Objekt Application .......................40, 42 Cell .........................................88 Document ...............................44 Err...........................................60 Font.........................................82 multiple...................................40 ParagraphFormat ....................83 Range......................................74 Selection ...........................64, 69 untergeordnet..........................40 Objekt-Auflistung.......................37 Bookmarks..............................50 Characters...............................50 Dialogs....................................91 Documents..................38, 40, 43 Fields ......................................50 FontNames..............................57 Paragraphs ..............................50 Sections ..................................50 Sentences ..........................38, 50 StoryRanges............................78 Styles ......................................50 Tables .....................................50 Words ...............................38, 50 Objekt--Auflistung Tables .....................................87 Objekte .................................37, 65 Objektfeld...................................33 Objekthierarchie .........................40 Objektkatalog .............................41

Q
QuickInfo ...................................23

R
Rahmen ......................................84 Raise...........................................61 Range ...................................57, 74 Referenzen .................................58 Reihenfolge ..............................112 Reset...........................................84 Resume Next ..............................61 Return.........................................54 RightIndent.................................83 RightMargin ...............................64 Rows ..........................................88 Rckschrittzeichen .....................54 RunAutoMacro.........................111

Seite 120

Sachregister

S
Satz ............................................ 68 Save ........................................... 43 Schaltflcheneditor .................... 18 Schaltflchensymbol.................. 18 Schattierungen ........................... 84 Schriftart .................................... 99 Seiten ......................................... 65 Seitenrahmen ............................. 85 Seitenumbruch ........................... 81 Select ......................................... 71 Selection .............................. 64, 69 Set .............................................. 53 Shading ...................................... 84 Shortcut-Vergaben ..................... 21 Shortcut-Voreinstellung............. 21 Show .................................. 91, 100 Silbentrennung ........................... 38 Sonderzeichen............................ 81 Space15...................................... 83 SpaceAfter ........................... 64, 83 SpaceBefore......................... 64, 83 Spalte ......................................... 66 Sprachkern ................................. 10 Sprungmarke.............................. 61 StartOf........................................ 68 StoryRanges......................... 60, 78 Style ........................................... 84 Symbolleiste erstellen.................................. 22 mit Schaltflchen fllen ......... 22

TypeParagraph........................... 81 TypeText ................................... 80

berschriften ............................. 65 Unload ..................................... 100 Update ....................................... 58 Userform aufrufen ............................... 100 entwerfen ............................... 97 fllen...................................... 98 Layout.................................... 98 Userforms .................................. 97

V
Variant ....................................... 52 VB ............................................... 9 VBA ............................................ 9 VBA-Editor ............................... 25 Codefenster.......................27, 33 Eigenschaftenfenster.........26, 31 Eingabehilfen......................... 35 Hilfe....................................... 33 Menleiste ............................. 33 Objektkatalog ........................ 41 Programmierwerkzeuge......... 29 Projektexplorer ...................... 26 Symbolleiste .......................... 33 vbBack....................................... 54 vbCr ........................................... 49 VbCr .......................................... 54 vbTab....................................54, 85 Verweise.................................... 30 View ........................................ 112 Visible ..................................... 104 Visual Basic................................. 9 Visual Basic for Applications...... 9 Visual Basic Programmierwerkzeuge................ 26 Visual Basic-Hilfe ..................... 33 VisualBasic Carriage Return ..... 49 VisualBasic-Editor .................... 25

T
Tabelle ....................................... 87 Tabellen ..................................... 65 Tabellen-Zelle............................ 68 Tables......................................... 87 Tabstops..................................... 85 Tabulatoren ................................ 85 Tabulatorzeichen........................ 54 Text............................................ 82 eingeben................................. 80 formatieren............................. 82 lschen ................................... 82 berschreiben ......................... 82 Textbereich ................................ 78 Textfeld.............................. 78, 103 Textmarken ................................ 65 Texture....................................... 84 ThisDocument.......................... 112 Toolbox...................................... 97 TopMargin ................................. 64 Type ........................................... 74 TypeBackspace .......................... 82

W
wdUnderlineDotted ................... 59 Wertzuweisung .......................... 53 WholeStory................................ 71 With......................................50, 58 Word-Befehle .......................... 113 Word-Funktionen ...................... 80 Word-Konstante wdAlignParagraphCenter ...... 54 wdAutoNew......................... 111

Seite 121

Sachregister

wdBorderBottom ....................84 wdBorderTop .........................84 WdCell ...................................68 wdCharacter............................68 wdCollapseStart......................72 wdColumn ..............................66 wdDialogFormatFont .............91 wdDoNotSaveChanges.....45, 54 wdExtend................................70 wdFootnotesStory...................60 WdGoToBookmark ................65 WdGoToField.........................65 WdGoToFirst..........................65 WdGoToFootnote...................65 WdGoToGraphic ....................65 WdGoToLast ..........................65 wdGoToLine ..........................65 WdGoToNext .........................65 WdGoToPrevious ...................65 wdLine..............................66, 68 wdLineStyleDouble..........54, 84 wdMainTextStory...................78 wdMove..................................70 wdPageBreak..........................81 wdPageFitBestFit .................112 wdParagraph...........................68 wdPrintCurrentPage ...............46 wdRow....................................66 wdSaveChanges......................45 wdScreen ................................68 wdSelectionIP.........................74 WdStory..................................66

wdUnderlineDotted ................59 wdUnderlineSingle.................82 wdWindow .............................68 wdWord..................................68 wdYellow ...............................84 Word-Konstanten .......................54 Word-Kosntante wdCollapseEnd ......................72 WdGoToHeading ...................65 WdGoToObject......................65 WdGoToPage.........................65 WdGoToSection.....................65 WdGoToTable .......................65 wdSentence ............................68 Word-Objektmodell ...................39 Wort ...........................................68 WritePassword ...........................50

Z
Zeichen.......................................68 Zeichenformate ..........................82 Zeichenketten .............................39 Zeile .....................................66, 68 Zeilen ...................................63, 65 Zeilenumbruch ...........................49 Zentimeter ..................................63 Zoll.............................................63 Zwischenablage..........................80

Seite 122

Sachregister

Seite 123