147

Auf einen Blick - bücher.de4.3.9 1990 – Word 5.5 für DOS und Word 1.0 für Windows ..... 153 4.3.10 1991 – Word für Windows 1.1 und 2.0 sowie Word 5.0 für Mac .....155 4.3.11

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • 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 ................................