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.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für