Bearbeiten von Zeichenfolgen, auf die ein Interpunktionszeichen in Microsoft Word folgt

390
bpb

Ich habe ein Microsoft Word-Dokument mit zwei Textabschnitten. Die erste ist in Absatzform, die zweite ist die in Segmente unterteilte Absatzform, die ohne Interpunktion in eine Tabelle eingefügt wird. Gibt es eine Funktion, die ich verwenden kann, um:

  • Wenn : Im Satztext folgt auf einen Abschnitt ein Satzzeichen,
  • Dann : Im nicht punktierten Text in der Tabelle wird die Interpunktion hinzugefügt.

Wenn dies in Microsoft Word nicht möglich ist, gibt es andere vorgeschlagene Tools, um dieses Ziel zu erreichen?

Hier ist ein Screenshot in Microsoft Word, um mein Problem zu veranschaulichen.

Hier ist ein Bild, das die Aufgabe illustriert

0
Mit Abschnitt meinen Sie einen Wortabschnitt? Nach Satzzeichen, Männer, die jeweils in einem Punkt enden? Haben Sie einen Screenshot, den Sie Ihrer Frage hinzufügen können? Es ist viel hilfreicher zu sehen, was Sie beschreiben wollen. Rich Michaels vor 5 Jahren 2
Hallo Rich, ich habe ein Bild hinzugefügt. bpb vor 5 Jahren 0
@bpb Was hast du bisher getan, um dieses Problem zu lösen? Diese Site ist kein Skript-Codierungsdienst. JakeGould vor 5 Jahren 1

1 Antwort auf die Frage

0
Rich Michaels

Sie können Absätzen in Tabellenzellen mit folgendem Code fehlende Interpunktion hinzufügen. Zu den Bedingungen, 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 als Kommentare gestellt wurden, finden Sie hier Ergänzungen zu meiner ursprünglichen Antwort:

Für eine Ressource zum Erstellen oder Ausführen eines Makros verwenden Sie diesen Microsoft Support-Link. https://support.office.com/en-us/article/create-or-run-a-macro-c6b99036-905c-49a6-818a-dfb98b7c3c9c

Was Ihre andere Frage betrifft, ob Sie den obigen Code basierend auf Ihren neuen bereitgestellten Informationen anpassen, können Sie ihn wie folgt ändern.

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 
Zwei Fragen: (1) Wie gebe ich einen solchen Code in ein MS-Dokument ein? und (2) Wie würden Sie diesen Code so ändern, dass er meine Aufgabe erfüllen kann, die durch das Bild in meiner Frage klargestellt wird? bpb vor 5 Jahren 0
@bpb Klingt so, als würden Sie die Community mitreißen, um für Sie zu kodieren. In Wirklichkeit bietet diese Antwort eine Antwort auf die von Ihnen gestellte Frage. Sie müssen wissen, wie Sie Makros verwenden und ändern, um sie an Ihren neuen Fall anzupassen. Um ehrlich zu sein, sind Fragen wie diese, die vage sind, ein Lehrbuchbeispiel dafür, warum niemand eine solche Lösung nur kodieren sollte. Die Frage ist vage und diese Community ist kein Skript-Codierungsdienst. JakeGould vor 5 Jahren 0
Vielen Dank, Rich, ich werde diese Ressourcen durchgehen und anhand Ihres Beispiels das Problem besser verstehen. Und danke dir, Jake, dass du die Nutzung des Forums geklärt hast. Ich werde mich in Zukunft sicher an deine Punkte erinnern. bpb vor 5 Jahren 0