Mary schreibt ein Makro, das eine Tabelle aufteilt. Die Arbeit an der aktiven Tabelle ist kein großes Problem, aber sie möchte die erste Zeile der aktiven Tabelle kopieren, dann die Tabelle teilen und schließlich die kopierte Zeile in die erste Zeile der neuen Tabelle einfügen, die durch die Aufteilung erstellt wurde. Um dies richtig zu machen, möchte sie die Indexnummern ermitteln, die Word verwendet, um auf die beiden Tabellen in der Tabellenauflistung zu verweisen. Mary möchte wissen, wie sie die Indexnummer für die aktive Tabelle (vor dem Teilen) ermitteln kann, damit sie diese Nummer einfach erhöhen kann, um die neue Indexnummer für die nach dem Teilen erstellte Tabelle zu ermitteln.

Das Objektmodell von Word basiert auf der Organisation einzelner Objekte in Sammlungen, auf die programmgesteuert zugegriffen werden kann. Dies gilt nicht nur für Tabellen, sondern auch für Absätze, Grafiken und eine Vielzahl anderer Objekte.

Mit der Count-Eigenschaft können Sie die Anzahl der Objekte in einer Sammlung leicht ermitteln. Sie können beispielsweise Folgendes verwenden, um festzustellen, wie viele Tabellen sich in einem Dokument befinden, da die Anzahl der Objekte in der Tabellenauflistung zurückgegeben wird:

iNumTables = ActiveDocument.Tables.Count

Es ist etwas schwieriger herauszufinden, welche Tabelle die aktuelle ist, aber es kann getan werden. Am einfachsten ist es, der aktuellen Tabelle ein Lesezeichen hinzuzufügen und dann alle Tabellen im Dokument zu untersuchen, um festzustellen, welche Tabelle dieses Lesezeichen enthält. Sobald Sie das herausgefunden haben, wissen Sie, welche Tabelle die aktuelle ist, und Sie können das Lesezeichen löschen. Das folgende Makro implementiert diese Schritte:

Sub FindTableNumber()

Dim J As Integer     Dim iTableNum As Integer     Dim oTbl As Table

Selection.Bookmarks.Add ("TempBM")

For J = 1 To ActiveDocument.Tables.Count         Set oTbl = ActiveDocument.Tables(J)

oTbl.Select         If Selection.Bookmarks.Exists("TempBM") Then             iTableNum = J             Exit For         End If     Next J     ActiveDocument.Bookmarks("TempBM").Select     ActiveDocument.Bookmarks("TempBM").Delete     MsgBox "The current table is table " & iTableNum End Sub

Um das Makro zu verwenden, stellen Sie einfach sicher, dass sich die Einfügemarke innerhalb der gewünschten Tabelle befindet. Das Makro kann leicht an einen größeren Kontext angepasst werden, z. B. an einen Kontext, in dem die Tabelle aufgeteilt und auf andere Weise bearbeitet wird.

Es gibt jedoch eine andere Möglichkeit, die zugrunde liegende Aktion, die Mary ausführen möchte, programmgesteuert zu handhaben – eine Methode, bei der keine Indexnummern für die Tabellenauflistung verwendet werden müssen. Sie können die erste Zeile der Tabelle kopieren und dann die Tabelle mit einem Befehl ähnlich dem folgenden aufteilen:

Selection.Tables(1).Split(5)

Dieser Befehl teilt die Tabelle in Zeile 5 auf. Sie können den Aufteilungspunkt leicht ändern, indem Sie die Zeile ändern, an der er geteilt wird. Anschließend können Sie die Einfügemarke mit dem folgenden Befehl an den Anfang der nächsten Tabelle (der neu erstellten) verschieben:

Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext

Dieser Befehl springt zum Anfang der nächsten Tabelle, und Sie können dann die zuvor kopierte Kopfzeile einfügen.

Wenn Sie an einer ausführlicheren Diskussion zum programmgesteuerten Umgang mit Tabellen interessiert sind, finden Sie hier einen hervorragenden Artikel:

http://msdn2.microsoft.com/en-us/library/aa537149(office.11).aspx

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.

(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (505) gilt für Microsoft Word 97, 2000, 2002 und 2003. Sie finden eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Word (Word 2007) und später) hier: