Arbeiten mit Tabellen

Dieses Thema enthält Visual Basic-Beispiele im Zusammenhang mit den in den folgenden Abschnitten identifizierten Aufgaben.

Erstellen einer Tabelle, Einfügen von Text und Zuweisen einer Formatierung

Im folgenden Beispiel wird am Anfang des aktiven Dokuments eine Tabelle mit 4 Spalten und 3 Zeilen eingefügt. Die For Each... Die nächste Struktur wird verwendet, um jede Zelle in der Tabelle schrittweise zu durchlaufen. Innerhalb der Struktur For Each...Next wird die InsertAfter -Methode des Range -Objekts zum Hinzufügen von Text zu den Tabellenzellen (Zelle 1, Zelle 2 usw.) verwendet.

Sub CreateNewTable() 
 Dim docActive As Document 
 Dim tblNew As Table 
 Dim celTable As Cell 
 Dim intCount As Integer 
 
 Set docActive = ActiveDocument 
 Set tblNew = docActive.Tables.Add( _ 
 Range:=docActive.Range(Start:=0, End:=0), NumRows:=3, _ 
 NumColumns:=4) 
 intCount = 1 
 
 For Each celTable In tblNew.Range.Cells 
  celTable.Range.InsertAfter "Cell " & intCount 
  intCount = intCount + 1 
 Next celTable 
 
 tblNew.AutoFormat Format:=wdTableFormatColorful2, _ 
 ApplyBorders:=True, ApplyFont:=True, ApplyColor:=True 
End Sub

Einfügen von Text in eine Tabellenzelle

The following example inserts text into the first cell of the first table in the active document. Die Cell-Methode gibt ein einzelnes Cell-Objekt zurück. The Range property returns a Range object. The Delete method is used to delete the existing text and the InsertAfter method inserts the "Cell 1,1" text.

Sub InsertTextInCell() 
 If ActiveDocument.Tables.Count >= 1 Then 
  With ActiveDocument.Tables(1).Cell(Row:=1, Column:=1).Range 
   .Delete 
   .InsertAfter Text:="Cell 1,1" 
  End With 
 End If 
End Sub

Zurückgeben von Text aus einer Tabellenzelle ohne Zurückgeben der Markierung für Zellenende

Im folgenden Beispiel wird der Inhalt jeder Zelle in der ersten Zeile der ersten Dokumenttabelle zurückgegeben und angezeigt.

Sub ReturnTableText() 
 Dim tblOne As Table 
 Dim celTable As Cell 
 Dim rngTable As Range 
 
 Set tblOne = ActiveDocument.Tables(1) 
 For Each celTable In tblOne.Rows(1).Cells 
  Set rngTable = ActiveDocument.Range(Start:=celTable.Range.Start, _ 
  End:=celTable.Range.End - 1) 
  MsgBox rngTable.Text 
 Next celTable 
End Sub
Sub ReturnCellText() 
 Dim tblOne As Table 
 Dim celTable As Cell 
 Dim rngTable As Range 
 
 Set tblOne = ActiveDocument.Tables(1) 
 For Each celTable In tblOne.Rows(1).Cells 
  Set rngTable = celTable.Range 
  rngTable.MoveEnd Unit:=wdCharacter, Count:=-1 
  MsgBox rngTable.Text 
 Next celTable 
End Sub

Umwandeln von vorhandenem Text in eine Tabelle

Im folgenden Beispiel wird am Anfang des aktiven Dokuments von Tabstopps begrenzter Text eingefügt, und anschließend wird der Text in eine Tabelle umgewandelt.

Sub ConvertExistingText() 
 With Documents.Add.Content 
  .InsertBefore "one" & vbTab & "two" & vbTab & "three" & vbCr 
  .ConvertToTable Separator:=Chr(9), NumRows:=1, NumColumns:=3 
 End With 
End Sub

Zurückgeben des Inhalts jeder Tabellenzelle

Im folgenden Beispiel wird ein der Anzahl der Zellen in der ersten Dokumenttabelle entsprechendes Datenfeld definiert (es wird Option Base 1 vorausgesetzt). Die Struktur For Each...Next wird zur Rückgabe des Inhalts jeder Tabellenzelle und zum Zuweisen des Texts zum entsprechenden Datenfeldelement verwendet.

Sub ReturnCellContentsToArray() 
 Dim intCells As Integer 
 Dim celTable As Cell 
 Dim strCells() As String 
 Dim intCount As Integer 
 Dim rngText As Range 
 
 If ActiveDocument.Tables.Count >= 1 Then 
  With ActiveDocument.Tables(1).Range 
   intCells = .Cells.Count 
   ReDim strCells(intCells) 
   intCount = 1 
   For Each celTable In .Cells 
    Set rngText = celTable.Range 
    rngText.MoveEnd Unit:=wdCharacter, Count:=-1 
    strCells(intCount) = rngText 
    intCount = intCount + 1 
   Next celTable 
  End With 
 End If 
End Sub

Kopieren aller Tabellen im aktiven Dokument in ein neues Dokument

In diesem Beispiel werden die Tabellen des aktuellen Dokuments in ein neues Dokument kopiert.

Sub CopyTablesToNewDoc() 
 Dim docOld As Document 
 Dim rngDoc As Range 
 Dim tblDoc As Table 
 
 If ActiveDocument.Tables.Count >= 1 Then 
  Set docOld = ActiveDocument 
  Set rngDoc = Documents.Add.Range(Start:=0, End:=0) 
  For Each tblDoc In docOld.Tables 
   tblDoc.Range.Copy 
   With rngDoc 
    .Paste 
    .Collapse Direction:=wdCollapseEnd 
    .InsertParagraphAfter 
    .Collapse Direction:=wdCollapseEnd 
   End With 
  Next 
 End If 
End Sub

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.