批量替换多个Word中的回车符

2016年12月15日19:55:51 评论 2,195 views
表格 定制  数据 合并 处理 分析 VBA 编程 开发 网页
表格 定制  数据 合并 处理 分析 VBA 编程 开发 网页

看到一个网友提问说怎么批量替换多个Word文件中的回车符,这个问题很简单,遍历每个Word,然后替换其中的所有回车符即可。最简单的做法是在Word中录制一个宏,然后再加上个循环就好了,这个我们之前有过例子,感兴趣的可以自己试下。那这个网友要求是在Exce中实现这个功能,这个问题我们在“VBA批量替换多个Word中的特定词”一文中也讲过一种替换的方法,循环查找word中的该内容,然后替换,一直到不存在该内容了就退出循环。替换平常的文字是可以的,但是这次要替换的是回车符,不论你怎么替换,段落最后一个回车符是一直存在的,所以如果还用上面的方法就陷入无限循环了。

为了解决上面的问题,这次我们直接把录制好的Word VBA整个搬到Excel VBA中来,用word VBA 中的全部替换方法就没有这个问题了。

下面是我在Word中录制的宏

Sub 宏1()
'
' 宏1 宏
'
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^p"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

下面把这段代码移到Excel中并加上循环

    Sub 批量替换word中回车()
Dim mypath, Newname, i, XB, wApp, myfile
mypath = ThisWorkbook.Path & "/"
myfile = Dir(mypath & "*.docx")
Do While myfile <> ""
Set wApp = CreateObject("word.application")
With wApp
.Visible = True
.Documents.Open mypath & myfile
With .Selection.Find
.Text = "^p"
.Replacement.Text = ""
.Wrap = 1
.Forward = True
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
.Selection.Find.Execute Replace:=2
.Documents.Save
.Quit
End With
myfile = Dir
Loop
Set wApp = Nothing
End Sub

这段移植就是要建一个Word对象,然后所有Word中用到的命令都要在前面加上这个Word对象,否则Excel不识别,还有一点关键的地方,在Word中的VBA常量wdFindContinue和wdReplaceAll在Excel中是不识别的,需要你把他们换回数值,那你说我不知道这个常量到底代表哪个数值怎么办?可以百度,更好的方法是在Word中运行录制的宏,在运行过该常量时中断,把鼠标放了该常量上就会显示它的值了,很简单。

本节不加示例文件了,主要目的不在此,主要是为了讲怎么把Word VBA移植到Excel中来。

  • 郑广学老师微信号
  • EXCEL880B
  • weinxin
  • 我的微信公众号
  • EXCEL880
  • weinxin

发表评论

您必须才能发表评论!