ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] word vba 问题求助

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-22 15:39 | 显示全部楼层
本帖最后由 yang611 于 2013-7-22 15:42 编辑

这段代码似乎只能标出句首的重复项,见截图
第三段与第二段段尾重复,并没有标识出来?!

未命名1.JPG

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-24 13:03 | 显示全部楼层
继续求助。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-30 10:59 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-31 08:51 | 显示全部楼层
已补充上附5楼和10楼代码的测试文档。
程序运行问题见word批注。
请各位帮忙,谢谢大家。

test.rar

29.46 KB, 下载次数: 14

TA的精华主题

TA的得分主题

发表于 2013-7-31 11:21 | 显示全部楼层
非常简单!代码如下:
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
如果你一开始就提供附件,问题早就解决了。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-31 16:22 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-1 08:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zhanglei1371 发表于 2013-7-31 11:21
非常简单!代码如下:
Sub 快速标记完全重复的句子()
    Dim i As Paragraph, oSen As Range, MySearchR ...

本程序似乎是判断字词的重复性,如果文档很大,运行时间非常长,能否再做适当优化,例如下例中的“结果表明、通常”能否视为不重复。即,程序只对以逗号分隔的句子进行判断,提高其运行效率。谢谢

试验结果表明,该高镁夹层抗压强度较高,完整性也很好,完全可以加工成建筑骨料。故在矿山建设中配套建了一条骨料生产线,确保了矿岩的综合利用,这当然是一个好的例子。结果表明,该项目可行。
石灰岩矿石中的共、伴生矿床通常有砂页岩、黏土、板岩等,有时这部分废石(对石灰岩矿而言)所占比例还不低,数量也相对集中。通常,该项目可行。

TA的精华主题

TA的得分主题

发表于 2013-8-1 10:55 | 显示全部楼层
把这两句去掉就行了:
            s = Replace(s, "。", ",")
            s = Replace(s, ";", ",")
至于上面的两段,并没有你说的现象,我试了下:只有最后一句标红:
试验结果表明,该高镁夹层抗压强度较高,完整性也很好,完全可以加工成建筑骨料。故在矿山建设中配套建了一条骨料生产线,确保了矿岩的综合利用,这当然是一个好的例子。结果表明,该项目可行。
石灰岩矿石中的共、伴生矿床通常有砂页岩、黏土、板岩等,有时这部分废石(对石灰岩矿而言)所占比例还不低,数量也相对集中。通常,该项目可行。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-20 17:42 | 显示全部楼层
补充求救:
在Word2010中运行上述代码,word为什么会卡死呢?
需要重新引用某个函数么?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 13:37 , Processed in 0.022245 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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