使用word宏删除基于子字符串的特定段落 [英] Delete specific paragraphs based on substring using word macro
本文介绍了使用word宏删除基于子字符串的特定段落的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要一个MS Word宏来搜索整个文档中每个段落中的特定子字符串,并删除不包含该字符串的段落。
I试过这个宏代码:
Sub DeleteParagraphContainingString()
Dim search As String
search = 删除我
Dim para As 段落
对于 每个 para 在 ActiveDocument.Paragraphs
Dim txt As String
txt = pa ra.Range.Text
如果 不 InStr(LCase(txt),搜索)然后
para.Range.Delete
结束 如果
下一步
结束 Sub
但它虽然它有该子字符串,但删除所有段落。我没有任何线索在代码中哪里出错。
解决方案
要做的步骤:
- 循环收集段落
- 检查段落是否包含搜索字符串
- 如果包含,请跳至下一段
- 如果没有,删除
样本代码:
选项 明确
Sub SearchAndDestroy()
Dim p As 段落
Dim searchingText As String
On 错误 GoTo Err_SearchAndDestroy
searchingText = 删除我
对于 每个 p 在 ThisDocument.Paragraphs
如果 InStr(< span class =code-digit> 1 ,p.Range.Text,searchingText,vbBinaryCompare)> 0 然后 GoTo SkipNext
p.Range.Delete单位:= wdParagraph,计数:= 1
SkipNext:
下一步
Exit_SearchAndDestroy:
退出 Sub
Err_SearchAndDestroy:
MsgBox Err。说明,vbExclamation,Err.Number
恢复 Exit_SearchAndDestroy
结束 子跨度>
I need a MS Word Macro that would search for a specific substring in every paragraph throughout the document and delete paragraphs that don't contain that string.
I tried this macro code:
Sub DeleteParagraphContainingString()
Dim search As String
search = "delete me"
Dim para As Paragraph
For Each para In ActiveDocument.Paragraphs
Dim txt As String
txt = para.Range.Text
If Not InStr(LCase(txt), search) Then
para.Range.Delete
End If
Next
End Sub
But it deletes all the paragraph though it has that subtring. I don't have any clue where is the wrong in the code.
解决方案
Steps to do:
- Loop through the collection of paragraphs
- Check if paragraph contains searched string
- if contains, skip to next paragraph
- if not, delete
Sample code:
Option Explicit Sub SearchAndDestroy() Dim p As Paragraph Dim searchedText As String On Error GoTo Err_SearchAndDestroy searchedText = "Delete me" For Each p In ThisDocument.Paragraphs If InStr(1, p.Range.Text, searchedText, vbBinaryCompare) > 0 Then GoTo SkipNext p.Range.Delete Unit:=wdParagraph, Count:=1 SkipNext: Next Exit_SearchAndDestroy: Exit Sub Err_SearchAndDestroy: MsgBox Err.Description, vbExclamation, Err.Number Resume Exit_SearchAndDestroy End Sub
这篇关于使用word宏删除基于子字符串的特定段落的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文