我正在尝试创建一个宏,该宏可以找到一个字符串,并确保在字符串之后始终有3个换行符。
如果找到了第一章,则其后应该总是有3个换行符。 我需要循环遍历,直到出现这种情况为止(因此,如果“第一章”之后有7个换行符,则需要循环遍历直到3个。
不幸的是,我无法插入循环以删除3个以上的连续换行符
Sub ChapterLineBreaks()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Style = ActiveDocument.Styles( _
"Heading 1,Chapter Heading")
With Selection.Find
.Text = "Chapter One^p^p^p^p"
.Replacement.Text = "Chapter One^p^p^p"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
预期:
第一章
文字应从此处开始
答案 0 :(得分:0)
您可能需要使用通配符,如下所示:
Sub ChapterLineBreaks()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Style = ActiveDocument.Styles( _
"Heading 1,Chapter Heading")
With Selection.Find
.text = "(Chapter One)([^13]@)([!^13])"
.Replacement.text = "\1^p^p^p\3"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
您会找到很好的信息here,here和here。我所做的是使用通配符定义正则表达式:“第一章{1个或更多换行符}其他文本”。然后,我将换行符替换为恰好3个换行符。