ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 多处关键字符替换,要么很慢,要么死机!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-4-28 23:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
相见是缘8 发表于 2021-4-28 07:10
sylun老师好!你看一下,是不是这样的?我试了2次,不知什么原因,代码都是运行了27分钟左右后死机。

两个小文档的内容差不多,只是前后有行,应删除,特别是中名录中的空行。
刚才我再测试过代码,可以运行,我的处理时间正常是4分钟左右,跟昨天的差不多。因测试文档较大,有110多万字。再加上500多个药材名与关键字符,修改的位置有3万多处,估计需要较大内存才好办。所以建议重启电脑再处理,处理时最好尽量少打开其他应用程序。
另外,可以在代码后面MsgBox行前一两行加上以下一行代码
ActiveDocument.UndoClear

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-4-29 06:49 | 显示全部楼层
sylun 发表于 2021-4-28 23:52
两个小文档的内容差不多,只是前后有行,应删除,特别是中名录中的空行。
刚才我再测试过代码,可以运行 ...

老师好!
按你教的方法试了还是不成,代码一样运行了26分钟左右死机,这个可能正如你所说的,是我用的公司的电脑配置低的原因,这个没办法,只能放弃!代码收藏留以后自己买了电脑用,衷心感谢你的援手相助!谢谢!
1.png

TA的精华主题

TA的得分主题

发表于 2021-4-29 10:14 | 显示全部楼层
相见是缘8 发表于 2021-4-29 06:49
老师好!按你教的方法试了还是不成,代码一样运行了26分钟左右死机,这个可能正如你所说的,是我用的公司 ...

最好用excel表格列出来,有些字总觉得是一样。

TA的精华主题

TA的得分主题

发表于 2021-4-29 19:04 | 显示全部楼层
查找项(查找长度从长到短排列)    替换项                  说明(如小写括号等)

替换.7z

978.26 KB, 下载次数: 8

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-4-30 06:29 | 显示全部楼层
tcdatongye 发表于 2021-4-29 19:04
查找项(查找长度从长到短排列)    替换项                  说明(如小写括号等)

老师好!
你真是个细心人,衷心感谢!

TA的精华主题

TA的得分主题

发表于 2021-5-4 10:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 Jason_WangSS 于 2021-5-4 10:19 编辑
  1. Sub 替换()
  2.     Selection.Find.ClearFormatting
  3.     Selection.Find.Replacement.ClearFormatting
  4.     With Selection.Find
  5.         .Text = "大枣"
  6.         .Replacement.Text = "红枣"
  7.         .Forward = True
  8.         .Wrap = wdFindContinue
  9.         .MatchWildcards = False
  10.         .Execute Replace:=wdReplaceAll
  11.         
  12.         .Text = "以"
  13.         .Replacement.Text = "也"
  14.         .Forward = True
  15.         .Wrap = wdFindContinue
  16.         .MatchWildcards = False
  17.         .Execute Replace:=wdReplaceAll
  18.         
  19.         .Text = "盖"
  20.         .Replacement.Text = "凡"
  21.         .Forward = True
  22.         .Wrap = wdFindContinue
  23.         .MatchWildcards = False
  24.         .Execute Replace:=wdReplaceAll
  25.         
  26.         .Text = "%"
  27.         .Replacement.Text = "%"
  28.         .Forward = True
  29.         .Wrap = wdFindContinue
  30.         .MatchWildcards = False
  31.         .Execute Replace:=wdReplaceAll
  32.         
  33.         .Text = "》日"
  34.         .Replacement.Text = "》曰"
  35.         .Forward = True
  36.         .Wrap = wdFindContinue
  37.         .MatchWildcards = False
  38.         .Execute Replace:=wdReplaceAll
  39.         
  40.         .Text = "("
  41.         .Replacement.Text = "("
  42.         .Forward = True
  43.         .Wrap = wdFindContinue
  44.         .MatchWildcards = False
  45.         .Execute Replace:=wdReplaceAll
  46.         
  47.         .Text = ")"
  48.         .Replacement.Text = ")"
  49.         .Forward = True
  50.         .Wrap = wdFindContinue
  51.         .MatchWildcards = False
  52.         .Execute Replace:=wdReplaceAll
  53.         
  54.         .Text = "。)"
  55.         .Replacement.Text = ")。"
  56.         .Forward = True
  57.         .Wrap = wdFindContinue
  58.         .MatchWildcards = False
  59.         .Execute Replace:=wdReplaceAll
  60.         
  61.         .Text = " )"
  62.         .Replacement.Text = ")"
  63.         .Forward = True
  64.         .Wrap = wdFindContinue
  65.         .MatchWildcards = False
  66.         .Execute Replace:=wdReplaceAll
  67.         
  68.         .Text = "( "
  69.         .Replacement.Text = "("
  70.         .Forward = True
  71.         .Wrap = wdFindContinue
  72.         .MatchWildcards = False
  73.         .Execute Replace:=wdReplaceAll
  74.         
  75.         .Text = "([钱两]半),"
  76.         .Replacement.Text = "\1、"
  77.         .Forward = True
  78.         .Wrap = wdFindContinue
  79.         .MatchWildcards = True
  80.         .Execute Replace:=wdReplaceAll
  81.         
  82.         .Text = "([钱两克枚]),"
  83.         .Replacement.Text = "\1、"
  84.         .Forward = True
  85.         .Wrap = wdFindContinue
  86.         .MatchWildcards = True
  87.         .Execute Replace:=wdReplaceAll
  88.         
  89.         .Text = "曰[.,,;∶:︰。:]"
  90.         .Replacement.Text = "曰:"
  91.         .Forward = True
  92.         .Wrap = wdFindContinue
  93.         .MatchWildcards = True
  94.         .Execute Replace:=wdReplaceAll
  95.         
  96.         .Text = "[\-~]"
  97.         .Replacement.Text = "~"
  98.         .Forward = True
  99.         .Wrap = wdFindContinue
  100.         .MatchWildcards = True
  101.        .Execute Replace:=wdReplaceAll
  102.     End With   
  103. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2021-5-4 10:18 | 显示全部楼层
本帖最后由 Jason_WangSS 于 2021-5-4 10:50 编辑

重复,删除

TA的精华主题

TA的得分主题

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

老师好!
你的这个代码,在1200多页的大文档中,替换29个不同的关键字符,在我这个配置低的电脑上,不但不死机,且速度很快,十多秒就替换好了。衷心感谢你!谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-27 13:33 , Processed in 0.047351 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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