如何删除在word文档中重复的某些部分。第一部分有单词“example”,第二部分有单词“example.com”。如果找到这些字符串,请删除整个部分
Dim Sect As Section
For Each Sect In ActiveDocument.Sections
If ActiveDocument.Sect.Range.Find.Text = "example" Or ActiveDocument.Sect.Range.Find.Text ="example.com" Then
Activedocument.Sect.Range.delete
Next
同样从第5节开始循环浏览整个word文档
答案 0 :(得分:1)
你有几个问题。
1)你不是试图从第5节开始,所以它显然不会这样做。但是,即使您正在测试此代码,您的代码也会中断,因为您正在删除部分并循环前进。您需要反向检查部分,然后删除它们是否包含字符串"示例"
2)你找到字符串的尝试不会奏效。如果您曾尝试运行代码,注意到在运行代码时遇到的错误并说明错误发生的行,那就太好了。就是这样,这没有任何意义。如果您愿意,可以查看find方法的文档,但InStr函数将更好地工作,如下所示。
3)当您使用构造时,"对于每个Sect In ActiveDocument.Sections," " Sect"变量已成为该部分。它知道它是什么文件。" ActiveDocument.Sect ...."不管用。你只需要在那时使用Sect。我使用了不同的循环方式,但这个想法保持不变。
4)如果您已经在搜索文本"示例"在一个字符串中,搜索文本" example.com"是没有意义的"例子"已经在搜索字符串中。只做一次搜索。
<rant>
正如我暗示的那样,请尝试记录产生错误的确切错误和确切的代码行。虽然您提供了“尝试过”的代码,但您根本没有付出太多努力。遇到问题时,我建议您通过以下方式进行调试:a)实际运行代码并查找错误,b)通过研究您尝试使用的方法/属性来查看是否存在明显的语法问题,以及c)检查变量使用debug.print或locals窗口查看它们是否包含您认为的<\rant>
。
下面的工作代码。
子测试()
Dim mysects As Sections
Dim mysect As Section
Set mysects = ActiveDocument.Sections
For x = mysects.Last.Index To 5 Step -1
Set mysect = mysects.Item(x)
If InStr(1, mysect.Range.Text, "example", vbTextCompare) _
Or InStr( 1, mysect.Range.Text, "nextText", vbTextCompare) Then
mysect.Range.Delete
End If
Next x
End Sub