ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 Office知识技巧免费学 打造核心竞争力的职场宝典
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 245|回复: 8

[求助] 在一篇文档中用vba将不同字符替换为同一个字符

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-2-27 13:13 | 显示全部楼层 |阅读模式
求大神举个例子:
在一篇word中,想把“我们,大家好,你,x”四个词汇都替换为“hello”,用VBA怎么写呢?

先谢过了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-27 13:16 | 显示全部楼层
本帖最后由 suidehan 于 2020-2-27 13:17 编辑

文档中会有很多的这四个词,是把这篇文档中所有的这个四个词都替换掉。
还有如果有几十个不同的词,都要替换为同一个词,怎么写呢?

TA的精华主题

TA的得分主题

发表于 2020-2-28 09:45 | 显示全部楼层
Sub lkyy()
Dim doc As Document
Set doc = ActiveDocument
With doc.Content.Find
    .Execute "我们,大家好,你,x", , , , , , , , , "Hello", 2
End With
End Sub

TA的精华主题

TA的得分主题

发表于 2020-3-1 10:51 | 显示全部楼层
本帖最后由 cuanju 于 2020-3-1 12:32 编辑

Array("我们", "大家好", "你", "x") '可以自行增加或修改这几个词
ReplaceWith:="hello", '也可以改成替换为不是hello的其他词
‘==============================================
Sub d1()
    Dim arr
    arr = Array("我们", "大家好", "你", "x")
    For i = 0 To UBound(arr)
        ActiveDocument.Content.Find.Execute FindText:=arr(i), ReplaceWith:="hello", Replace:=wdReplaceAll
    Next
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-1 15:37 | 显示全部楼层
cuanju 发表于 2020-3-1 10:51
Array("我们", "大家好", "你", "x") '可以自行增加或修改这几个词
ReplaceWith:="hello", '也可以改成替 ...

你是好人,你是大神,谢谢你哦

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-1 15:53 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-1 15:55 | 显示全部楼层
cuanju 发表于 2020-3-1 10:51
Array("我们", "大家好", "你", "x") '可以自行增加或修改这几个词
ReplaceWith:="hello", '也可以改成替 ...

是将每一个词都替换为hello,这样应该有四个hello,
这下您能理解么

TA的精华主题

TA的得分主题

发表于 2020-3-2 09:02 | 显示全部楼层
suidehan 发表于 2020-3-1 15:55
是将每一个词都替换为hello,这样应该有四个hello,
这下您能理解么

按照你希望的方式写了一个代码。
此代码和我之前写的代码效果相同。之前写的通过遍历数组的方式,把"我们", "大家好", "你", "x"……几个关键词放入数组,比较简洁。
===============================
Sub d2()
    ActiveDocument.Content.Find.Execute FindText:="我们", ReplaceWith:="hello", Replace:=wdReplaceAll
    ActiveDocument.Content.Find.Execute FindText:="大家好", ReplaceWith:="hello", Replace:=wdReplaceAll
    ActiveDocument.Content.Find.Execute FindText:="你", ReplaceWith:="hello", Replace:=wdReplaceAll
    ActiveDocument.Content.Find.Execute FindText:="x", ReplaceWith:="hello", Replace:=wdReplaceAll
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-5 19:44 | 显示全部楼层
cuanju 发表于 2020-3-2 09:02
按照你希望的方式写了一个代码。
此代码和我之前写的代码效果相同。之前写的通过遍历数组的方式,把"我 ...

我觉得还是前面那个循环好,因为在文档中不知道提要替换几个,用数组更便于扩展,也直观,谢谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关注官方微信,高效办公专列,每天发车

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

GMT+8, 2020-5-29 18:17 , Processed in 0.063134 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

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

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

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