ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 10449|回复: 31

[求助] 用VBA一次查找到文档中各不相同的重复句子、并用红色标识

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-3-31 12:03 | 显示全部楼层 |阅读模式
本帖最后由 13907933959 于 2016-4-1 09:25 编辑

求前辈们帮忙!谢谢!
请查看下面的模拟附件!

今天在网上找到一个不知是那位前辈编写的代码,能运行,可不知为什么却不能找到重复的句子,也未对其标为红色。

Sub 标记重复的句子()
   Dim I As Paragraph, oSen As Range, MySearchRange As Range
   Dim MyArray() As String, aArray As Variant
   Application.ScreenUpdating = False
   On Error Resume Next    ' 忽略错误
   With ActiveDocument    ' 遍历段落(注:原来是ThisDocument,没有反应,改为ActiveDocument也没有反应)
       For Each I In .Paragraphs    ' 如果为空白段落则跳过或者到达最后一个段落则进入下一个循环
           If VBA.Len(I.Range) = 1 Or I.Range.Start =.Content.Paragraphs.Last.Range.Start Then GoTo GN
           Set MySearchRange = .Range(I.Range.End, .Content.End)
           MySearchRange.Select '-----------------
           With Selection.Find    ' 在指定的RANGE 中查找
           s = I.Range
           s = Replace(s, "。", ",")
           s = Replace(s, ";", ",")
                MyArray = VBA.Split(s, ",")  ' 由逗号为分隔符(本来在句子中循环,修改)
                .ClearFormatting  ' 清除查找格式
                For Each aArray In MyArray    ' 在"句子" 中循环,如果查找到该内容,则设置为红色
                    Do While.Execute(findtext:=aArray)
                        .Parent.Font.Color = vbRed       ' 将找到的句子标红
'                       MySearchRange.Paragraphs(1).Range.Font.Color = wdColorRed    ' 整段标红
                    Loop
                     MySearchRange.Select
                Next
           End With
GN:             Next
   End With
   MsgBox "OK!!!"
   Application.ScreenUpdating = True
End Sub

模拟附件.rar

6.86 KB, 下载次数: 166

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-20 13:04 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-4-20 13:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 duquancai 于 2016-4-20 13:29 编辑
13907933959 发表于 2016-4-20 13:04
求前辈们帮忙!谢谢!

利用word中正则表达式查找替换。详见http://club.excelhome.net/thread-1273013-1-1.html

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-21 09:27 | 显示全部楼层
duquancai 发表于 2016-4-20 13:28
利用word中正则表达式查找替换。详见http://club.excelhome.net/thread-1273013-1-1.html

感谢前辈出手相助!我是要查找、如附件中由汉字组成的不同的重复句子,能否再求前辈详教!劳请给编个代码,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-8-8 14:28 | 显示全部楼层
本帖最后由 13907933959 于 2016-8-8 16:56 编辑

用VBA一次查找到文档中各不相同的重复句子、段落,并用红色标识。

唉!这个问题过了这么久,都没有人能解答,看来是个难题!

听说原来的守版主编写过一个“守柔Word文本筛——文档重复段落和相似段落分析工具”,没找到,那位前辈有,望能上一个,在下先谢过!

TA的精华主题

TA的得分主题

发表于 2016-8-8 18:41 | 显示全部楼层
13907933959 发表于 2016-8-8 14:28
用VBA一次查找到文档中各不相同的重复句子、段落,并用红色标识。
唉!这个问题过了这么久,都没有人能解 ...

wordvba中定义一句话:Sentence对象  是以:句号  感叹号 问号   这三种来判断一句话。那么请问你,你是怎么定义一句话的?

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-8-9 07:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 13907933959 于 2016-8-9 07:56 编辑
duquancai 发表于 2016-8-8 18:41
wordvba中定义一句话:Sentence对象  是以:句号  感叹号 问号   这三种来判断一句话。那么请问你,你是 ...

前辈好!
感谢您的多次出手相助!
在这些有重复句子、段落的Word文档中,后面的标点符号不统一,句号、感叹号、问号、逗号、顿号、分号、冒号,这些都有。想求前辈帮忙,可否有办法单以这些标点符号分別作为判别的标准(类似附件上,那些没有标点符号结尾的重复句子,暂不管它,以后我手工逐个解决),找到重复的句子、段落,并用红色标注?

TA的精华主题

TA的得分主题

发表于 2016-8-9 10:12 | 显示全部楼层
13907933959 发表于 2016-8-9 07:25
前辈好!
感谢您的多次出手相助!
在这些有重复句子、段落的Word文档中,后面的标点符号不统一,句号、 ...

没有判断标准?怎么搞?还有就是:“那些没有标点符号结尾的重复句子”这话本来就矛盾。比如:你说是重复的,如果你说的重复“句子”再往右移动一个字符,那就是不重复了,或者往左移动一个以上的字符也可以叫重复,本来你这个需求就是矛盾的,所以至今别人也没法解决!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-8-9 10:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
duquancai 发表于 2016-8-9 10:12
没有判断标准?怎么搞?还有就是:“那些没有标点符号结尾的重复句子”这话本来就矛盾。比如:你说是重复 ...

前辈好!
是,“那些没有标点符号结尾的重复句子”本来就矛盾。现在放弃。
我想问的是,可否有办法让有:句号、感叹号、问号、逗号、顿号、分号、冒号,这些标点符号结尾的重复句子、段落,把这些结尾的标点符号分別作为判别的标准,再找到这些重复的句子、段落,并用红色标注?

TA的精华主题

TA的得分主题

发表于 2016-8-9 10:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 duquancai 于 2016-8-9 14:45 编辑
13907933959 发表于 2016-8-9 10:32
前辈好!
是,“那些没有标点符号结尾的重复句子”本来就矛盾。现在放弃。
我想问的是,可否有办法让有 ...
  1. 答案在16楼:
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-29 18:15 , Processed in 0.030074 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表