Sie sind auf Seite 1von 15

Inhaltsverzeichnis

Open XML-Dokumente & XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . berlegungen zur Arbeit mit XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eine letzte Bemerkung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

965 965 966 966 968

Teil F Anhang
A

.............................................................................

969 971 972 972 973 973 975 983 984 987 991 993 994 994 995

Namenskonventionen fr Word-VBA

........................................

Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Benutzerdefiniertes Dialogfeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Word-Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


B

Allgemeines zum Thema Feldfunktionen Startoptionen von Word

...................................

........................................................

Die Befehlszeilenargumente von Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


D

Bei Problemen Word zurcksetzen Ntzliche Links ins Internet Begleitdateien

........................................

.....................................................

.....................................................................

Die Beispieldateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zusatz-Software: Die Dateien im Anhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Verzeichnis zum Objektmodell Stichwortverzeichnis ber die Autoren

................................................

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015

16

Vorwort

In diesem Vorwort: Fr wen wurde das Buch geschrieben? Word-Versionen Wie ist das Buch aufgebaut? 18 19 20

17

Vorwort

Die Autoren freuen sich, Ihnen die dritte Auflage des Microsoft Press-Handbuchs zur Word-Programmierung vorzulegen. Wie im Vorwort der vorherigen Auflage erwhnt, konzentriert sich die Weiterentwicklung der Office-Anwendungen auf Bedrfnisse von Grofirmen. Office 2010 bietet beispielsweise die Kernanwendungen, Word, Excel und PowerPoint, als Web-Anwendungen an, die unter SharePoint oder als Teil von Office Live laufen. Ein herber Rckschlag fr dieses Konzept war der Gerichtsentscheid vom August 2009, der die von Microsoft eingesetzte Technologie fr Custom XML verbietet (in den Medien wurde darber ausfhrlich berichtet). Fr den europischen Markt bedeutet dies, dass ab Office 2010 die rosa XML-Elemente, (im Kapitel 21 vorgestellt) beim ffnen eines Office 2007-Dokuments (.docx bzw. .docm) ohne Warnung entfernt werden. In Word 2003 erstellte .doc-Dokumente werden hingegen nicht gendert. Mehr zu diesem Thema steht im Blog vom Gray Knowlton geschrieben (http://blogs.technet.com/b/gray_knowlton/ archive/2009/12/23/what-is-custom-xml-and-the-impact-of-the-i4i-judgment-on-word.aspx sowie http:// blogs.technet.com/b/gray_knowlton/archive/2010/01.aspx). Inhaltssteuerelemente (Kapitel 7) sind von der Entscheidung nicht betroffen und funktionieren weiterhin. Sie werden von Microsoft als Ersatz fr Custom XML vorgeschlagen. Nichtsdestotrotz gibt es Neues im Bereich der Word-Programmierung, die wir in dieser Auflage diskutieren: Eine neue Compiler-Konstante, um zu testen, ob der Code in Office 2010 luft. Eine neue Methode zum Application-Objekt, die dem Entwickler erlaubt, mehrere Handlungen in einen Eintrag der Rckgngig machen-Liste zu bndeln Die neuen Objektmodelle fr das Erstellen und Verwalten von SmartArt sowie Diagramme Neue Mglichkeiten fr die Erweiterung und Anpassung des Menbandes (Multifunktionsleiste bzw. Ribbon) Die neue Office-Backstage-Ansicht, die ebenfalls ber Menband-XML anpassbar ist Neue Erkenntnisse zur Handhabung von Inhaltssteuerelementen Einfhrung in das Erstellen von Word-Dokumenten als XML-Dateien

Fr wen wurde das Buch geschrieben?


Obwohl sich die Ausrichtung von Office und Word verndert, sind unsere Beweggrnde noch die gleichen. Unser gemeinsames Wissen zum Thema Word-Steuerung soll in schriftlicher Form festgehalten und weitergegeben werden, um allen zu helfen, die Word ihren Bedrfnissen entsprechend anpassen wollen. Die Mglichkeiten hierzu sind weiterhin vorhanden, es gilt nur, sie zu kennen und korrekt einzusetzen. Nach wie vor richtet sich dieses Buch an ein breites Spektrum von Lesern so breit wie der Funktionalittsumfang von Word. Der eine freut sich ber eine Super-Schreibmaschine, der kaufmnnische Sachbearbeiter interessiert sich fr Berichte, und der Redakteur will damit umfangreiche Handbcher verwalten. Anderswo in einer stillen Ecke sitzt der Autor, der darin das Werkzeug sieht, um seinen nchsten Bestseller zu verfassen. Daneben steht der professionelle Entwickler, der mit wenigen bis keinen Word-Kenntnissen diese Funktionalitt den Bedrfnissen einer Grofirma anpassen muss. Dass eine Anwendung alle diese Erwartungen erfllen kann, ist bemerkenswert. Zugegeben, einige Aufgaben sind mit den Bordmitteln von Microsoft Word leichter zu realisieren als andere. Die entsprechenden Werkzeuge sind jedoch vorhanden, und als Entwickler ist es unsere
18

Word-Versionen

Aufgabe, die Vorgnge fr den Benutzer zu entflechten, zu vereinfachen und so zu erklren, dass er effizienter ans Ziel gelangt, ohne sich mit den internen Einzelheiten von Word auseinandersetzen zu mssen. Aus diesen berlegungen heraus richtet sich das vorliegende Buch in erster Linie an folgende Anwendergruppen, die mit Word arbeiten und dessen Mglichkeiten nicht nur oberflchlich ausreizen mchten: Anwender, die Makros nicht nur mit dem integrierten Makrorekorder aufzeichnen, sondern selbststndig erstellen und bereits angeeignete Kenntnisse vertiefen mchten VBA-Programmierer, die professionelle Lsungen entwickeln und neben dem grundlegenden Wissen vertiefende Informationen erhalten mchten Alle Programmierer (inkl. Microsoft .NET), die aus einer eigenen Applikation heraus auf Word zugreifen und dieses Programm automatisieren mchten oder mssen Das Buch richtet sich jedoch nicht an die Anwender, die noch keine Erfahrung mit Word oder VBA (oder einer anderen Programmiersprache) haben. Denn das vorliegende Buch beinhaltet keine Anleitung zum Einstieg in VBA; fr diesen Bereich sind bereits verschiedene Bcher erschienen.

Word-Versionen
Da die Word-Programmierschnittstelle weiterhin auf das in Word 97 eingefhrte Objektmodell basiert, gelten die Kernaussagen fr alle seither verffentlichten Versionen. Diese Auflage behandelt aber primr die Ribbon-Versionen von Word 2007 sowie 2010. Alle Abbildungen wurden in Word 2010 unter Windows 7 erstellt. Im Allgemeinen hat das Entwicklerteam auf die Rckwrtskompatibilitt geachtet und, falls die Funktionalitt in einer lteren Version von Word vorhanden ist, sollen die Codebeispiele auch in Word 97, 2000, 2002 sowie 2003 laufen. Alle Codebeispiele wurden in Word 2010 getestet, falls notwendig korrigiert, aber weitgehend fr gut befunden und belassen. Um gezielt Word 2010-spezifische Informationen zu finden, halten Sie bitte nach dem nebenstehend dargestellten Symbol Ausschau. Die C#-Beispiele wurden in das Visual Studio 2008-Format konvertiert und funktionieren, wie der VBA-Code, weiterhin. Die Referenzen zeigen auf die PIAs fr Word 2010. Falls Sie mit 2007 oder frher arbeiten, werden Sie die Referenzen anpassen mssen (siehe Kapitel 9). C#-Entwickler, die bereits Visual Studio 2010 mit .NET Framework 4.0 benutzen, bentigen diese Beispiele nicht unbedingt, da .NET 4.0 neu optionale und benannte Parameter untersttzt. Wir weisen jedoch darauf hin, dass solcher Code langsamer laufen knnte. Die Zukunft von VBA Die Rckwrtskompatibilitt von VBA ist fr die nchste Version von Word (Office 15) weiterhin gewhrleistet. Somit wird das aus dem vorliegenden Buch Erlernte auch fr diese Version seine Gltigkeit haben. Aufgrund der groen Zahl von VBA-Lsungen, die weltweit in Firmen eingesetzt werden, ist nicht anzunehmen, dass die Untersttzung von VBA in nchster Zukunft abgeschafft wird. Stattdessen werden die Forderungen der .NET-Entwickler vorlufig auf anderen Wegen zufriedengestellt.

19

Vorwort

VSTO Auffllig ist das Bemhen von Microsoft, die Fernsteuerung von Word (sowie den brigen OfficeAnwendungen) fr die meisten Entwickler berflssig zu machen. Dank der mit Office 2007 eingefhrten OpenXML-Dateiformate ist es nun mglich, Dokumente zu erstellen, zu bearbeiten und zu lesen, ohne Word zu starten. Ja, Word muss nicht einmal installiert sein. Nur der Entwickler, der interaktiv mit dem Benutzer arbeitet, muss sich um die Fernsteuerung kmmern. Diese Aufgabe wird immer mehr dem Werkzeug VSTO (Visual Studio Tools for Office) zugeteilt, um den Umgang mit den COM-Anwendungen fr den .NET-Entwickler zu entschrfen. Aus diesem Grund behlt VSTO nach wie vor seinen Platz in dieser Auflage.

Wie ist das Buch aufgebaut?


Dieses Buch besteht aus fnf Teilen, von denen jeder einem bestimmten Schwerpunkt gewidmet ist. Die einzelnen Teile bauen zwar aufeinander auf, stehen aber in keiner direkten Abhngigkeit zueinander. Somit ist gewhrleistet, dass nicht alle Seiten gelesen werden mssen, um sich in ein spezifisches Thema zu vertiefen. Der Inhalt der einzelnen Teile kurz zusammengefasst:
Teil A

Eine Einfhrung in die Welt der Makros und VBA. Er vermittelt das grundlegende Wissen zu den Mglichkeiten von Makros und stellt die Werkzeuge der eigentlichen Programmierumgebung den Visual Basic-Editor vor. Eine Zusammenfassung zu den VBA-Grundlagen, erste allgemeine Beispiele, eine Diskussion des Office Sicherheitskonzepts und das Einbinden von Windows-API runden diesen Teil ab. Gilt als Nachschlagewerk zum uerst komplexen Objektmodell von Word. Es werden jeweils die wichtigsten Eigenschaften und Methoden zu den einzelnen Objekten detailliert aufgezeigt. Anhand von passenden Beispielen werden diese dem Leser nher gebracht. Dieser Teil enthlt auch Beispiele in C#, welche die Schnittstellen zu den Word-APIs veranschaulichen. Anhand dieser Kenntnisse sollte sich der .NET-Programmierer Zugang zum gesamten Objektmodell verschaffen knnen. Die neuen Funktionalitten im Objektmodell fr SmartArt werden in diesem Teil vorgestellt. Zeigt die Grundlagen des Zusammenspiels mit anderen Applikationen auf. Dies ist unabhngig davon, ob Word aus anderen Applikationen heraus gesteuert wird oder ob Word selbst andere Applikationen steuert bzw. ob eingebundene Objekte in Word gesteuert werden. In diesem Teil befinden sich C#-Beispiele fr die Automatisierung eingebetteter Objekte. Es werden auch die Mglichkeiten von VSTO 2008 und VSTO 2010 vorgestellt. Eine Zusammenfassung, die aufzeigt, auf welch unterschiedliche Arten die Benutzerschnittstelle von Word angepasst werden kann. Dazu gehrt unter anderem die Verwendung der internen Dialogfelder, das Erstellen von benutzerdefinierten Dialogfeldern, das Anpassen des Menbands (in Word 2007 Multifunktionsleiste genannt) und Tastaturkombinationen. Widmet sich dem Thema XML und zeigt dessen Einsatzgebiet und Mglichkeiten im Zusammenhang mit Word auf. Zu dieser Rubrik gehrt auch eine bersicht zum Erstellen von Dokumenten im OpenXML-Dateiformat.

Teil B

Teil C

Teil D

Teil E

20

Wie ist das Buch aufgebaut?

Stichwortverzeichnisse
Am Ende des Buchs befinden sich zwei Stichwortverzeichnisse mit unterschiedlichen Schwerpunkten: Das eigentliche Stichwortverzeichnis fasst den Inhalt nach einzelnen Themen und Inhalten zusammen. Es bietet so einen schnellen Zugriff auf die inhaltlichen Stellen im Text. Das Verzeichnis zum Objektmodell fasst alle Stellen im Dokument zusammen, die einen direkten Bezug auf ein Objekt sowie dessen Eigenschaften und Methoden haben. Somit ist ein schneller Zugriff auf die einzelnen Objekte innerhalb des Textes gewhrleistet.

Die Begleitdateien zum Buch


Dem Buch ist eine CD-ROM beigelegt. Diese enthlt unter anderem alle Kapitel im PDF-Format. Damit steht das Buch unterwegs als elektronisches Nachschlagewerk zur Verfgung. Alle aufgefhrten Programmsequenzen werden ebenfalls in Form von Beispieldateien mitgeliefert. Die Dateinamen werden jeweils am Ende eines Abschnitts oder Kapitels erwhnt. Die entsprechenden Dateien befinden sich auf der CD-ROM im Ordner \Beispiele\KapXX (wobei XX fr die Nummer des entsprechenden Kapitels steht). Wenn Sie dieses Buch ohne Begleitmedium erworben haben (z.B. als E-Book), knnen Sie die fr das Durcharbeiten notwendigen Dateien aus dem Internet herunterladen. Rufen Sie dazu die folgende Adresse auf und geben Sie wie auf der Internetseite beschrieben die Teilnummer der ISBN zu diesem Buch ein: http://www.microsoft-press.de/support.asp?cnt=support Neben diesen Beispielen sind weitere wertvolle Informationen auf dem Datentrger abgespeichert. Einen entsprechenden Hinweis finden Sie in den jeweiligen Kapiteln. Die Dateien befinden sich auf der CD-ROM im Ordner \Beilagen. Damit in der dritten Auflage Platz fr die neuen Themen geschafft werden konnte, mussten einige Seiten entfernt werden. In erster Linie betraf dies die praxisbezogenen Lsungsbeispiele, die in der ersten Auflage im Teil V ausgeliefert wurden. Damit diese ntzlichen Informationen weiterhin zur Verfgung stehen, sind die entsprechenden Seiten in elektronischer Form auf der Buch-CD als Bonusteil enthalten im Ordner \Bonus und \Beilagen. Im Buch wird an verschiedenen Stellen auf Informationsquellen im Internet verwiesen. Die entsprechende Internetadresse (URL) ist jeweils direkt im Text mit angegeben. Damit diese zum Teil recht langen und kryptischen Zeichenfolgen nicht manuell abgetippt werden mssen, sind diese Adressen in Form von einzelnen .url-Dateien innerhalb der Begleitdateien vorhanden. Sie finden diese Dateien jeweils im zugehrigen Kapitelordner \Beispiele\KapXX\Internet. Weitere Informationen zu den Begleitdateien zum Buch sind im Anhang zusammengefasst. Das Autorenteam, im September 2010.

21

Teil A Grundlagen der Arbeit mit VBA


In diesem Teil:
Kapitel 1 Kapitel 2 Kapitel 3

Word-Makros VBA-Grundlagen Windows-APIs in VBA nutzen

25 55 117

23

Kapitel 1

Word-Makros

In diesem Kapitel: Aller Anfang ist schwer Programmierhilfen Makros in die Benutzerschnittstelle einbinden und verwalten Makrosicherheit Zusammenfassung 26 27 41 45 54

25

Grundlagen der Arbeit mit VBA

Kapitel 1

Word-Makros

Aller Anfang ist schwer


Jede Aufgabe muss irgendwo begonnen werden. Dies ist bei der Automatisierung von Word nicht anders. Ein einfacher Einstiegspunkt ist schwer zu erkennen, denn das Objektmodell von Word ist gro und mchtig. Das Diagramm in Abbildung 1.1 zeigt lediglich die oberste Ebene des Objektmodells fr Word 2003 an. Das Word 2007-Objektmodell ist noch umfangreicher und auf der Microsoft-Website unter http://msdn2.microsoft.com/en-us/library/bb288731.aspx einzusehen. Die nderungen, die am Objektmodell von Word 2010 vorgenommen wurden, sind auf der Seite http:// msdn.microsoft.com/en-us/library/ee836186(office.14).aspx zusammengefasst worden.
Abbildg. 1.1

Die oberste Ebene des Objektmodells (Word 2003)

26

Programmierhilfen

Programmierhilfen
Wie kann also auf eine einfache Art der Einstiegspunkt zur Lsung des Problems gefunden werden? Die schnellste Hilfe erhlt der Entwickler durch die Verwendung des Makrorekorders. Mit etwas Glck liefert dieser die zu einer Aufgabe bentigten Objekte, Eigenschaften und Methoden. Die zugehrigen Details werden in einem zweiten Schritt in der Hilfe nachgeschlagen (siehe dazu den Abschnitt Die Objektmodell-Hilfe eine verborgene Schatzkammer ab Seite 38). Danach wird der bereinigte Code in das effektive Makro oder in die Prozedur eingebaut.

Den Makrorekorder einsetzen


Der Makrorekorder kann im Menband via Entwicklertools/Code/Makro aufzeichnen oder mittels Doppelklick auf das entsprechende Symbol in der Statusleiste (Abbildung 1.2) gestartet werden. Damit die Registerkarte Entwicklertools im Menband sichtbar ist, muss dieses via Datei/Optionen/ Menband anpassen eingeblendet werden.
Abbildg. 1.2

Startsymbol fr den Makrorekorder in der Statusleiste

In dem nun eingeblendeten Dialogfeld Makro aufzeichnen (Abbildung 1.3) vergeben Sie fr das Makro einen aussagekrftigen Namen (vorgeschlagen wird Makron, wobei n eine fortlaufende Nummer darstellt). Zustzlich sollten Sie eine hilfreiche Beschreibung eintragen. Zudem besteht die Mglichkeit, das neue Makro einer Schaltflche in der Symbolleiste fr den Schnellzugriff (Word 2007 und 2010), im Menband (Word 2010) oder einer Tastenkombination in der Benutzerschnittstelle zuzuweisen. Wichtig ist, den Kontext aus der Dropdownliste Makro speichern festzulegen. Mit dieser Option wird der eigentliche Speicherort des Makros festgelegt. Word kann Makros der ganzen Umgebung zugnglich machen oder sie nur in bestimmten Dokumenten oder Vorlagen zur Verfgung stellen. Detaillierte Informationen zu diesem Thema knnen Sie in Kapitel 14 nachschlagen. HINWEIS Wenn Sie einen Makronamen eingeben, der im Modul NewMacros bereits vorhanden ist, fragt Word, ob Sie den bestehenden berschreiben mchten, was Sie auch tun drfen. Lehnen Sie ab, erhalten Sie Gelegenheit, einen anderen Makronamen einzugeben.

27

Grundlagen der Arbeit mit VBA

Wir sind uns bewusst, dass bei dieser Abbildung das Objektmodell einer sehr alten Programmversion dargestellt wird. Es ist jedoch die einzige uns bekannte Grafik, welche die Objekte auf einen Blick darstellt. Fr die nachfolgenden Programmversionen von Word wrde die Grafik entsprechend komplexer ausfallen, da das Objektmodell jeweils um die Neuerungen im Programm erweitert wurde. Eine bersicht zum aktuellen Objektmodell finden sie hier http://office.microsoft.com/ client/helpcategory.aspx?CategoryID=CH806001069990&lcid=1033&NS=WINWORD%2EDEV&Version=14.

Kapitel 1

Word-Makros

Abbildg. 1.3

Neben dem Makronamen ist es wichtig, den Speicherort fr das Makro festzulegen

Nach Besttigung des Dialogfelds Makro aufzeichnen (falls Sie weder Symbolleiste noch Tastatur angeklickt haben), kehren Sie ins Dokument zurck. In der Statusleiste wird jetzt das Symbol Aufzeichnung beenden eingeblendet. Von nun an werden fast alle in Word ausgefhrten Interaktionen in eine Prozedur im Codemodul NewMacros aufgezeichnet. Dabei sind folgende Punkte zu beachten: Das Anzeigen eines Dialogfelds wird nicht aufgezeichnet, sondern das Endresultat der darin vorgenommenen Einstellungen. (Beispiel: Sie blenden das Dialogfeld Datei ffnen ein und whlen ein Dokument. Der Makrorekorder zeichnet das ffnen dieses Dokuments auf, nicht aber das Einblenden des Dialogfelds.) Wie Sie ein Dialogfeld einblenden lassen, wird in Kapitel 15 vorgestellt. Der Makrorekorder erkennt nur jene Aktionen des Anwenders, die innerhalb der Word-Anwendungsumgebung ausgefhrt werden. Fgen Sie beispielsweise ein Excel-Tabellenblatt in das Word-Dokument ein, wird das Einfgen wohl aufgezeichnet. Alle im Tabellenblatt ausgefhrten Modifikationen werden nicht aufgezeichnet, da sie in der Excel-Umgebung vorgenommen werden. Um ber den Umgang mit eingefgten Objekten zu lesen, schlagen Sie bitte in Kapitel 12 nach. Ebenfalls nicht aufgezeichnet wird der Wechsel in ein anderes Anwendungsfenster. Ein Wechsel zwischen Word-Dokumentfenstern wird aufgezeichnet, sofern dieser ber die Registerkarte Ansicht oder die Windows-Taskleiste erfolgt. Nicht erkannt werden Wechsel, die mit (Alt)+() vorgenommen werden. Die Automatisierung anderer Office-Anwendungen wird in Kapitel 11 diskutiert. Das Einfgen, Markieren und Formatieren von Grafiken wird aufgezeichnet. Es ist jedoch nicht mglich, per Mausklick zurck ins Dokument zu gelangen. Um dies zu tun, drcken Sie die (Esc)-Taste. Um eine Markierung oder Handlung vorzunehmen, die mit der Tastatur oder einem Menbefehl nicht ausfhrbar ist, knnen Sie den Makrorekorder vorbergehend anhalten, indem Sie in der Registerkarte Entwicklertools auf die Schaltflche Aufzeichnung anhalten klicken. Klicken Sie nochmals auf die Schaltflche, um mit der Aufzeichnung fortzufahren.

28

Programmierhilfen

HINWEIS Bei der Einfhrung neuer Funktionen innerhalb von Word muss zustzlich die Funktionalitt des Makrorekorders angepasst werden. Je nach Zeitpunkt einer nderung und vorhandenen Ressourcen wird die neue Funktionalitt im Makrorekorder nicht aufgenommen. Als Folge werden verschiedene in Word 2007 bzw. in Word 2010 enthaltene Funktionalitten nicht aufgezeichnet. Im Objektmodell sind diese Neuerungen jedoch vorhanden und knnen in der Hilfe nachgeschlagen werden (mehr dazu im Abschnitt Die Objektmodell-Hilfe eine verborgene Schatzkammer ab Seite 38).
Eine Ausnahme besteht jedoch, in der ersten Ausgabe von Word 2007. Diese Version enthielt kein Objektmodell fr die neuen Grafik- und Diagrammschnittstellen. Diese Objekte konnten lediglich manuell vom Benutzer oder mittels der Open XML-Technologie erstellt werden. Inzwischen wurde in diesem Bereich das Objektmodell in einem Service Pack fr Word 2007 ergnzt und ist in Word 2010 vollstndig vorhanden.

Mit der Schaltflche Aufzeichnung beenden erfolgt genau dies. Wechseln Sie zum Visual Basic-Editor ((Alt)+(F11)), um das Ergebnis im Modul NewMacros anzuschauen und anzupassen.

Den aufgezeichneten Code bearbeiten


Der Makrorekorder hat eine lange Geschichte. Bis einschlielich Word-Version 95 (7.0) zeichnete er die Benutzerhandlungen treu in der Programmiersprache WordBasic auf. Das Resultat konnte ohne groe nderung eingesetzt werden. Seit Word 97 ist die Word-Programmiersprache VBA (Visual Basic for Applications). Diese ist auf einer objektorientierten Basis konzipiert. Dies bedeutet, dass der Code die Objekte in der Anwendung direkt ansprechen soll, statt die einzelnen Benutzerhandlungen eingabegetreu wiederzugeben. Dadurch kommt der Makrorekorder in eine Zwickmhle, weil er nur wahrnimmt, was der Benutzer whrend der Aufzeichnung ausfhrt. Die einzelnen Interaktionen knnen nicht abstrahiert und auf das Objektmodell im weiteren Sinne bertragen werden. Das Ergebnis einer Aufzeichnung ist also nur bedingt einsetzbar; oft muss der Code mehr oder minder nachbearbeitet werden. Zudem ist ein aufgezeichnetes Makro schwierig zu verwalten, da direkt aus dem Code heraus kaum zu entnehmen ist, was es bezwecken soll. Leider werden die Programmzeilen vom Hersteller selten ausreichend kommentiert. Wird ein solches Makro innerhalb einer Firma weiter vererbt, ist es schwer bis unmglich, dieses zu einem spteren Zeitpunkt vernderten Bedrfnissen oder nderungen in der Word-Umgebung anzupassen. Ein seit lngerer Zeit eingesetztes Werkzeug fllt dann weg, oder es mssen viele Stunden investiert werden, um das Makro wieder lauffhig zu machen. Nehmen wir als extremes Beispiel die aufgezeichnete Prozedur in Listing 1.1. Die Einfgemarke befand sich zu Beginn der Aufzeichnung in der ersten Zelle einer leeren Tabelle. Die Markierung wurde nach rechts ber die ganze Zeile (fnf Zellen) erweitert und diese fett formatiert. Danach wurden Spaltenberschriften in jede Zelle dieser Zeile eingegeben. Am Schluss steht die Einfgemarke in der ersten Spalte der zweiten Zeile (Abbildung 1.4). Damit das aufgezeichnete Makro wunschgem arbeitet, muss der Anwender die Einfgemarke vor dem Ausfhren unbedingt in der ersten Zelle einer Tabelle positionieren. Wird die Einfgemarke auerhalb einer Tabelle platziert, tritt ein Laufzeitfehler auf. Htten Sie diesen Ablauf und die Bedingung beim Lesen der Programmzeilen wirklich erraten? Vielleicht, aber es htte wohl einiges an Kopfzerbrechen bentigt. In Listing 1.1 sind Zweck und Ort der Handlung schwer erkennbar.

29

Grundlagen der Arbeit mit VBA

Kapitel 1

Word-Makros

Abbildg. 1.4

So soll die Tabelle immer aussehen, was durch das aufgezeichnete Makro nicht gewhrleistet ist

Listing 1.1

Die mit dem Makrorekorder aufgezeichnete Prozedur Sub TabelleVorbereiten() ' ' TabelleVorbereiten Makro ' Makro aufgezeichnet am 02.07.2010 von Cindy Meister ' Selection.EndKey Unit:=wdLine, Extend:=wdExtend Selection.EndKey Unit:=wdLine, Extend:=wdExtend Selection.EndKey Unit:=wdLine, Extend:=wdExtend Selection.EndKey Unit:=wdLine, Extend:=wdExtend Selection.EndKey Unit:=wdLine, Extend:=wdExtend Selection.EndKey Unit:=wdLine, Extend:=wdExtend Selection.Font.Bold = wdToggle Selection.MoveLeft Unit:=wdCharacter, Count:=1 Selection.TypeText Text:="Spalte 1" Selection.MoveRight Unit:=wdCell Selection.TypeText Text:="Spalte 2" Selection.MoveRight Unit:=wdCell Selection.TypeText Text:="Spalte 3" Selection.MoveRight Unit:=wdCell Selection.TypeText Text:="Spalte 4" Selection.MoveRight Unit:=wdCell Selection.TypeText Text:="Spalte 5" Selection.MoveRight Unit:=wdCell End Sub

HINWEIS Die Dokumentation zum Word-Objektmodell ist VBA-orientiert, weil VBA die Office-Programmiersprache ist. Zudem spiegelt das Objektmodell eher die Benutzerschnittstelle und Arbeitsweise von Word wider und kann daher etwas fremd vorkommen. Im Abschnitt Die Objektmodell-Hilfe eine verborgene Schatzkammer ab Seite 38 werden wir etwas nher darauf eingehen. Aber genau weil dem so ist, kann auch Ihnen der Makrorekorder behilflich sein. Sehen Sie sich das Listing 1.2 an. Diese Prozedur erfordert lediglich, dass sich die Einfgemarke innerhalb der Tabelle befindet und erzeugt keine Fehlermeldung, falls dies nicht zutrifft. Sie formatiert die erste Zeile dieser Tabelle fett, beschriftet die Spalten und positioniert die Einfgemarke am Schluss in die erste Spalte der zweiten Zeile. Es fllt sofort auf, dass diese Prozedur deutlich krzer und viel aussagekrftiger ist (sofern der Leser ber einige Englischkenntnisse verfgt). In einem ersten Schritt wird kontrolliert, ob sich die Einfgemarke innerhalb einer Tabelle befindet. Ist das der Fall (egal wo in der Tabelle), werden je eine Objektvariable auf die aktuelle Tabelle und auf die erste Zeile gesetzt. Diese Zeile wird fett formatiert. Danach schleift die Prozedur durch alle Zellen dieser Zeile und fgt den Text Spalte plus deren Zellenindex in jede Zelle ein. Abschlieend wird die erste Zelle in der zweiten Zeile markiert. Diese Markierung wird wieder aufgehoben, sodass der Benutzer sofort mit der Texteingabe weiterarbeiten kann.

30