Моя цель - объединить несколько абзацев на основе предопределенной строки (в произвольной форме), такой как точка (.) Или вопросительный знак (?)
Мое предложение приведено ниже (см. Изображение, пожалуйста):
Input
Ожидаемый результат будет примерно таким.
/////////////////////////////////////////////// /////////
выход
/////////////////////////////////////////////// /////////
В приведенном ниже коде я мог бы добиться этого, используя точку (.), Но для каждой другой конечной строки у меня есть отдельный макрос. Зависит от конца строки, я запускаю разные макросы. Есть ли способ поместить все эти строки поиска (. /? /;) В один массив и попросить код работать до тех пор, пока он не найдет ни одну из них и не выйдет из цикла и не выполнит слияние?
Blockquote
Sub FindDotToJoinParagraph()
Dim xRange As Range
Dim Srt As Variant
Dim Endee As Variant
Dim currentPosition As Range
Selection.HomeKey Unit:=wdLine, Extend:=wdMove
ActiveDocument.Bookmarks.Add Range:=Selection.Range, Name:="Srt" 'Bookmark
With Selection.Find
.Text = "." 'Here not just period alone, but others too
.Replacement.Text = ""
.Forward = True
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.EndKey Unit:=wdLine, Extend:=wdMove
ActiveDocument.Bookmarks.Add Range:=Selection.Range, Name:="Ends" 'Bookmark
ActiveDocument.Range( _
ActiveDocument.Bookmarks("Srt").Range.Start, _
ActiveDocument.Bookmarks("Ends").Range.Start) _
.Select
call MergeParaAndLineBreaks() 'An another sub-routine to merge
End Sub
//////////////////////////////////
Sub MergeParaAndLineBreaks ()
Dim oRng As Range
Set oRng = Selection.Range
Dim oFind As Range
Set oFind = Selection.Range
With oFind.Find
Do While .Execute(findtext:="[^13^l]{1,}", MatchWildcards:=True)
If oFind.InRange(oRng) Then
oFind.Text = ""
End If
Loop
End With
Set oFind = oRng
With oFind.Find
Do While .Execute(findtext:="[ ]{2,}", MatchWildcards:=True)
If oFind.InRange(oRng) Then
oFind.Text = Chr(32)
oFind.Collapse 0
End If
Loop
End With
lbl_Exit:
Set oRng = Nothing
Set oFind = Nothing
Exit Sub
End Sub
Blockquote
Может кто-нибудь помочь мне, пожалуйста!