最近在学习过程中,需要对几百个word文档的内容进行相同的替换操作,例如删除某些数字,或者替换某些文件,或者增加相同的内容;
刚开始,一个一个操作,十几篇文档就花费十几分钟,几百个文档就一个下午就没有了,而且是不停的操作才能完成;
突然想到这句话:任何重复性的操作都可以都软件代替,本来准备用C#,但是电脑才重装系统,所以就用了简单的VBA工程实现了,目前能用;
Sub wordReplace()
Dim myPath, myFile, sr
Dim wdapp, wdDoc
Application.ScreenUpdating = False '冻结屏幕,以防屏幕抖动
myPath = ThisWorkbook.Path & "\" '把文件路径定义给变量
myFile = Dir(myPath & "*.docx") '依次找寻指定路径中的*.docx文件
Set wdapp = CreateObject("Word.Application")
wdapp.Visible = True
On Error Resume Next '捕捉错误
Do While myFile <> "" '当指定路径中有文件时进行循环
Set wdDoc = wdapp.Documents.Open(ThisWorkbook.Path & "\" & myFile) '打开
wdDoc.Activate
sr = wdDoc.Content '将word的文档内容赋予变量sr
sr = Replace(sr, "XXX", "")
sr = Replace(sr, "XXX2", "")
sr = Replace(sr, "原字符", "更新字符")
sr ="文档开头增加的内容" +sr
sr =sr+"文档结尾增加的内容"
wdDoc.Content = sr ' 更新至word中
wdDoc.Save ' 保存
wdDoc.Close '关闭word
Set wdDoc = Nothing
myFile = Dir '找寻下一个*.xls文件
Loop
wdapp.Quit
Set wdapp = Nothing
Application.ScreenUpdating = True '冻结屏幕,此类语句一般成对使用
End Sub