ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求一个查找文档内多余的标点符号并把它们改为蓝色的宏代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-10-2 08:44 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 13907933959 于 2015-10-2 14:46 编辑

在整理医书资料中,经常碰到文档内有很多多余的标点符号,又没有规律可寻,所以求前辈们编写一个查找文档内多余的标点符号并把它们改为蓝色的宏代码。共有8种常用的标点符号。

1、查找任意2~3个相同的标点符号。
如:(,,。。、、::. .??!!;;)(,,,。。。、、、:::. . .???!!!;;;)
2、查找任意2~3个不相同的标点符号。
如:(,。 、。 。:……等)(,。、 。。, 、。,……等)。这个可能要涉及到数字排列组合。
注:……等,这个省略号不包括。

小弟谢谢前辈们!

附件.rar

4.6 KB, 下载次数: 90

TA的精华主题

TA的得分主题

发表于 2015-10-2 12:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不提供附件,怎么测试?另外个人认为你问题没有描述清楚。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-2 14:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
duquancai 发表于 2015-10-2 12:06
不提供附件,怎么测试?另外个人认为你问题没有描述清楚。

前辈好,附件以上传。请查看。求一个查找文档内多余的标点符号(2个及2个以上的)并把它们改为蓝色的宏代码。请赐教!谢谢!

TA的精华主题

TA的得分主题

发表于 2015-10-2 17:21 | 显示全部楼层
13907933959 发表于 2015-10-2 14:54
前辈好,附件以上传。请查看。求一个查找文档内多余的标点符号(2个及2个以上的)并把它们改为蓝色的宏代 ...

勾选使用通配符  查找[。,、;:?!.]{2,}替换“蓝色”
@@TUPKKDOYV3OQ_)%JGS(VO.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-3 08:11 | 显示全部楼层
本帖最后由 13907933959 于 2015-10-3 10:25 编辑
duquancai 发表于 2015-10-2 17:21
勾选使用通配符  查找[。,、;:?!.]{2,}替换“蓝色”

感谢前辈出手相助,这个查找替换的方法很好,简单实用,可只能一次查找单个文件,如要一次性查找改变几百个文件中多余的标点符号的颜色,又要怎样才能办到?请前辈再赐教!谢谢!

TA的精华主题

TA的得分主题

发表于 2015-10-3 15:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
一次性查找改变几百个文件中多余的标点符号的颜色,又要怎样才能办到?

饭要一碗一碗吃嘛,干嘛在分分钟内做完半年的事啊呀?

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-3 17:54 | 显示全部楼层
本帖最后由 13907933959 于 2015-10-4 07:26 编辑
xpm130 发表于 2015-10-3 15:56
饭要一碗一碗吃嘛,干嘛在分分钟内做完半年的事啊呀?

前辈好!
因要整理的东西太多,不得不求前辈们赐教捷径,再说也确有前辈有此功力,如:413191246se 前辈,以前曾多次都得到他的鼎力相助,使原本手工要几年时间完成的东西,他编写的宏代码就可在几个小时内完成。

TA的精华主题

TA的得分主题

发表于 2015-10-4 14:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 413191246se 于 2015-10-4 14:13 编辑

139:你好!——2号就看到你的帖子了,但未能出手,因为无计可施,今天我决定还是来老办法(逐字符循环法),毕竟宏比查找替换用起来方便,另外,宏你也可以自己自定义一些标点符号(但要保留原代码)。
****单个文档中,查找重复的标点符号(宏代码)******
  1. Sub 查找重复标点符号()
  2.     Dim i As Paragraph
  3.     For Each i In ActiveDocument.Paragraphs
  4.         i.Range.Select
  5.         If Len(i.Range) = 1 Then GoTo SkipEmpty
  6.         Selection.HomeKey unit:=wdLine
  7.         Do
  8.             Selection.MoveRight unit:=wdCharacter, Count:=1, Extend:=wdExtend
  9.             If Selection.Characters.Last Like vbCr Then GoTo SkipEmpty
  10.             If Selection.Characters.Last Like "[。;:,、!?;:,.?!…—]" Then
  11.                 Do
  12.                     Selection.MoveRight unit:=wdCharacter, Count:=1, Extend:=wdExtend
  13.                 Loop Until Selection.Characters.Last Like "[!。;:,、!?;:,.?!…—]"
  14.                 Selection.MoveEnd unit:=wdCharacter, Count:=-1
  15.                 If Len(Selection) > 1 Then Selection.Font.Color = wdColorBlue '蓝色
  16.                 If Len(Selection) > 1 Then Selection.Range.HighlightColorIndex = wdBrightGreen '突出显示(鲜绿)
  17.             End If
  18.             Selection.MoveRight unit:=wdCharacter, Count:=1
  19.         Loop
  20. SkipEmpty:
  21.     Next
  22. End Sub
复制代码
* 虽然循环处理文件夹内所有文件可以办到,但这个宏,我建议还是先处理单个文档为好!(因为有些标点符号不确定)
* 注意:第10行代码中,like 后面双引号中间用双中括号括着的为要查找的重复的标点符号,双引号括着代码只取其中之一。
* 第13行代码,与第10行代码标点符号是一致的,但是中括号后面有个英文叹号“!”代表“否”,表示如果不是它后面的标点的话,会怎么着。
* 第16行代码,突出显示,可以屏蔽(注释掉),也可以保留,因为取消所有突出显示很简单,只须:编辑菜单——全选——突出显示:无。
* 发现省略号和破折号无法鉴别,也当成不标准符号来看了!

TA的精华主题

TA的得分主题

发表于 2015-10-4 14:28 | 显示全部楼层
本帖最后由 413191246se 于 2015-10-4 14:32 编辑

139:请看第10行代码 like "。"then这种情况只匹配一个字符句号“。”
like "[。,]"这种情况,可以匹配句号,也可以匹配逗号,也就是说,在双引号中,用中括号括起来的符号,无论有多少个,匹配时,只取其中之一,但到底是哪个,不好说,可以是句号,也可以是逗号。
like"[。,:]"这种情况,匹配时会在句号/逗号/冒号 三个标点之中取一个,到底哪个不好说。
like"[。,:、;]"这种情况还是只取这几种标点之一,包括中英文标点,自己可以试验添加。******
第13行代码:like"[!。]"then这种代码意思是:如果不是句号,则……。(中括号里面第一个英文叹号,代表否定的意思)
再比如:like"[!。,:]"then这种代码意思是:如果不是句号/逗号/冒号之一,则……。
******
但在楼上代码中,第13行代码中包括的标点符号要和第10行代码是一致的,只不过意思是取反。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-4 17:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2015-10-4 14:28
139:请看第10行代码 like "。"then这种情况只匹配一个字符句号“。”
like "[。,]"这种情况,可以匹配句 ...

师傅好!
国庆节都没有让好好你休息!抱歉!
师傅为我编写的宏,刚刚用了,好用!我拿掉了“突出显示”这一行,师傅的用意我明白,是为了让它更醒目,但因要处理的资料太多,能少一个环节就少一个。

请师傅编写这个宏的目的,是查出多余的标点符号进行颜色标识后,我再用“查找替换”查找,然后一个个手工修改,这个没有办法,就象师傅你说的,在多余的标点符号中,那个才是对的都不确定,只能通也判别句子来确定。

因要处理的单个文件都很长,且文件有几百个之多,所以、我还是想劳请师傅编写一个“循环处理文件夹内所有文件”的宏,以便徒弟尽早完成。谢谢师傅!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-15 18:09 , Processed in 0.025687 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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