我要从选择中删除以字符串“ Page:”开头的段落
这是我的示例文本:
第28页
页:44包含很多示例。但是请在这里查看详细信息 说明。这可能会超过一,两或三行。这个 完全取决于文字的长度
日期:2018年1月10日
某些文本在这里,第108页
我在这里还有更多文字
更多
最终文本
页数:208
到此结束
我到目前为止的代码:
Sub DelPara()
Dim para As Paragraph
With Selection.Range.Find
.ClearFormatting
.Text = "[^13^11]Page:"
.Forward = True
.MatchWildcards = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute
If (Selection.Range.Find = True) Then
para.Range.Delete
End If
End With
End Sub
输出应为
日期:2018年1月10日
某些文本在这里,第108页
我在这里还有更多文字
更多
最终文本
到此结束
答案 0 :(得分:0)
下面的代码将搜索当前选择项中搜索词的所有实例,并删除搜索词以及该词的末尾所在的整个段落。
此操作的关键是使用两个Range
对象:一个用于搜索原始范围(选择),另一个用于实际搜索。这样,可以将执行实际搜索的范围从上一次成功搜索的末尾扩展到原始范围的末尾。
Sub DelPara()
Dim rngFind As Word.Range, rngSel As Word.Range
Dim para As Paragraph
Dim bFound As Boolean
Set rngSel = Selection.Range
Set rngFind = rngSel.Duplicate
With rngFind.Find
.ClearFormatting
.text = "[^13^11]Page:"
.Forward = True
.MatchWildcards = True
.wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
bFound = rngFind.Find.Execute
Do While bFound
rngFind.End = rngFind.paragraphs.Last.Range.End
rngFind.Delete
rngFind.Collapse wdCollapseEnd
rngFind.End = rngSel.End
bFound = rngFind.Find.Execute
Loop
End Sub
答案 1 :(得分:0)
您需要的只是一个通配符查找/替换为:
Find = ^13Page:[!^13]{1,}
Replace = nothing
不需要代码。至多,您可能需要在文档的开头插入一个空的段落,然后再将其删除-但只有在第一个段落以'Page:'开头时,才可以删除它。不过,作为宏:
Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
.InsertBefore vbCr
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "^13Page:[!^13]{1,}"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
.Characters.First = vbNullString
End With
Application.ScreenUpdating = True
End Sub
如果只想处理选定的范围,请将“ ActiveDocument”更改为“选择”。