Word: Tabellen mit VBA programmieren

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Tabellen sind ein wichtiges Element zur Strukturierung in Dokumenten – so auch in Microsoft Word. Tabellen fügt man dabei normalerweise über die Benutzeroberfläche ein und füllt diese manuell mit den gewünschten Daten. Manchmal jedoch sollen Dokumente und damit auch Tabellen automatisiert erstellt werden – beispielsweise, wenn man Daten aus Anwendungen wie Access oder Excel in einem Word-Dokument weiterverarbeiten möchte. Damit lassen sich beispielsweise gut die Rechnungspositionen in einer Rechnung oder auch Katalogdaten abbilden. In einer Lösung in einem weiteren Artikel nutzen wir eine Tabelle, um die einzelnen Absätze verschiedener Übersetzungen eines Textes anzuzeigen. Im vorliegenden Artikel zeigen wir, wie wir einem Word-Dokument eine Tabelle hinzufügen und diese mit den gewünschten Zeilen und Spalten versehen können – und welche Techniken noch sinnvoll sein können, wenn Du Tabellen programmierst.

Hinzfügen einer Word-Tabelle über die Benutzeroberfläche

Bild 1: Hinzfügen einer Word-Tabelle über die Benutzeroberfläche

Word-Tabellen per Benutzeroberfläche

Üblicherweise fügt man Tabellen in Word über den Ribboneintrag Einfügen|Tabellen|Tabelle ein, wo man im oberen Bereich direkt die gewünschte Anzahl von Zeilen und Spalten auswählen kann (siehe Bild 1).

Hinzfügen einer Word-Tabelle über die Benutzeroberfläche

Bild 1: Hinzfügen einer Word-Tabelle über die Benutzeroberfläche

Unter VBA ist dies auch gar nicht viel komplizierter – wie es genau geht, schauen wir uns in den folgenden Abschnitten an.

Vorbereitung

Für die Beispiele dieses Artikels brauchen eine .dotm-Datei, also ein Word-Dokument mit VBA-Modul.

In den meisten Beispielen dieses Artikels gehen wir davon aus, dass wir die Beispielaufrufe und Prozeduren im VBA-Projekt zum geöffneten Word-Dokument ausführen.

Dabei verwenden wir zum Referenzieren des Word-Dokuments beispielsweise ThisDocument. Wenn Du die Beispiele von einer anderen Anwendung aus ausprobieren möchtest, musst Du noch einen Verweis auf die Word-Instanz und das Dokument setzen – weitere Informationen dazu findest Du im Artikel Word mit VBA programmieren (www.access-im-unternehmen.de/348).

Anlegen einer einfachen Tabelle

Zum Anlegen einer Tabelle beispielsweise mit drei mal drei Feldern benötigen wir nur einen Einzeiler, den wir im Direktbereich des VBA-Editors absetzen können:

ThisDocument.Tables.Add ThisDocument.Range, 3, 3

Dies legt bereits die Tabelle aus Bild 2 an.

Neue Tabelle mit drei Zeilen und drei Spalten

Bild 2: Neue Tabelle mit drei Zeilen und drei Spalten

Wenn die Gitternetzlinien bei Dir nicht so erscheinen wie in der Abbildung, musst Du diese noch aktivieren.

Dazu wechselst Du im Ribbon zum Bereich Layout, während die Tabelle aktiviert ist, und aktivierst in der Gruppe Tabelle die Umschaltfläche Gitternetzlinien anzeigen (siehe Bild 3).

Einblenden der Gitternetzlinien

Bild 3: Einblenden der Gitternetzlinien

Wir fügen also eine Tabelle zu einem Dokument hinzu, indem wir die Add-Methode der Tables-Auflistung des Dokuments nutzen. Hier haben wir direkt die drei wichtigsten Parameter beim Erstellen einer neuen Tabelle verwendet:

  • Range: Bereich, in dem die neue Tabelle angelegt wird. In diesem Fall haben wir mit ThisDocument.Range den kompletten Bereich des Dokuments genutzt. Später zeigen wir, wie Du eine Tabelle an spezifischeren Orten anlegen kannst.
  • NumRows: Anzahl der Zeilen der Tabelle
  • NumColumns: Anzahl der Spalten der Tabelle

Es gibt noch zwei weitere Parameter:

  • DefaultTableBehavior: Legt fest, ob Word die Größe von Zellen in Tabellen automatisch an den Inhalt der Zellen anpasst (wdWord9TableBehavior) oder nicht (wdWord8TableBehavior, Standardeinstellung).
  • AutoFitBehavior: Wenn die vorherige Option auf wdWord8TableBehavior eingestellt wurde, können wir durch Einstellen von AutoFitBehavior auf den Wert wdAutoFitContent dafür sorgen, dass die Tabellenfelder sich automatisch an den enthaltenen Text anpassen.

Tabelle beim Anlegen referenzieren

Meist wollen wir nicht nur eine neue Tabelle anlegen, sondern noch weitere Schritte durchführen – beispielsweise, um die Tabelle zu formatieren oder diese mit Daten zu füllen.

Um eine Tabelle zu erstellen und diese direkt zu referenzieren, können wir die folgende Prozedur verwenden:

Public Sub EinfacheTabelle()
     Dim objDocument As Document
     Dim objTable As Table
     Set objDocument = ThisDocument
     Set objTable = ThisDocument.Tables.Add(Range, 3, 3)
End Sub

Vorhandene Tabelle referenzieren

Haben wir eine Tabelle erstellt, können wir diese über die Tables-Auflistung referenzieren:

Public Sub TabelleReferenzieren()
     Dim objTable As Table
     Set objTable = ThisDocument.Tables(1)
End Sub

Hier referenzieren wir die erste Tabelle des Dokuments. Wenn Du bereits mehrere Tabellen hinzugefügt hast, referenzieren wir diese über den entsprechenden Index.

 

Schreibe einen Kommentar