ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

再请教斑竹一个关于查找替换的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-1-14 08:01 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我现在做了一个查找替换的功能,就是定义一组词,然后在文档中对这一组词同时进行查找和替换(就是把这一组词用一个单词替换),我做的比较复杂。我的做法是,先分别查找每个单词,然后把查找到的单词的位置记住,最后对这些位置进行排序,在一个一个进行显示和替换。请问斑竹,能不能提供一个更好的方法。再有我对find这个对象的意义还是不太明白,请斑竹给说明说明

TA的精华主题

TA的得分主题

发表于 2005-1-14 10:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

呵呵,等我把<守柔WORD编程代码集>有机会上传的话,你可以尽情地看一下.

请参:

一) 查找与替换的基本代码用法之一

'* +++++++++++++++++++++++++++++++++++++++

'^The Code CopyIn [ThisDocument-ThisDocument]^'

'* --------------------------------------------------------------------------

Sub Example() With ActiveDocument.Content.Find .ClearFormatting '清除格式设置 .Font.Name = "华文细黑" '查找的字体格式 With .Replacement '替换条件 .ClearFormatting '清除格式设置 .Font.Name = "黑体" '替换成黑体 End With .Execute FindText:="", ReplaceWith:="", Format:=True, _ Replace:=wdReplaceAll '是格式替换,全部替换 End With End Sub '----------------------

二) 查找与替换的基本代码用法之二

'* +++++++++++++++++++++++++++++++++++++++

'^The Code CopyIn [ThisDocument-ThisDocument]^'

'* --------------------------------------------------------------------------

Sub Example() Dim FindChar As String, Fcount As Integer, RepChar As String On Error Resume Next Application.ScreenUpdating = False '关闭屏幕更新 FindChar = "《" RepChar = "[" With ActiveDocument.Content.Find '此处针对全文档 Do While .Execute(findtext:=FindChar) = True '如果发现 Fcount = Fcount + 1 '计数器 Loop If MsgBox("文档中共发现了" & Fcount & "个" & FindChar & vbCrLf _ & ",按Yes键将进行下一步的替换工作,按No取消", vbYesNo + vbInformation) = vbYes Then .Execute findtext:=FindChar, Wrap:=wdFindContinue, replacewith:=RepChar, Replace:=wdReplaceAll End If End With Application.ScreenUpdating = True '恢复屏幕更新 End Sub '----------------------

最好结合你的实例(上传一个附件),否则易走弯路,OK?

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-1-14 16:28 | 显示全部楼层

我编得太复杂了,实在不好意思拿出来

[em04]

大家千万不要笑话。

mPE5EPgf.rar (23.03 KB, 下载次数: 26)

TA的精华主题

TA的得分主题

发表于 2005-1-15 08:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用cmyy在2005-1-14 16:28:00的发言:

我编得太复杂了,实在不好意思拿出来

我觉得楼主的功力不错!

只是如此代码来解决我一时还没有弄清楚,你的所谓同义词,是什么意思?是WORD中的文本快捷菜单下的同义词-同义词库么?我感觉不象.

楼主的意思,似乎在一次性替换多个指定条件的文本,比如,在文档中替换用户指定的数个文本,可以为查找,也可以为替换,即将多次查找和替换整合在一块儿,是吗?

请楼主明示.

再请教斑竹一个关于查找替换的问题

再请教斑竹一个关于查找替换的问题

TA的精华主题

TA的得分主题

发表于 2005-1-16 10:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用守柔在2005-1-14 10:24:00的发言:

呵呵,等我把<守柔WORD编程代码集>有机会上传的话,你可以尽情地看一下.

二) 查找与替换的基本代码用法之二

'* +++++++++++++++++++++++++++++++++++++++

'^The Code CopyIn [ThisDocument-ThisDocument]^'

'* --------------------------------------------------------------------------

Sub Example() Dim FindChar As String, Fcount As Integer, RepChar As String On Error Resume Next Application.ScreenUpdating = False '关闭屏幕更新 FindChar = "《" RepChar = "[" With ActiveDocument.Content.Find '此处针对全文档 Do While .Execute(findtext:=FindChar) = True '如果发现 Fcount = Fcount + 1 '计数器 Loop If MsgBox("文档中共发现了" & Fcount & "个" & FindChar & vbCrLf _ & ",按Yes键将进行下一步的替换工作,按No取消", vbYesNo + vbInformation) = vbYes Then .Execute findtext:=FindChar, Wrap:=wdFindContinue, replacewith:=RepChar, Replace:=wdReplaceAll End If End With Application.ScreenUpdating = True '恢复屏幕更新 End Sub '----------------------

最好结合你的实例(上传一个附件),否则易走弯路,OK?

请教两个问题:

1.<守柔WORD编程代码集> 这个整理好了吗?

2.上述程序划线部分我的疑问:如何确定不会重复查找!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-1-16 17:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
是我没说清楚,我这所谓的同义词,就是由用户任意自己定义一组词语,然后在文档中对这一组词语进行查找和把这一组词语统一替换为一个词语。

TA的精华主题

TA的得分主题

发表于 2005-1-16 19:35 | 显示全部楼层
以下是引用cmyy在2005-1-16 17:13:00的发言: 是我没说清楚,我这所谓的同义词,就是由用户任意自己定义一组词语,然后在文档中对这一组词语进行查找和把这一组词语统一替换为一个词语。

我的想法,具体是否可行,还请cmyy考证。

通过多次查找的方式,可以循环查找用户指定的词语,并将其标记为特殊格式(以区分原有格式,但为统一格式),如果需要选定所有这些特殊格式的词语,可以考虑右击文字的快捷菜单/选择格式相同的文本(你可录个宏)。

如果为替换,可以通过我上面的例子,将特殊格式的文字替换为指定的内容。

不知是否可行?关于这类似的替换功能,你可以搜索一下我的一个贴子《汉字拼音解决方案》中有相似代码。http://club.excelhome.net/viewthread.php?tid=72844

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-1-16 19:51 | 显示全部楼层

这个思路不错吗,早向你请教就好了,就不用走那么多弯路了

但是你那个工程需要密码才能看

[em06]
[此贴子已经被作者于2005-1-16 19:56:24编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 12:38 , Processed in 0.034484 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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