
Ich habe ein Microsoft Word-Dokument mit zwei Textabschnitten. Der erste hat die Form eines Absatzes, der zweite ist in Absatzform in Abschnitte unterteilt und ohne Interpunktion in einer Tabelle platziert. Gibt es eine Funktion, die ich verwenden kann, damit:
- Wenn: Im interpunktierten Text folgt auf einen Abschnitt ein Satzzeichen,
- Dann: Im uninterpunktierten Text innerhalb der Tabelle wird die Interpunktion hinzugefügt.
Wenn dies in Microsoft Word nicht möglich ist, gibt es andere empfohlene Tools zum Erreichen dieses Ziels?
Hier ist ein Screenshot, der in Microsoft Word erstellt wurde, um mein Problem zu veranschaulichen.
Antwort1
Mit dem folgenden Code können Sie Absätzen in Tabellenzellen fehlende Satzzeichen hinzufügen. Was die Bedingungen betrifft, unter denen dies ausgeführt wird, müssen Sie sich meinen Kommentar ansehen und weitere Informationen bereitstellen.
Sub AddPunction()
Dim para As Paragraph, tbl As Table, tRow As Row
Dim tCell As Cell, cRng As Range, pRng As Range
For Each tbl In ActiveDocument.Tables
For Each tRow In tbl.rows
For Each tCell In tRow.Cells
Set cRng = tCell.Range
cRng.MoveEnd wdCharacter, -1
If cRng.Paragraphs.Count > 0 Then
For Each para In cRng.Paragraphs
Set pRng = para.Range
If Asc(pRng.Characters.Last) = 13 Then
pRng.MoveEnd wdCharacter, -1
End If
If Not Asc(pRng.Characters.Last) = 46 Then
pRng.Text = pRng.Text & "."
End If
Next para
End If
Next tCell
Next tRow
Next tbl
End Sub
Basierend auf Ihren zusätzlichen Fragen, die Sie als Kommentare gestellt haben, sind hier die Ergänzungen zu meiner ursprünglichen Antwort:
Informationen zum Erstellen oder Ausführen eines Makros finden Sie unter diesem Microsoft-Support-Link. https://support.office.com/en-us/article/create-or-run-a-macro-c6b99036-905c-49a6-818a-dfb98b7c3c9c
Zu Ihrer anderen Frage, den obigen Code anhand der von Ihnen neu bereitgestellten Informationen anzupassen, erfahren Sie hier, wie Sie ihn ändern können.
Sub TableLookBackAddPunctuation()
Dim para As Paragraph, tbl As Table, tRow As Row
Dim tCell As Cell, cRng As Range, pRng As Range
Dim rng As word.Range
For Each tbl In ActiveDocument.Tables
For Each tRow In tbl.rows
Set cRng = tRow.Cells(1).Range
cRng.MoveEnd wdCharacter, -1
If cRng.Paragraphs.Count > 0 Then
For Each para In cRng.Paragraphs
Set pRng = para.Range
If Asc(pRng.Characters.Last) = 13 Then
pRng.MoveEnd wdCharacter, -1
End If
Select Case Asc(pRng.Characters.Last)
Case 33, 34, 35, 36, 37, 38, 39, 40, _
41, 42, 43, 44, 45, 46, 63
'do nothing, punctuation already set
Case Else
Set rng = pRng
rng.Collapse wdCollapseStart
With rng.Find
.ClearFormatting
.Format = False
.Forward = False
.MatchCase = True
.Text = pRng.Text
.Wrap = wdFindStop
.Execute
If .found Then
rng.MoveEnd wdCharacter, 1
Select Case Asc(rng.Characters.Last)
Case 33, 34, 35, 36, 37, 38, 39, 40, _
41, 42, 43, 44, 45, 46, 63
pRng.Text = pRng.Text & rng.Characters.Last
Case Else
'do nothing, there's no punctuation
End Select
End If
End With
End Select
Next para
End If
Next tRow
Next tbl
End Sub