vba批量替换word中特定位置的内容vba实例教程.docxVIP

  • 359
  • 0
  • 约2.33千字
  • 约 5页
  • 2021-04-12 发布于天津
  • 举报

vba批量替换word中特定位置的内容vba实例教程.docx

VBA VBA 批量替换 Word 中特定位置的内容 VBA 实例教程 除非注明, 文章均为 战战如疯 原创, 转载请保留链接 : /cat4/212.html , VBA 交流 群 273624828 。 今天我们继续来看 VBA 操作 Word 的相关方法。 假设我们有 大批已经完成的 Word 报告,但是现在由于一些原因要将 报告中特定的词给替换掉。如果我们要替换的都是相同的词 那很简单,直接用我们在上一篇“ VB批量生成 Word报告” 中的方法将该内容替换即可。但是如果我们要替换的内容在 所有的 Word 中都是不一样的,只是位置相同,那我们就不 能简单的替换了。比如在一些理财公司的报告中,本来联系 方式那里留的是理财经理的电话,现在想要将理财经理电话 替换成公司的电话,由于每个理财经理电话不一样,所以也 就不能找到内容然后替换了。前面说过位置是一样的,所以 我们这里就先找电话所在的位置,之后再替换。 看下面的例子,还是我们之前用过的那个理财公司的月度报 告,现在要将其替换成我的 QQ449217002 ,这里提供两种 思路。思路一是找到“联系电话:”这几个字然后将向后数 11 位的内容替换掉,因为电话都是 11 位的,所以这种方法是 可行的。代码如下 Sub TEST1() Dim mypath, myfile, wApp, myrange mypath = ThisWorkbook.Path amp; \ myfile = Dir(mypath amp; *.docx) Do While myfile lt;gt; Set wApp = CreateObject(word.application) wApp.documents.Open mypath amp; myfile Set myrange = wApp.activedocument.Content myrange.Find.Execute findtext:= 联系电话 :, 从 myrange 结束的到 myrange 后面的 11 个字符替换成相 应内容 Forward:=Truemyrange Forward:=True myrange 定位到“联系电话:” wApp.activedocument.Range(Start:=myrange.End, End:=myrange.End + 11).Text = 449217002@ wApp.activedocument.Save wApp.Quit myfile = Dir Loop Set wApp = Nothing End Sub 思路很简单,找到位置并替换该位置后面相应长度的内容即 可。但是如果我们要替换的内容位置虽然一样,但是其长度 并不相同呢?比如原来留的是 QQ 号,有的是 11 位,有的 是 8 位,现在想要统一成我的 QQ449217002 ,这下不能替 换固定长度了。好办,我们只要替换相应内容之间夹的那部 门就可以了,这里就替换“联系电话:”和“,有任何问题请” 之间的内容,这就是思路二。看代码 Sub TEST2() Dim mypath, myfile, wApp, myrange1, myrange2, i, j mypath = ThisWorkbook.Path amp; \ myfile = Dir(mypath amp; *.docx) Do While myfile lt;gt; Set wApp = CreateObject(word.application) wApp.documents.Open mypath amp; myfile Set myrange1 = wApp.activedocument.Content myrange1.Find.Execute findtext:= 联系电话 :, Forward:=True i = i = myrange1.End 记录下起始位置 Set myrange2 = wApp.activedocument.Content myrange2.Find.Execute findtext:= ,有任何问题请 , Forward:=True j = myrange2.Start wApp.activedocument.Range(Start:=i, End:=j).Text = 449217002@ 449217002@ 替换两个位置之间的内容 wApp.activedocument.Save wApp.Quit myfile = Dir Loop Set wApp = Nothing End Sub 这里只不过是先将起始位置和结束位置提前取出来而已,其 实两个思路并无太大区别,第二个思路适用更广

文档评论(0)

1亿VIP精品文档

相关文档