在日常办公中,我们经常需要处理大量的WORD文档,很多情况下这些文档需要处理的操作是相同的,比如批量进行页面格式设置,批量替换某些文字等等,如果能够实现对这些文档的批量处理效率岂不高多了!
下面教大家怎么实现,整个过程用到了Word的VBA编程,但是你根本不需要懂一句代码,通过四步就可以搞定。
第一步:打开一个要处理的Word文档
第二步:调出Word开发工具选项卡
第三步:录制操作过程
勾选后确定,会发现Word多了一个开发工具选项卡,点击该选项卡,点录制宏按钮。Word会记录你的每一步操作。比如简单输入几个字ABCDEF
对Word操作完成后,点停止录制。然后再点 Visual Basic 按钮,会出现下面的界面:
上面的宏1就是刚才录制的代码,将光标放到代码区域,也就是 第一行到第五行的区域范围,然后点运行按钮,你会发现Word中多了一个ABCDEF,是不是很神奇?
第四步:实现批量处理
通过上面的方法我们把处理一个文档的方法记录了下来,如何批量处理多个文档呢,也很简单。把下面的代码复制到刚才录制的代码前面, 设置第4行和第5行的内容,就大功告成了。
测试:将光标放到 开始批处理代码块中,按执行按钮,程序会自动打开指定文件夹下的每一个Word文档(包括子文件夹文档),并在每一个文件头插入ABCDEF六个字母,然后自动关闭Word文档。所有文档处理完毕后会弹出一个”批量处理完毕!“ 的对话框。
录制不同的宏,可以进行各种各样的批量处理,怎么样,是不是感觉功能太强大了?所有这些我们不用写一行代码就可以实现,当然你有一定的编程基础的话,还可以修改录制的宏或者编写更加复杂的宏功能。我们也会不定期发布一些常用的宏功能,供大家调用。所以请大家关注我们的头条号,及时获取最新资料。
说明:Word的录制宏的功能,不能录制所有操作,尤其一些鼠标操作录制效果不好,如果想在这方面深入体会的话可以下载安装Office 2003 ,录制的效果是所有office版本中最好的。
Private myFun As String
Sub 开始批量处理() ‘
dim myDir as string
myFun = “宏1” ‘修改成录制的宏名称
myDir= “D:\\我的文件夹\\” ‘修改成要处理的Word文档所在的文件夹
SearchFiles myDir, “*.doc ‘批量处理doc格式文档
SearchFiles Mydir, “*.docx” ‘批量处理docx格式文档
MsgBox “批量处理完毕!”, vbInformation + vbApplicationModal
End Sub
‘功能:这个函数可以遍历指定一个目录下的所有文件,包括子目录.也可以指定文件类型遍历。
‘用法:SearchFiles “C:\\Program Files\\WinRAR\\”, “*” ‘查找所有文件
Function SearchFiles(Path As String, FileType As String)
Dim Files() As String ‘文件路径
Dim Folder() As String ‘文件夹路径
Dim a, b, c As Long
Dim sPath As String
If Right$(Path, 1) “\\” Then Path = Path & “\\”
sPath = Dir(Path & FileType) ‘查找第一个文件
Do While Len(sPath) ‘循环到没有文件为止
a = a + 1
ReDim Preserve Files(1 To a)
Files(a) = Path & sPath ‘将文件目录和文件名组合,并存放到数组中
Documents.Open Files(a)’打开文件
Application.Run myFun’执行自定义函数
ActiveDocument.Close‘关闭文件
sPath = Dir ‘查找下一个文件
DoEvents ‘让出控制权
Loop
sPath = Dir(Path & “\\”, vbDirectory) ‘查找第一个文件夹
Do While Len(sPath) ‘循环到没有文件夹为止
If Left$(sPath, 1) “.” Then ‘为了防止重复查找
If GetAttr(Path & “\\” & sPath) And vbDirectory Then ‘如果是文件夹则。。。。。。
b = b + 1
ReDim Preserve Folder(1 To b)
Folder(b) = Path & sPath & “\\” ‘将目录和文件夹名称组合形成新的目录,并存放到数组中
End If
End If
sPath = Dir ‘查找下一个文件夹
DoEvents ‘让出控制权
Loop
For c = 1 To b ‘使用递归方法,遍历所有目录
SearchFiles Folder(c), FileType
Next
End Function