-
Vorbemerkungen ........................................................................................ 27
1 Einführung .................................................................................................. 33
2 Schnellkurse: Worauf beruht VBA?............................................................. 433 Was ist VBA? .............................................................................................. 139
4 Ein wenig Word- und VBA-Geschichte....................................................... 147
5 Sicherungsarbeiten ..................................................................................... 197
6 Übungsumgebung und »Werkzeugkasten« für Makros und VBA-Prozeduren erstellen........................................................................... 231
7 Makros aufzeichnen.................................................................................... 239
8 Die VBA-Entwicklungsumgebung............................................................... 253
9 Allgemeine Anmerkungen .......................................................................... 355
10 Anweisungen, Ausdrücke und Kommentare ............................................... 36711 Variablen, Datentypen und Konstanten ..................................................... 377
12 Operatoren ................................................................................................. 409
13 Prozeduren ................................................................................................. 431
14 Standard-Anweisungen für die Ein- und Ausgabe ...................................... 457
15 Sprünge, Verzweigungen, Fallentscheidungen ........................................... 475
16 Schleifen ..................................................................................................... 48917 Sonstige Kontrollstrukturen ....................................................................... 509
18 Datenfelder (Arrays) ................................................................................... 513
19 Benutzerdefinierte Datentypen .................................................................. 541
20 Objektorientierte Programmierung mit VBA .............................................. 547
21 Die Arbeit mit Objekten aus anderen Anwendungen................................. 581
22 Kleiner Spaziergang durch die Welt der benutzerdefinierten Klassen und Objekte .................................................................................. 609
23 Ereignisse und Ereignisprozeduren in der Word-Programmierung ............. 617
24 Standard-Programmiertechniken................................................................ 63525 Die wichtigsten Word-Objekte .................................................................. 691
26 Arbeiten mit Dateien und Ordnern ............................................................ 765
27 Systemnahe Programmierung ..................................................................... 773
28 Fehlerbehandlung in VBA-Projekten .......................................................... 797
29 Hilfsroutinen für VBA-Projekte ................................................................... 803
30 Add-In-Dokumentvorlagen für Word ......................................................... 81531 COM-Add-Ins............................................................................................. 821
A Praktische Tabellen..................................................................................... 827
B Kurzinfo zur Begleit-CD.............................................................................. 885
C VBA-Namenskonventionen......................................................................... 887
D Literaturverzeichnis .................................................................................... 921
Stichwortverzeichnis................................................................................... 943
Auf einen Blick
-
Inhalt 5
Vorwort ................................................................................................................ 27
Teil 1 – Einstieg
1.1 Ziel des Buches ..................................................................................................... 33
1.2 Was von den Leserinnen und den Lesern erwartet wird ....................................... 33
1.3 Was den Leser erwartet ........................................................................................ 34
1.4 Systemvoraussetzungen und Installation .............................................................. 34
1.5 Typographische Konventionen in diesem Buch .................................................... 35
1.6 Spracheinstellung für die Beispiele ....................................................................... 36
1.7 Schreibweisen und Orthographie ......................................................................... 37
1.8 Nutzen der Beispiele des Buches für andere VBA-Anwendungen ......................... 38
1.9 Service Releases und Service Packs für Word und Windows ................................ 39
1.10 Office Developer Editionen und Visual Studio-Tools ............................................ 40
1.11 Fehler und Haftung ............................................................................................... 40
2.1 Warum grundlegende Architekturkenntnisse? ..................................................... 43
2.2 Inhalte der Schnellkurse ....................................................................................... 44
2.3 Schnellkurs: Was taugen Definitionen? ................................................................ 45
2.4 Schnellkurs: Was ist Programmieren? ................................................................... 46
2.5 Schnellkurs: Was sind Makros und was sind VBA-Prozeduren? ........................... 482.5.1 VBA-Makros ............................................................................................ 482.5.2 VBA-Prozeduren ...................................................................................... 492.5.3 VBA-Struktur ........................................................................................... 512.5.4 Die fünf VBA-Modi .................................................................................. 542.5.5 Den Modus mit Code ermitteln ............................................................... 58
2.6 Schnellkurs: Was ist Objektorientierung? ............................................................ 592.6.1 Objekt: Geschichte und Idee .................................................................... 59
Inhalt
Vorbemerkungen 27
1 Einführung 33
2 Schnellkurse: Worauf beruht VBA? 43
-
6 Inhalt
2.6.2 Objekt: Verwandte und/oder abgeleitete Begriffe .................................... 592.6.3 Objekt: Ausprägungen ............................................................................. 602.6.4 Objekt: Definitionsbeispiele .................................................................... 602.6.5 Objekt: Beschreibung .............................................................................. 622.6.6 Objekt: Beispiel ....................................................................................... 662.6.7 Objekt: Notation ..................................................................................... 672.6.8 Objekt: Zusammenfassung ....................................................................... 67
2.7 Schnellkurs: Was ist Komponentenorientierung? ................................................. 672.7.1 Komponente: Geschichte und Idee ......................................................... 672.7.2 Komponente: Verwandte und/oder abgeleitete Begriffe .......................... 692.7.3 Komponente: Ausprägungen ................................................................... 712.7.4 Komponente: Definitionsbeispiele ........................................................... 742.7.5 Komponente: Beschreibung und Abgrenzung .......................................... 762.7.6 Komponente: Beispiel ............................................................................. 792.7.7 Komponente: Notation ........................................................................... 80
2.8 Schnellkurs: Was sind Bibliotheken? .................................................................... 812.8.1 Bibliothek: Geschichte und Idee .............................................................. 812.8.2 Bibliothek: Verwandte und/oder abgeleitete Begriffe ............................... 822.8.3 Bibliothek: Ausprägungen ........................................................................ 822.8.4 Bibliothek: Definitionsbeispiele ............................................................... 832.8.5 Bibliothek: Beschreibung ......................................................................... 842.8.6 Bibliothek: Beispiel .................................................................................. 922.8.7 Bibliothek: Notation ................................................................................ 99
2.9 Schnellkurs: Was ist COM? .................................................................................. 992.9.1 COM: Geschichte und Idee ..................................................................... 992.9.2 COM: Verwandte und/oder abgeleitete Begriffe ...................................... 1062.9.3 COM: Ausprägungen ............................................................................... 1112.9.4 COM: Definitionsbeispiele ....................................................................... 1122.9.5 COM: Beschreibung ................................................................................ 1132.9.6 COM: Beispiel ......................................................................................... 1302.9.7 COM: Notation ....................................................................................... 137
3.1 VBA – die Programmiersprache für den Anwender ............................................... 1393.1.1 Bestimmung der Bezeichnung VBA .......................................................... 1393.1.2 Aus welchen Teilen besteht VBA? ............................................................ 139
3.2 Klassifikation ........................................................................................................ 1403.2.1 Ist VBA eine Makrosprache? .................................................................... 1403.2.2 Ist VBA objektorientiert? ......................................................................... 1413.2.3 Ist VBA mehr als eine Programmiersprache? ............................................ 141
3.3 Die aktuell verbreiteten Basic-Dialekte in der Windows-Welt ............................ 1413.3.1 Word-VBA im Vergleich mit VB ............................................................... 1423.3.2 Word-VBA im Vergleich mit VB-Script ..................................................... 1433.3.3 Word-VBA im Vergleich mit VB.NET ....................................................... 144
3.4 Zusammenfassung: Was also ist VBA? ................................................................. 144
3 Was ist VBA? 139
-
Inhalt 7
4.1 Warum Historie? ................................................................................................... 147
4.2 Die Geschichte von Programmiersprachen ........................................................... 147
4.3 Die Geschichte von Word ..................................................................................... 1494.3.1 1978 bis 1982 – Die Vorgeschichte von Word ......................................... 1494.3.2 1983 – MultiTool Word für DOS und Word 1.0 für DOS ......................... 1504.3.3 1984 – Word 1.1 und 1.15 für DOS und die erste deutschsprachige
Word-Version für DOS ............................................................................ 1504.3.4 1985 – Word 2.0 für DOS und Word 1.0 für Mac OS .............................. 1514.3.5 1986 – Word 3.0 für DOS und Word 2.0 für Mac OS .............................. 1514.3.6 1987 – Word 4.0 für DOS und Word 3.0 für Mac OS .............................. 1514.3.7 1988 – Die erste Windows-basierte Textverarbeitung .............................. 1524.3.8 1989 – Word 5.0 für DOS und Word 4.0 für Macintosh .......................... 1524.3.9 1990 – Word 5.5 für DOS und Word 1.0 für Windows ............................ 1534.3.10 1991 – Word für Windows 1.1 und 2.0 sowie Word 5.0 für Mac ............. 1554.3.11 1992 – Deutsche Version von Word für Windows 2.0 .............................. 1564.3.12 1993 – Word 6.0 für DOS ........................................................................ 1584.3.13 1994 – Word für Windows 6.0 und Word 6.0 für Macintosh ................... 1594.3.14 1995 – Word 95 für Windows (Word 7.0) ............................................... 1604.3.15 1996 – Microsoft Pocket Word 1.0 .......................................................... 1624.3.16 1997 – Word 97 für Windows (8.0) und Pocket Word 2.0 ....................... 1634.3.17 1998 – Word 98 für Macintosh ................................................................ 1654.3.18 1999 – Word 2000 für Windows (9.0) ..................................................... 1664.3.19 2000 – Pocket Word 3.0 und Word 2001 für Macintosh .......................... 1694.3.20 2001 – Word XP für Windows (2002, 10.0), Pocket Word 2002,
Word X für Macintosh OS X (Mac 10.0) ................................................... 1714.3.21 2002 – Sicherheitspatches und Service Pack 1 und 2 für Word XP ............ 1744.3.22 2003 – Word 2003 für Windows (11.0) und Pocket Word 2003 .............. 1754.3.23 2004 – Word 2004 für Macintosh ............................................................ 1784.3.24 ... folgende .............................................................................................. 178
4.4 Die Geschichte von Basic, VBA, VB und VB.NET .................................................. 1794.4.1 1962 bis 1990 – Die Vorgeschichte .......................................................... 1794.4.2 1990 bis 1997 – WordBasic ..................................................................... 1824.4.3 1991 – Visual Basic 1.0 (16-Bit) ............................................................... 1844.4.4 1992 – VBA in Excel 5.0 und Visual Basic 2.0 (16-Bit) .............................. 1854.4.5 1993 – VBA in Project und Visual Basic 3.0 (16-Bit) ................................. 1864.4.6 1995 – VBA 2.0 und Visual Basic 4.0 (16- und 32-Bit) .............................. 1874.4.7 1997 – VBA 5.0 und Visual Basic 5.0 (32-Bit) ........................................... 1884.4.8 1998 – VBA 6.0 und Visual Basic 6.0 (32-Bit) ........................................... 1894.4.9 1999 bis 2000 – VBA 6.3 ......................................................................... 1914.4.10 2001 – Visual Studio for Applications (VSA) ............................................. 1914.4.11 2002 – Visual Basic .NET 2002 (7.0), Office XP Web Services Toolkit
und SmartTag Enterprise Resource Toolkit ............................................... 1914.4.12 2003 – VBA 6.4, Visual Basic .NET 2003 (8.0), Visual Studio Tools
für Office (VSTO) ..................................................................................... 1924.4.13 2004, 2005 ... – Visual Basic .NET 9.0 (Codename Visual Basic Whidbey),
Visual Basic .NET 10.0 (Codename Visual Basic Orcas) ............................. 194
4 Ein wenig Word- und VBA-Geschichte 147
-
8 Inhalt
5.1 Bevor es losgeht: Sichern, sichern und noch mal sichern ..................................... 1975.1.1 Sichern der Word-Arbeitsumgebung allgemein ........................................ 1975.1.2 Der Profil-Assistent .................................................................................. 1995.1.3 Die Dokumentvorlagen sichern ............................................................... 2035.1.4 Die Normal.dot sichern ........................................................................... 2125.1.5 Die Email.Dot-Vorlage sichern ................................................................. 2165.1.6 Die Mediadaten sichern ........................................................................... 2175.1.7 Die Autokorrekturen sichern ................................................................... 2175.1.8 Die Benutzerwörterbücher sichern .......................................................... 2195.1.9 Die Ausschlußwörterbücher sichern ......................................................... 2235.1.10 Die Dokumente sichern ........................................................................... 2245.1.11 Die Word-Schlüssel in der Registry sichern .............................................. 2255.1.12 Die COM-Add-In-Umgebung sichern ...................................................... 2275.1.13 Support.dot ............................................................................................. 228
6.1 Dokumentenzentrierte Speicherung von Makros und Prozeduren ....................... 231
6.2 Der beste Speicherort für Makros und VBA-Prozeduren ...................................... 2316.2.1 Der ungünstigste Platz für VBA-Prozeduren: Dokumente ......................... 2326.2.2 Der zweit ungünstigste Platz für VBA-Prozeduren: Die Normal.dot .......... 2326.2.3 Makros und VBA-Prozeduren dokumentspezifisch speichern ................... 2326.2.4 Makros und VBA-Prozeduren in globalen Add-In-Dokumentvorlagen ...... 233
6.3 Legen Sie Ihren eigenen Add-In-Werkzeugkasten an ........................................... 2336.3.1 Add-In-Dokumentvorlage für Ihre VBA-Routinen anlegen ....................... 234
6.4 Das Hinzufügen eines Word-Add-Ins ................................................................... 2346.4.1 Das Einbinden eines Add-Ins über das Dialogfeld »Dokumentvorlagen
und Add-Ins« .......................................................................................... 2356.4.2 Das Einbinden eines Add-Ins mit Hilfe des Autostart-Ordners .................. 2356.4.3 Einbinden eines Word-Add-Ins per VBA .................................................. 236
6.5 VBA-Makros und Prozeduren nachträglich in das eigene Add-In aufnehmen ...... 236
6.6 Test der eigenen Add-In-Werkzeuge (Prozeduren) .............................................. 236
6.7 Das Arbeitsmenü .................................................................................................. 2376.7.1 Arbeitsmenü einrichten ........................................................................... 2376.7.2 Dateien zum Arbeitsmenü hinzufügen ..................................................... 2386.7.3 Dateien aus dem Arbeitsmenü entfernen ................................................. 2386.7.4 Entfernen- und Hinzufügen-Befehl im Arbeitsmenü zur Verfügung stellen 238
5 Sicherungsarbeiten 197
6 Übungsumgebung und »Werkzeugkasten« für Makros und VBA-Prozeduren erstellen 231
-
Inhalt 9
7.1 Sinn und Unsinn des Makro-Rekorders ................................................................ 239
7.2 Wie wird ein Makro aufgezeichnet? ..................................................................... 2407.2.1 Beispiel und Aufgabenstellung: Ein-/Aus-Schalter für die
Satzspiegel-Markierung ............................................................................ 2417.2.2 Plan zur Aufzeichnung schmieden ............................................................ 2417.2.3 Makroaufzeichnung beginnen .................................................................. 2427.2.4 Makros ausführen .................................................................................... 2447.2.5 Das Scheitern ........................................................................................... 2457.2.6 Die Lösung .............................................................................................. 245
7.3 Makros (Prozeduren) nachträglich auf Tastencodes legen .................................... 247
7.4 Makros (Prozeduren) nachträglich als Schaltflächen in Symbolleisten eintragen .. 248
7.5 Makro-Schaltfläche aus einer Symbolleiste entfernen oder verschieben ............. 249
7.6 Makro löschen ...................................................................................................... 2497.6.1 Ein Makro löschen (Makro-Dialog) ........................................................... 2497.6.2 Alle Makros eines VBA-Moduls löschen (Organisieren-Dialog) .................. 2507.6.3 Makros im Visual Basic-Editor löschen ..................................................... 250
7.7 Makros gezielt bearbeiten .................................................................................... 250
7.8 Wildgewordenen VBA-Code stoppen ................................................................... 251
8.1 Die VBA-IDE und der Visual Basic-Editor (VBE) ................................................... 253
8.2 Den Visual Basic-Editor (VBE) starten .................................................................. 253
8.3 Die Fenster des Visual Basic-Editors .................................................................... 2548.3.1 Bedienungstips und Hinweise für den Umgang mit Fenstern .................... 256
8.4 Der Projekt-Explorer ............................................................................................. 2578.4.1 Das Öffnen des Projekt-Explorers ............................................................. 2588.4.2 Projekte ................................................................................................... 2588.4.3 Ändern des Projektnamens ...................................................................... 2598.4.4 Ein-/Ausblenden von Projekt-Unterzweigen ............................................. 2608.4.5 Die Bestandteile eines Projekts: Module und Referenzen ......................... 2618.4.6 Die drei Ansicht-Schaltflächen des Projekt-Explorers ................................ 2638.4.7 Das Einfügen von Modulen ...................................................................... 2648.4.8 Die Entfernung eines Moduls ................................................................... 2648.4.9 Das Ändern von Modulnamen ................................................................. 265
8.5 Das Eigenschaftsfenster ........................................................................................ 2658.5.1 Öffnen des Eigenschaftsfensters ............................................................... 2668.5.2 Sortierung der Eigenschaften .................................................................... 267
8.6 Die Code-Fenster .................................................................................................. 2678.6.1 Die Eingabe- und Editiermöglichkeiten eines Code-Fensters .................... 2688.6.2 Das Öffnen eines Code-Fensters .............................................................. 2688.6.3 Die Auswahllisten »Objekt« und »Prozedur« in einem Code-Fenster ........ 268
7 Makros aufzeichnen 239
8 Die VBA-Entwicklungsumgebung 253
-
10 Inhalt
8.6.4 Die Ansicht-Schaltflächen des Code-Fenster ............................................ 2718.6.5 Der Fensterteiler im Code-Fenster ........................................................... 2718.6.6 Die Kennzeichenleiste im Code-Fenster ................................................... 272
8.7 Das Direktfenster ................................................................................................. 2738.7.1 Das Öffnen des Direktfensters ................................................................. 2738.7.2 Die Arbeit mit dem Direktfenster ............................................................ 274
8.8 Der Objektkatalog ............................................................................................... 2758.8.1 Öffnen des Objektkatalogs ...................................................................... 2758.8.2 Die Standard-Bereiche und -Listen des Objektkatalogs ............................ 2768.8.3 Schaltflächen im Objektkatalog ................................................................ 2778.8.4 Suche im Objektkatalog ........................................................................... 2788.8.5 Symbole im Objektkatalog ....................................................................... 2798.8.6 Verborgene Elemente anzeigen ............................................................... 280
8.9 Das UserForm-Fenster zum Entwerfen von Benutzerformularen .......................... 2818.9.1 Das Anlegen eines neuen Benutzerformulars ........................................... 2818.9.2 Das Öffnen eines vorhandenen UserForm-Fensters .................................. 2818.9.3 Das Starten eines Benutzerformulars ........................................................ 2828.9.4 Die Werkzeugsammlung .......................................................................... 2828.9.5 Der Dialog »Weitere Steuerelemente« ..................................................... 283
8.10 Das Lokal-Fenster ................................................................................................ 2848.10.1 Öffnen des Lokal-Fensters ....................................................................... 2848.10.2 Schließen des Lokal-Fensters ................................................................... 2858.10.3 Ein-/Ausblenden von Untervariablen ....................................................... 2868.10.4 Die Modulvariable im Lokal-Fenster ........................................................ 2868.10.5 Werte im Lokal-Fenster bearbeiten .......................................................... 2868.10.6 Aktualisierung des Lokal-Fensters ............................................................ 286
8.11 Die Aufrufliste ...................................................................................................... 2868.11.1 Öffnen der Aufrufliste .............................................................................. 287
8.12 Das Überwachungsfenster ................................................................................... 2888.12.1 Öffnen des Überwachungsfensters ........................................................... 2888.12.2 Die Bedienung des Überwachungsfensters ............................................... 2888.12.3 Hinzufügen eines Überwachungsausdrucks .............................................. 2898.12.4 Entfernen eines Überwachungsausdrucks aus dem Überwachungsfenster 2918.12.5 Bearbeiten eines Überwachungsausdrucks ............................................... 291
8.13 Die Symbolleisten des VBE .................................................................................. 2928.13.1 Die Symbolleiste »Voreinstellung« ........................................................... 2928.13.2 Die Symbolleiste »Bearbeiten« ................................................................ 2968.13.3 Die Symbolleiste »Debuggen« beziehungsweise »Testen« ....................... 2988.13.4 Die Symbolleiste »UserForm« .................................................................. 301
8.14 Die VBE-Menüs .................................................................................................... 3048.14.1 Das Menü »Datei« ................................................................................... 3048.14.2 Das Menü »Bearbeiten« .......................................................................... 3078.14.3 Das Menü »Ansicht« ............................................................................... 3098.14.4 Das Menü »Einfügen« ............................................................................. 3138.14.5 Das Menü »Format« ................................................................................ 3138.14.6 Das Menü »Debuggen« (früher »Testen«) ................................................ 3168.14.7 Das Menü »Ausführen« ........................................................................... 3188.14.8 Das Menü »Extras« .................................................................................. 318
-
Inhalt 11
8.14.9 Das Menü »Add-Ins« ............................................................................... 3198.14.10 Das Menü »Fenster« ................................................................................ 3198.14.11 Das Menü »?« (Hilfe) ............................................................................... 320
8.15 VBA-Hilfe im Visual Basic-Editor .......................................................................... 3208.15.1 Hilfe aufrufen ........................................................................................... 3218.15.2 Wenn die VBA-Offline-Hilfe nicht »funzt« ................................................ 3258.15.3 Die MSDN-Hilfe ...................................................................................... 3258.15.4 Spezielle Hilfsfunktionen des Visual Basic-Editor ...................................... 326
8.16 Die Kontextmenüs ................................................................................................ 328
8.17 Interna des VBE und der VBA-Entwicklungsumgebung ........................................ 3288.17.1 Der Dialog »Optionen« ............................................................................ 3288.17.2 Der Dialog »Projekteigenschaften« ........................................................... 3348.17.3 Der Dialog »Digitale Signatur« ................................................................. 3388.17.4 Add-Ins für die VBA-Entwicklungsumgebung festlegen ............................ 344
8.18 Die wichtigsten Tastenbelegungen für schnelle Code-Bearbeitung ...................... 348
8.19 Die wichigsten Tastenbelegungen für schnelles Ausführen und Debuggen von VBA-Programmen .......................................................................................... 350
8.20 Die wichtigsten Tastenbelegungen für schnelles Arbeiten im UserForm-Fenster . 350
Teil 2 – Grundlagen
9.1 VBA-Sprachbereiche ............................................................................................. 355
9.2 Speicher, Adresse und Name ................................................................................ 356
9.3 Bezeichner (Identifizierer) ..................................................................................... 3569.3.1 Definition des Begriffs »Definition« in VBA .............................................. 3579.3.2 Deklaration .............................................................................................. 3589.3.3 Einfluß der Codeposition auf die Deklaration ........................................... 3619.3.4 Benennung von Bezeichnern gemäß VBA-Spezifikation ............................ 3619.3.5 Benennung von Bezeichnern gemäß unverbindlicher Konventionen ........ 361
9.4 Benennung von Bezeichnern allgemein ................................................................ 362
9.5 Verbindliche Namensregeln gemäß VBA-Spezifikation ......................................... 362
9.6 Zusammenfassung ................................................................................................ 364
10.1 Anweisungen ........................................................................................................ 36710.1.1 Anweisungsende ...................................................................................... 36810.1.2 Anweisungen in Kombination mit anderen Sprachelementen ................... 36810.1.3 Automatische Ergänzungen von Anweisungen .......................................... 36910.1.4 Fehlerhafte Anweisungen (automatische Syntaxüberprüfung) ................... 36910.1.5 Mehrere Anweisungen in einer Zeile (Zusammenfassungszeilen) .............. 36910.1.6 Lange Anweisungszeilen (Fortsetzungszeilen, Folgezeilen) ........................ 369
9 Allgemeine Anmerkungen 355
10 Anweisungen, Ausdrücke und Kommentare 367
-
12 Inhalt
10.1.7 Anweisungskategorien ............................................................................. 37110.1.8 Die wichtigsten VBA-Anweisungen im Überblick ..................................... 371
10.2 Ausdruck .............................................................................................................. 37210.2.1 Operator ................................................................................................. 37310.2.2 Operand .................................................................................................. 37310.2.3 Arität ....................................................................................................... 37310.2.4 Konstanten und Variablen in Ausdrücken ................................................ 374
10.3 Kommentare ......................................................................................................... 37510.3.1 Das Hochkomma für Kommentarzeilen ................................................... 37510.3.2 Rem ........................................................................................................ 37510.3.3 Blockkommentare ................................................................................... 376
11.1 Variablen .............................................................................................................. 37711.1.1 Automatisch deklarierte Einzelvariablen mit impliziter Variablendeklaration 37711.1.2 Explizite Deklaration von Einzelvariablen, Datenfeldern
und Objektvariablen ................................................................................ 37811.1.3 Deklaration von Variablenlisten ............................................................... 380
11.2 Die Zugriffsmodifizierer und der Gültigkeitsbereich für Variablen ....................... 38011.2.1 Der Gültigkeitsbereich von Variablen ....................................................... 38111.2.2 Die Dim-Anweisung ................................................................................ 38211.2.3 Die Public-Anweisung ............................................................................. 38311.2.4 Die Private-Anweisung ............................................................................ 38411.2.5 Die Static-Anweisung .............................................................................. 38411.2.6 Die ReDim-Anweisung für Datenfelder .................................................... 385
11.3 Datentypen .......................................................................................................... 38511.3.1 Numerische Datentypen .......................................................................... 38611.3.2 Zeichenfolgendatentyp ............................................................................ 38711.3.3 Objekt-Datentypen ................................................................................. 38711.3.4 Veränderbare Datentypen ....................................................................... 38911.3.5 Formatierende Datentypen ...................................................................... 38911.3.6 Datentypen-Übersicht ............................................................................. 39311.3.7 Festlegen des Datentyps .......................................................................... 39411.3.8 Ermitteln des Datentyps .......................................................................... 39411.3.9 Die DefType-Anweisung .......................................................................... 39411.3.10 Umwandlungsfunktionen ........................................................................ 39511.3.11 Überprüfen der Inhalte ............................................................................ 39711.3.12 Initialisierung von Variablen ..................................................................... 39711.3.13 Spezielle Werte ....................................................................................... 398
11.4 Konstanten ........................................................................................................... 39911.4.1 Literale Konstanten ................................................................................. 39911.4.2 Verwenden der Const-Anweisung für benutzerdefinierte Konstanten ...... 40011.4.3 Integrierte Konstanten ............................................................................. 40111.4.4 Konstanten für die bedingte Kompilierung .............................................. 40211.4.5 Enum-Auflistungen (Enumerationen) ....................................................... 40211.4.6 Vermeiden von Zirkelbezügen ................................................................. 406
11 Variablen, Datentypen und Konstanten 377
-
Inhalt 13
12.1 Arithmetische Operatoren .................................................................................... 410
12.2 Relationale Operatoren ........................................................................................ 41212.2.1 »Echte« Vergleichsoperatoren .................................................................. 41312.2.2 Der Operator »Like« ................................................................................ 41612.2.3 Der Operator »Is« .................................................................................... 419
12.3 Logische Operatoren und Bitoperatoren .............................................................. 42012.3.1 Logische Operatoren ................................................................................ 42012.3.2 Bitweise Operatoren ................................................................................ 42112.3.3 Wahrheitstabellen .................................................................................... 42112.3.4 Der And-Operator (Und-Operator) .......................................................... 42212.3.5 Der Or-Operator (Oder-Operator) ........................................................... 42312.3.6 Der Not-Operator (Nicht-Operator) ......................................................... 42312.3.7 Der Xor-Operator Xor (Entweder-Oder-Operator) ................................... 42412.3.8 Der Eqv-Operator Eqv (Äquivalenz-Operator) und der Imp-Operator
(Implikations-Operator) ........................................................................... 42512.3.9 Vergleich zwischen logischen und binären Operator ................................. 425
12.4 Zuweisungsoperatoren ......................................................................................... 426
12.5 Verkettungsoperatoren (Zeichenverknüpfungsoperatoren) .................................. 427
12.6 Operationsprioritäten (Operator-Rangfolge) ........................................................ 427
12.7 Überladung von Operatoren ................................................................................. 429
13.1 Prozedurarten ....................................................................................................... 431
13.2 Die Sub-Prozedur ................................................................................................. 43113.2.1 Das Erstellen von Prozeduren und Makros ............................................... 43313.2.2 Parameter und Argumente von Prozeduren .............................................. 43613.2.3 Starten von Prozeduren und Makros ........................................................ 44513.2.4 Die Call-Anweisung: Aufruf einer Prozedur durch eine andere Prozedur ... 44713.2.5 Unterbrechen von Prozedurausführungen ................................................ 447
13.3 Die Function-Prozedur .......................................................................................... 44813.3.1 Ergebnisfestlegung ................................................................................... 45013.3.2 Aufruf einer Funktion ............................................................................... 450
13.4 Rekursion .............................................................................................................. 45113.4.1 Rekursion-Beispiel I: Text und Zeichenfolgen mit einem beliebigen
Zeichen sperren lassen ............................................................................. 451
13.5 Gültigkeitsbereich von Prozeduren ....................................................................... 45313.5.1 Friend für Function-Prozeduren im Klassenmodul .................................... 454
13.6 Namensräume ....................................................................................................... 454
12 Operatoren 409
13 Prozeduren 431
-
14 Inhalt
14.1 Interaktion ........................................................................................................... 457
14.2 Ausgaben im Direktfenster (Debug.Print) ............................................................ 457
14.3 Aus- und Eingaben mit MsgBox ........................................................................... 45814.3.1 MsgBox-Beispiel I: Ja/Nein-Dialog um den Assistenten ein-/auszuschalten 46114.3.2 MsgBox-Konstanten ................................................................................ 46214.3.3 MsgBox-Beispiel II: Die gängigsten MsgBox-Dialoge ................................ 46314.3.4 MsgBox-Beispiel III: Gestaltung und Textformatierung
des MsgBox-Dialogs ................................................................................ 46414.3.5 Vordefinierte VBA-Konstanten für Zeichenketten .................................... 46514.3.6 MsgBox-Rückgabewerte .......................................................................... 46614.3.7 MsgBox-Beispiel IV: Markierten Text aus dem Dokument in
MsgBox-Dialoge überführen .................................................................... 466
14.4 Eingaben über die InputBox-Funktion ................................................................. 46714.4.1 InputBox-Beispiel I: Zeichenfolge des Anwendungsordners in ein
Dokument übertragen ............................................................................. 46914.4.2 InputBox-Beispiel II: Validierung der Eingabe ........................................... 470
14.5 Ausgaben in der Statusleiste der Anwendung ...................................................... 47114.5.1 Statuszeilen-Beispiel I: Verknüpfte Dokumentvorlage anzeigen ................ 47114.5.2 Statuszeilen-Beispiel II: Version des aktuellen Dokuments anzeigen ......... 47214.5.3 Statuszeilen-Beispiel III: Start- und End-Koordinate der aktuellen
Markierung anzeigen ............................................................................... 47214.5.4 Statuszeilen-Beispiel IV: Uhrzeit für eine festgelegte Zeit in der
Statuszeile anzeigen ................................................................................. 47214.5.5 Statuszeilen-Beispiel V: Anzahl der Schleifendurchläufe in der
Statuszeile aufwärts mitzählen ................................................................. 47314.5.6 Statuszeilen-Beispiel VI: Anzahl der Schleifendurchläufe in der
Statuszeile abwärts mitzählen .................................................................. 473
14.6 Ton ausgeben ....................................................................................................... 474
15.1 Allgemeines zu Sprüngen, Verzweigungen und Entscheidungen ......................... 475
15.2 GoTo-Anweisung .................................................................................................. 47615.2.1 GoTo-Beispiel: Mehrfach verschachtelte Kontrollstruktur verlassen .......... 47715.2.2 GoTo in anderen Zusammenhängen ........................................................ 47715.2.3 GoSub-Return, On-GoSub, On-GoTo ...................................................... 478
15.3 If ... Then-Verzweigung ........................................................................................ 47815.3.1 If..Then ................................................................................................... 47915.3.2 If ... Then ... Else ..................................................................................... 48015.3.3 Mehrzeilige If-Then-Anweisung ............................................................... 48015.3.4 Verschachtelte If-Then-Anweisungen ....................................................... 48115.3.5 If ... Then ... ElseIf ................................................................................... 48215.3.6 If-Then-Anweisung: Neuerungen in VB.NET ............................................ 482
14 Standard-Anweisungen für die Ein- und Ausgabe 457
15 Sprünge, Verzweigungen, Fallentscheidungen 475
-
Inhalt 15
15.4 Select ... Case ....................................................................................................... 48215.4.1 Select-Case-Beispiel I: Einzelne Werte (Schulnoten) überprüfen ............... 48415.4.2 Select-Case-Beispiel II: Jahreszeit mit Hilfe von Ausdruckslisten ermitteln 48415.4.3 Select-Case-Beispiel III: Die Verwendung des Schlüsselworts To in
Verbindung mit einem Error-Handler ....................................................... 48515.4.4 Select-Case-Beispiel IV: Zeichenfolgen prüfen .......................................... 48615.4.5 Select-Case-Beispiel V: Die Verwendung des Schlüsselworts Is und der
Anfangsbuchstabe eines Wortes im Word-Dokument .............................. 48715.4.6 Grenzen der Select-Case-Anweisung ........................................................ 488
16.1 Die Schleifentypen in VBA .................................................................................... 489
16.2 Do-Loop-Schleifen ................................................................................................ 49016.2.1 Do While ... Loop-Beispiel: Kopfgesteuerte While-Schleifendurchläufe
zählen und anzeigen ................................................................................ 49216.2.2 Do Until ... Loop-Beispiel: Kopfgesteuerte Until-Schleifendurchläufe
zählen und anzeigen ................................................................................ 49316.2.3 Do ... Loop While-Beispiel: Fußgesteuerte While-Schleifendurchläufe
zählen und anzeigen ................................................................................ 49416.2.4 Do ... Loop Until-Beispiel: Fußgesteuerte Until-Schleifendurchläufe
zählen und anzeigen ................................................................................ 49516.2.5 Do-Loop-Schleife-Beispiel: Dateinamen eines bestimmten Ordners in
das aktuelle Dokument einfügen .............................................................. 495
16.3 For ... Next ............................................................................................................ 49616.3.1 For-Next-Beispiel I: Zehn Zahlen im Direktfenster ausgeben .................... 49716.3.2 For-Next-Beispiel II: Steuern der Schrittweite ........................................... 49816.3.3 For-Next-Beispiel III: Verringerung des Schleifenzählers ........................... 49816.3.4 For-Next-Beispiel IV: Schleifenzähler mit Fließkommawerten ................... 49916.3.5 For-Next-Beispiel V: For-Next-Schleifen verschachteln ............................. 500
16.4 For Each ... Next ................................................................................................... 50116.4.1 For-Each-Beispiel (Datenfeld) I: Daten auslesen ....................................... 50216.4.2 For-Each-Beispiel (Datenfeld) II: Hinzufügen der Mehrwertsteuer ............ 50316.4.3 For-Each-Beispiel (Auflistung) III: Namen der offenen
Word-Fenster anzeigen ............................................................................ 50416.4.4 For-Each-Beispiel (Auflistung) IV: Schalter für Texthervorhebung ............. 505
16.5 While ... Wend-Schleifen ...................................................................................... 506
17.1 Einzeilige Kontrollstrukturen ................................................................................ 509
17.2 Iif-Funktion ........................................................................................................... 50917.2.1 Iif-Beispiel I: Ist die Markierung eine Zahl oder ein Text? .......................... 510
17.3 Choose-Funktion .................................................................................................. 51017.3.1 Choose-Beispiel I: Preiscode anzeigen ...................................................... 510
16 Schleifen 489
17 Sonstige Kontrollstrukturen 509
-
16 Inhalt
17.4 Switch-Funktion ................................................................................................... 51117.4.1 Switch-Beispiel I: Aus einer Anrede die Sprache ermitteln ........................ 512
18.1 Allgemeines zu Datenfeldern ............................................................................... 513
18.2 Ein- und mehrdimensionale Datenfelder .............................................................. 513
18.3 Deklaration eines Datenfeldes ............................................................................. 51418.3.1 Syntax für die Deklaration eines Datenfeldes ........................................... 51418.3.2 Deklaration von statischen Datenfeldern ................................................. 51518.3.3 Deklaration von dynamischen Datenfeldern ............................................ 51618.3.4 Änderung des Datentyps eines Datenfeldes ............................................. 516
18.4 Beispiele für gültige Datenfeld-Deklarationen ..................................................... 517
18.5 Wertzuweisung und Zugriff auf Datenfeldelemente ............................................. 51718.5.1 Initialisierung eines Datenfeldelements .................................................... 51818.5.2 Zugriff auf ein Datenfeldelement ............................................................. 51818.5.3 Datenfeld-Beispiel I: Wertzuweisung und Zugriff ohne Schleifenkonstrukt 51918.5.4 Datenfeld-Beispiel: Wertzuweisung und Zugriff über
ein Schleifenkonstrukt ............................................................................. 52018.5.5 Hinweis für Profis .................................................................................... 520
18.6 Option Base ......................................................................................................... 521
18.7 Die ReDim-Anweisung ......................................................................................... 52118.7.1 Der Einsatz von Preserve ......................................................................... 523
18.8 Array-Funktion ..................................................................................................... 524
18.9 IsArray-Funktion .................................................................................................. 525
18.10 LBound- und UBound-Funktion ........................................................................... 52518.10.1 LBound-/UBound-Beispiel: Datenfeld mit Werte füllen, wenn die
Größe des Datenfelds unbekannt ist ........................................................ 52618.10.2 LBound-/UBound-Beispiel: Die Anzahl der Datenfeldelemente ermitteln . 52718.10.3 LBound-/UBound-Beispiel: Maximalen Speicherbedarf eines
Datenfelds ermitteln ................................................................................ 527
18.11 Löschen von Datenfeldern .................................................................................... 52818.11.1 Erase-Beispiel: Anzeigen und Löschen der Quadrate von 1 bis 10 in
einem Datenfeld ...................................................................................... 529
18.12 Feststellen, ob ein Datenfeld dimensioniert ist beziehungsweise Elemente enthält .................................................................................................. 53018.12.1 Anzahl der Dimensionen eines Datenfeldes ermitteln .............................. 531
18.13 Datenfelder sortieren ........................................................................................... 534
18.14 Maximalwert im Datenfeld suchen ...................................................................... 537
18.15 Minimalwert im Datenfeld suchen ....................................................................... 537
18.16 Daten aus einer Word-Tabelle in ein Array einlesen ............................................ 53818.16.1 Einlesen von Daten aus einer Word-Tabelle in ein
eindimensionales Datenfeld ..................................................................... 538
18 Datenfelder (Arrays) 513
-
Inhalt 17
18.16.2 Einlesen von Daten aus einer Word-Tabelle in ein zweidimensionales Datenfeld ................................................................... 539
19.1 Allgemeines zu benutzerdefinierten Datentypen .................................................. 541
19.2 Beispiel für den Umgang mit einem benutzerdefinierten Datentyp ...................... 542
19.3 Strukturdatenfeldvariablen ................................................................................... 544
19.4 Type-Daten in Random-Datei schreiben ............................................................... 545
20.1 Einteilung der Objekte nach Nutzungsart ............................................................. 547
20.2 Objekt .................................................................................................................. 548
20.3 Objektausdrücke .................................................................................................. 54820.3.1 Standardmethoden und Standardeigenschaften ........................................ 54920.3.2 OO in der Alltagssprache ......................................................................... 55020.3.3 Die TypeName-Funktion oder wie man die Klasse eines Objekts ermittelt 55220.3.4 Die Parent-Eigenschaft ............................................................................. 55320.3.5 Welche Objektarten »enthält« ein Objekt? ............................................... 55420.3.6 Kurze Codezeilen und äquivalente Objektausdrücke ................................ 554
20.4 Objekteigenschaften ............................................................................................. 55520.4.1 Das Setzen einer Eigenschaft .................................................................... 55620.4.2 Beispiel Eigenschaften I: Text in der Statuszeile von Word ausgeben ........ 55620.4.3 Beispiel Eigenschaften II: Schriftfarbe und Schriftgröße im letzten
Absatz eines Dokuments ändern .............................................................. 55620.4.4 Das Auslesen einer Eigenschaft ................................................................ 55720.4.5 Beispiel Eigenschaften III: Name des aktiven Dokuments in einer
Meldung anzeigen ................................................................................... 55720.4.6 Beispiel Eigenschaften IV: Name des aktiven Dokuments in
Großbuchstaben in einer Meldung anzeigen ............................................. 55820.4.7 Beispiel Eigenschaften V: Überprüfen, ob in Word ein Dokument
geöffnet ist .............................................................................................. 558
20.5 Objektmethoden .................................................................................................. 55920.5.1 Beispiel Methoden I: Ein Dokument schließen ......................................... 56020.5.2 Beispiel Methoden II: Das zuletzt verwendete Dokument öffnen ............. 56020.5.3 Beispiel Methoden III: Einfügemarke zu einer bestimmten
Seite verschieben ..................................................................................... 56020.5.4 Beispiel Methoden IV: Ausdruck bestimmter Seiten des a
ktiven Dokuments ................................................................................... 560
20.6 Objekthierarchie und Informationen zu Objekten, Eigenschaften und Methoden 561
20.7 Objektauflistungen ............................................................................................... 56220.7.1 Die Bedeutung von Auflistungen .............................................................. 56320.7.2 Benennungsempfehlungen bei Auflistungen ............................................. 563
19 Benutzerdefinierte Datentypen 541
20 Objektorientierte Programmierung mit VBA 547
-
18 Inhalt
20.8 Die gemeinsamen Methoden und Eigenschaften von Auflistungen (collections) . 56320.8.1 Count-Eigenschaft ................................................................................... 56420.8.2 Add-Methode ......................................................................................... 56420.8.3 Remove-/Close-Methode ........................................................................ 56820.8.4 Item-Eigenschaft oder Item-Methode ...................................................... 569
20.9 Objektvariablen .................................................................................................... 57020.9.1 Was unterscheidet eine Variable von einer Objektvariablen? ................... 57020.9.2 Objektvariablen sind Verweise, keine Objekte ......................................... 57220.9.3 Set-Anweisung ........................................................................................ 57320.9.4 Ein neues Objekt via Code erzeugen ........................................................ 57420.9.5 Die Bedeutung des Schlüsselworts New .................................................. 57420.9.6 Die Bedeutung von Nothing .................................................................... 57720.9.7 Mit Is vergleichen, ob zwei Objektvariablen auf dasselbe
Objekt verweisen .................................................................................... 57720.9.8 Mit IsObject prüfen, ob eine Variable eine Objektvariable ist ................... 578
20.10 With-Anweisung .................................................................................................. 578
21.1 Einleitung zur anwendungsübergreifenden Word-Programmierung .................... 581
21.2 Vorstellung der Grundbegriffe bei der Automatisierung ...................................... 581
21.3 Fundamentale Arbeitsschritte bei der Automatisierung ....................................... 583
21.4 Verweise auf Objektbibliotheken erstellen .......................................................... 58321.4.1 Verweis auf die Objektbibliothek von Excel setzen .................................. 58321.4.2 Priorität der Verweise .............................................................................. 58521.4.3 Vorsicht beim Deaktivieren oder Umstellen von Verweisen ..................... 585
21.5 Tip: Benutzen Sie den Task-Manager ................................................................... 586
21.6 Die Rolle von New bei der Automatisierung ........................................................ 58721.6.1 Beispiel Automatisierung I: Excel mit leerem Tabellenblatt starten ........... 58821.6.2 Untergeordnete Objekte ......................................................................... 58921.6.3 Vorteile von Verweisen und von early binding ......................................... 59021.6.4 Die Eigenarten von New .......................................................................... 591
21.7 Die CreateObject-Funktion .................................................................................. 59121.7.1 Beispiel Automatisierung II: Excel mit leerem Tabellenblatt starten .......... 59321.7.2 Die Eigenarten von CreateObject ............................................................ 594
21.8 Die GetObject-Funktion ....................................................................................... 595
21.9 SingleUse-Anwendungen oder MultiUse-Anwendungen ..................................... 597
21.10 Mehrfaches Instanziieren verhindern I ................................................................. 599
21.11 Mehrfaches Instanziieren verhindern II ................................................................ 59921.11.1 Laufzeitfehler 429 ................................................................................... 59921.11.2 Anzahl der Anwendungsfenster mit API-Funktionen ermitteln ................. 601
21.12 Das Schließen eines Objekts im allgemeinen ....................................................... 60421.12.1 Beispiel Automatisierung: Excel über die Quit-Methode schließen ........... 605
21 Die Arbeit mit Objekten aus anderen Anwendungen 581
-
Inhalt 19
21.13 Word im Zusammenspiel mit Access .................................................................... 606
21.14 Tips für die Automatisierung ................................................................................ 608
22.1 Ein neues Klassenmodul anlegen .......................................................................... 609
22.2 Eine Methode für eine benutzerdefinierte Klasse für »designen« ......................... 610
22.3 Erster Test einer benutzerdefinierten Klasse ......................................................... 611
22.4 Parameter bei benutzerdefinierten Methoden ...................................................... 612
22.5 Eine Eigenschaft für eine benutzerdefinierte Klasse »designen« ........................... 61322.5.1 Eigenschaftsprozeduren ........................................................................... 61322.5.2 Beispiel Eigenschaftsprozeduren: Mehrwertsteuerberechung .................... 61422.5.3 Eigenschaftsprozeduren für Objekte ......................................................... 616
23.1 Was ist das besondere an Ereignisprozeduren? .................................................... 618
23.2 Wo befinden sich Ereignisprozeduren? ................................................................. 618
23.3 Tabellarische Übersicht zu den Ereignisprozeduren .............................................. 620
23.4 Ereignisse für Dokumente .................................................................................... 62223.4.1 Beispiel Document_Open: Beim Öffnen eines Dokuments den letzten
Bearbeiter anzeigen ................................................................................. 62423.4.2 Beispiel Document_Close: Dokument ohne Rückfrage schließen .............. 624
23.5 Die Ereignisse des Word-Application-Objekts ..................................................... 62523.5.1 WithEvents in Ereignisprozeduren ............................................................ 62523.5.2 Beispiel Anwendungsereignis: Dauer der Bearbeitung eines Dokuments
anzeigen .................................................................................................. 626
23.6 Die Auto-Makros in Word .................................................................................... 62823.6.1 AutoExec-Prozedur .................................................................................. 62923.6.2 Die AutoNew-Prozedur ........................................................................... 63023.6.3 Die AutoOpen-Prozedur .......................................................................... 63023.6.4 Das AutoClose-Prozedur .......................................................................... 63123.6.5 Das AutoExit-Prozedur ............................................................................. 63123.6.6 Beispiel AutoOpen-Makro: Entscheiden, ob ein Dokument auf
der Basis einer Dokumentvorlage oder die Dokumentvorlage selber geöffnet wird ........................................................................................... 631
23.7 Die integrierten Word-Befehle verbessern ........................................................... 63123.7.1 Beispiel: Übersteuerung des integrierte Word-Befehls »FileSaveAs«
durch eine benutzerdefinierte Prozedur ................................................... 632
22 Kleiner Spaziergang durch die Welt der benutzerdefinierten Klassen und Objekten 609
23 Ereignisse und Ereignisprozeduren in der Word-Programmierung 617
-
20 Inhalt
Teil 3 – Allgemeine Programmiertechniken
24.1 In Word integrierte Dialogfelder .......................................................................... 63524.1.1 Allgemeine Syntax für in Word integrierte Dialogfelder ............................ 63524.1.2 Die wdDialog-Konstanten ....................................................................... 63624.1.3 Anzahl der verfügbaren, integrierten Word-Konstanten ........................... 63624.1.4 Methoden für integrierte Dialogfelder ..................................................... 63724.1.5 Argumente für integrierte Dialogfelder .................................................... 64024.1.6 Beispiel Dialogs I: Den Word-Dialog »Öffnen« anzeigen .......................... 64124.1.7 Beispiel Dialogs II: Den Word-Dialog »Vorlagen« (früher »Neu«)
ohne Umwege anzeigen .......................................................................... 64124.1.8 Registerkarten eines integrierten Dialogfeldes anzeigen ........................... 642
24.2 Arbeiten mit UserForm ......................................................................................... 64324.2.1 UserForms selbst entwerfen und erstellen ............................................... 64324.2.2 UserForm programmgesteuert starten ..................................................... 64324.2.3 Beispiel CommandButton I: UserForm programmgesteuert mit
einem Abbruch-Schaltknopf schließen ..................................................... 64524.2.4 UserForms zur Laufzeit (dynamisch) generieren ....................................... 647
24.3 Das Prinzip der Steuerelemente und ihre wichtigsten Eigenschaften .................. 64824.3.1 Das Einstellen der Eigenschaften eines Steuerelements ............................ 64824.3.2 Die wichtigsten Eigenschaften ................................................................. 64924.3.3 Die wichtigsten Stileigenschaften ............................................................. 65024.3.4 Der Aufruf von den Methoden eines Steuerelements ............................... 651
24.4 Die Steuerelemente im Detail .............................................................................. 65124.4.1 Objekte auswählen .................................................................................. 65224.4.2 Label ....................................................................................................... 65224.4.3 TextBox ................................................................................................... 65324.4.4 ListBox .................................................................................................... 65424.4.5 ComboBox .............................................................................................. 66024.4.6 CheckBox ................................................................................................ 66124.4.7 OptionButton .......................................................................................... 66424.4.8 ToggleButton ........................................................................................... 66624.4.9 Frame ...................................................................................................... 66824.4.10 CommandButton ..................................................................................... 67324.4.11 MultiPage ................................................................................................ 67424.4.12 TabStrip .................................................................................................. 68424.4.13 ScrollBar .................................................................................................. 68524.4.14 SpinButton .............................................................................................. 68624.4.15 Image ...................................................................................................... 687
24 Standard-Programmiertechniken 635
-
Inhalt 21
Teil 4 – Das Word-Objektmodell
25.1 Grundsätzliches zum Word-Objektmodell ............................................................ 691
25.2 Application-Objekt ............................................................................................... 69425.2.1 Beispiel Application I: Eigenschaften des Application-Objekts auflisten ..... 69625.2.2 Beispiel Application II: Word-Titelzeile mit persönlicher Anrede ............... 69725.2.3 Beispiel Application III: Word-Titelzeile mit vollständigem Pfad des
aktiven Dokuments .................................................................................. 69725.2.4 Beispiel Application IV: Höhe des Word-Fensters ändern ......................... 69725.2.5 Beispiel Application V: Breite des Word-Fensters ändern .......................... 69725.2.6 Beispiel Application VI: Position des Word-Fensters ändern ..................... 698
25.3 Global-Objekt ....................................................................................................... 698
25.4 Documents-Auflistung und Document-Objekt ..................................................... 69925.4.1 Erstellen neuer Dokumente ..................................................................... 70125.4.2 Öffnen eines vorhandenen Dokuments .................................................... 70225.4.3 Speichern von Dokumenten ..................................................................... 70425.4.4 Schließen von Dokumenten ..................................................................... 70625.4.5 Drucken eines Dokuments ....................................................................... 70725.4.6 Überprüfen, ob ein Dokument geladen ist ............................................... 707
25.5 Selection-Objekt ................................................................................................... 70825.5.1 Die Type-Eigenschaft: Markierungstyp des Selection-Objekts ermitteln .... 71125.5.2 Die Font- und Shading-Eigenschaft: Die Formatierung des
Selection-Objekts manipulieren ............................................................... 71325.5.3 Die FormattedText-Eigenschaft ................................................................ 71425.5.4 Die Text-Eigenschaft ................................................................................ 71425.5.5 Die GoTo-Methode: Markierung bewegen ............................................... 71425.5.6 Copy-, Cut- und Paste-Methode: Die Zwischenablage-Methoden ............ 71525.5.7 Die Move-Methoden: Einfügemarke verschieben oder verändern ............ 71625.5.8 Select-Methode: Ein Element markieren .................................................. 71725.5.9 Die Insert-Methoden: Einfügen von Text in ein Dokument ....................... 71725.5.10 Die Find-Eigenschaft: Suchen und Ersetzen .............................................. 71825.5.11 Die Collapse-, Expand und Shrink-Methode: Markierung reduzieren
oder erweitern ......................................................................................... 72025.5.12 Ein Range-Objekt mit der aktuellen Markierung bilden ............................ 72025.5.13 Ein Zitat oder einen Textbereich mit Anführungszeichen versehen ........... 721
25.6 Range .................................................................................................................... 72125.6.1 Ein Range-Objekt festlegen ...................................................................... 72425.6.2 Den ersten Absatz als Bereich definieren .................................................. 72425.6.3 Bereich am Dokumentanfang erstellen ..................................................... 72525.6.4 Bereich am Ende des Dokuments erstellen ............................................... 72525.6.5 Eine Tabelle als Bereich ........................................................................... 72525.6.6 Ein Bereich ohne Absatzmarke ................................................................. 72625.6.7 Übersicht über Objekte mit Range-Konstrukten ....................................... 726
25 Die wichtigsten Word-Objekte 691
-
22 Inhalt
25.7 Bookmark-Objekt und Bookmarks-Auflistung ..................................................... 72925.7.1 Verwendungszweck von Textmarken ....................................................... 73025.7.2 Arten von Textmarken und ihr Verhalten ................................................. 73025.7.3 Beispiel Textmarke: Geschlossene Bereichstextmarke wie eine offene
Positionstextmarke nutzen ....................................................................... 73325.7.4 Beispiel Textmarken: Anzeige der Textmarken an-/ausschalten ................ 733
25.8 StoryRanges-Auflistung, StoryRange-Objekt und StoryType ............................... 73325.8.1 Übersicht über die Dokumentbereiche (StoryTypes) ................................ 73525.8.2 Informationen zu allen aktiven Dokumentenbereichen
(StoryRanges) auflisten ............................................................................ 736
25.9 Word-Tabellen ..................................................................................................... 73825.9.1 Anzeigen der Anzahl von Tabellen im Hauptteil des aktuellen Dokuments 74125.9.2 Befindet sich die Einfügemarke in einer Tabelle? ...................................... 74225.9.3 Nummer der aktuellen Tabelle ermitteln ................................................. 74225.9.4 Die Spaltennummer anzeigen .................................................................. 74325.9.5 Die Zeilennummer anzeigen .................................................................... 74325.9.6 Die Tabellen-Koordinate der Einfügemarke anzeigen ............................... 744
25.10 Template-Objekt .................................................................................................. 74525.10.1 Die einem Dokument zugeordnete Dokumentvorlage ermitteln .............. 74525.10.2 Wie Word den Speicherort für die dem aktuellen Dokument
zugeordnete Dokumentvorlage ermittelt ................................................. 74525.10.3 Den Arbeitsgruppenvorlagenordner festlegen .......................................... 748
25.11 Wörterbücher ....................................................................................................... 75025.11.1 Aktive benutzerdefinierte Wörterbücher und das Standard-Wörterbuch
anzeigen .................................................................................................. 75025.11.2 Integrierte Wörterbücher anzeigen .......................................................... 75125.11.3 Neues Benutzerwörterbuch anlegen ........................................................ 75325.11.4 Die Rechtschreibfehler aus Word-Dokumenten automatisch in
Benutzerwörterbücher übertragen ........................................................... 75525.11.5 Benutzerdefinierte Wörterbücher sprachspezifisch entfernen ................... 75725.11.6 Entfernen aller aktiven Benutzerwörterbücher aus der
Benutzerwörterbücherliste ...................................................................... 75825.11.7 Aktives Benutzerwörterbuch festlegen ..................................................... 758
25.12 Information-Objekt .............................................................................................. 75925.12.1 Aktuelle Seitenzahl ermitteln I ................................................................. 75925.12.2 Benutzerdefinierte Seitenzahl ermitteln ................................................... 75925.12.3 Seitenzahl ermitteln II ............................................................................. 76025.12.4 Abschnittszahl ermitteln .......................................................................... 76025.12.5 Befindet sich die Einfügemarke in einer Tabelle? ...................................... 76025.12.6 Tabellenspalte ermitteln .......................................................................... 76025.12.7 Tabellenzeile ermitteln ............................................................................ 76025.12.8 Zeichenspalte ermitteln ........................................................................... 76025.12.9 Zeilennummer ermitteln .......................................................................... 76125.12.10Abstand vom Seitenrand ermitteln .......................................................... 76125.12.11Seitenzahl der ersten Tabelle im Hauptteil des Dokuments ermitteln ....... 761
25.13 Wie findet man Word-Objekte, um eine Anforderung zu realisieren? ................. 761
-
Inhalt 23
Teil 5 – Praxis und Profi-Know-how
26.1 Allgemeines zu Dateien und Ordnern ................................................................... 765
26.2 Das Vorhandensein von Dateien überprüfen ........................................................ 76526.2.1 Die Existenz einer Datei mit einer VBA-Standardfunktion überprüfen ....... 76526.2.2 Die Existenz einer Datei mit einer Dateinummer und der Auswertung
eines Fehlercodes überprüfen .................................................................. 76626.2.3 Die Existenz einer Datei mit dem Objekt FileSystemObject überprüfen .... 76726.2.4 Test der FileExists-Routinen ..................................................................... 767
26.3 Das Vorhandensein von Ordnern überprüfen ....................................................... 76826.3.1 Die Existenz eines Ordners mit einer VBA-Standardfunktion überprüfen .. 76926.3.2 Die Existenz eines Ordners mit dem Objekt FileSystemObject überprüfen 76926.3.3 Test der FolderExists-Routinen ................................................................. 770
26.4 Dateiverarbeitung mit älteren VBA-Anweisungen und -Funktionen .................... 77026.4.1 Die »klassischen« Dateizugriffsarten ......................................................... 77026.4.2 Übersicht über die VBA-Funktionen und VBA-Anweisungen für die
»klassischen« Dateizugriffsarten ............................................................... 771
27.1 Windows-API und DLLs allgemein ....................................................................... 77327.1.1 Der API-Pferdefuß ................................................................................... 77527.1.2 Windows Application Programming Interface (Win32-API, Windows-API)
contra .NET ............................................................................................. 77627.1.3 Die Declare-Anweisung ........................................................................... 77627.1.4 C/C++-Argumentdatentypen .................................................................... 77727.1.5 Beispiel API: Windows-Ordner ermitteln .................................................. 778
27.2 Die Konstanten von Bibliotheken ermitteln ......................................................... 780
27.3 Verwendung von verschiedenen Word-Versionen ................................................ 78327.3.1 Benutzerdefinierte Kompilierungskonstanten (Compiler-Konstanten) ....... 78527.3.2 Microsoft-spezifische Kompilierungskonstanten ....................................... 78727.3.3 Beispiel API: Office-Version und –Pfad mit API-Funktion und
Registry-Zugriff ermitteln ......................................................................... 788
27.4 Das DocumentProperty-Objekt respektive die Dokumenteigenschaften ............. 79127.4.1 Auslesen und Setzen von integrierten Dokumenteigenschaften ................ 79127.4.2 Die Konstanten für die integrierten Dokumenteigenschaften .................... 79227.4.3 Beispiel BuiltInDocumentProperties: Die integrierten
Dokumenteigenschaften am Ende des aktiven Dokuments auflisten ......... 79427.4.4 Dokumenteigenschaften mit DSOFile.dll auslesen oder setzen ................. 79527.4.5 Auslesen und Setzen von benutzerdefinierten Dokumenteigenschaften .... 796
26 Arbeiten mit Dateien und Ordnern 765
27 Systemnahe Programmierung 773
-
24 Inhalt
28.1 Allgemeines zu Fehlern ........................................................................................ 797
28.2 Option Explicit ..................................................................................................... 797
28.3 Fehlerhandler On Error ... allgemein .................................................................... 79828.3.1 Code nach Fehler fortsetzen: On Error Resume Next ............................... 79928.3.2 Benutzerdefinierter Errorhandler: On Error GoTo ... Zeile ........................ 79928.3.3 Fehlerbehandlung abschalten: On Error GoTo 0 ...................................... 800
28.4 Err-Objekt: Fehlermeldung selbst erzeugen ......................................................... 800
28.5 Error-Funktion ...................................................................................................... 801
29.1 Alle in Word verfügbaren Schriften auflisten ....................................................... 803
29.2 Ganzzahlige Dezimalzahl in Binärzahl umwandeln ............................................... 806
29.3 Binärzahl in positive ganzzahlige Dezimalzahl umwandeln .................................. 808
29.4 Pause einfügen ..................................................................................................... 81029.4.1 Pause via Timer-Funktion ........................................................................ 81029.4.2 Pause via API-Funktion ............................................................................ 812
29.5 Den Modus des Visual Basic-Editors ermitteln .................................................... 813
30.1 Auflisten von registrierten (geladenen wie ungeladenen) Add-In-Dokumentvorlagen .................................................................................. 815
30.2 Überprüfen, ob ein Word-Add-In geladen ist ...................................................... 817
30.3 Laden einer Add-In-Dokumentvorlage ................................................................. 819
30.4 StartUp-Ordner für Add-Ins festlegen .................................................................. 819
31.1 COM-Add-Ins allgemein ..................................................................................... 821
31.2 COM-Add-Ins in Word ........................................................................................ 82131.2.1 Der Dialog »COM-Add-Ins« .................................................................... 82231.2.2 Die Registrierung der COM-Add-Ins ........................................................ 823
28 Fehlerbehandlung in VBA-Projekten 797
29 Hilfsroutinen für VBA-Projekte 803
30 Add-In-Dokumentvorlagen für Word 815
31 COM-Add-Ins 821
-
Inhalt 25
Teil 6 – Anhang
A.1 VBA-Schlüsselwörter: Kategoriale Übersicht ........................................................ 827
A.2 Liste der Symbole (Face-IDs) ................................................................................ 833
A.3 Startparameter von Word ..................................................................................... 854
A.4 Die VBA-Dateien .................................................................................................. 856
A.5 Neues für das Objektmodell von Word ................................................................ 859A.5.1 Neue Objekte in VBA für Word ............................................................... 859A.5.2 Neue Eigenschaften in VBA für Word ....................................................... 863A.5.3 Neue Methoden in VBA für Word ............................................................ 879
C.1 Unverbindliche Namenskonventionen für VBA ..................................................... 887C.1.1 [HN] – Ungarische Notation ..................................................................... 887C.1.2 [LRGA] – Leszynskis/Reddicks Richtlinien für Access 1.x, 2.x .................... 888C.1.3 [RVBA] – Reddicks VBA-Namens- und Kodierungskonventionen .............. 888C.1.4 [LNC] – Leszynskis Namenskonventionen für Access, für Visual Basic
und für die Anwendungsentwickler der Microsoft-Produkte ..................... 888C.1.5 [MCSNC] – Benennungsrichtlinien für VB ................................................. 889C.1.6 [ANETFR] Allgemeine .NET Framework Referenz: Richtlinien für
die Benennung ........................................................................................ 889
C.2 Sinn/Unsinn der Namenskonventionen ................................................................ 891
C.3 Allgemeine Empfehlungen bei Vergabe von Bezeichnern ..................................... 892C.3.1 Natürliche Sprache der Bezeichner ........................................................... 892C.3.2 Terminologie für Bezeichner ..................................................................... 893C.3.3 Wortarten für die Bezeichner ................................................................... 893C.3.4 Bezeichner mit Unterstrich oder Minuszeichen ......................................... 895C.3.5 Binnenversalie ......................................................................................... 895C.3.6 CamelCase- und PascalCase-Schreibweise ................................................ 895C.3.7 Verwendung Groß-/Kleinschreibung ........................................................ 896C.3.8 Maximale Anzahl der Zeichen für die Bezeichner ...................................... 896C.3.9 Abkürzungen und minimale Anzahl der Zeichen für die Bezeichner .......... 898C.3.10 Die Rolle der Projektdokumentation für die Bildung von Bezeichnern ...... 899
C.4 Die ungarische Notation ....................................................................................... 900
C.5 Benennung von Variablen ..................................................................................... 902C.5.1 Präfixe bei Variablen ................................................................................ 902C.5.2 Kürzel bei Variablen ................................................................................. 903C.5.3 Basisname bei Variablen ........................................................................... 904C.5.4 Suffixe und Qualifizierer bei Variablen ...................................................... 905
A Praktische Tabellen 827
B Kurzinfo zur Begleit-CD 885
C VBA-Namenskonventionen 887
-
26 Inhalt
C.6 Nachsilben (Suffixe, Qualifizierer) ........................................................................ 905
C.7 Benennung von Konstanten ................................