如何实现多个Word文档的自动合并
大家好,我们今日继续讲解VBA代码解决方案的第147讲内容:如何实现多个文档的合并。这一讲是VBA代码解决方案的最后一讲内容了,其实关于WORD中利用VBA的内容还很多,余下的内容就不再这里讲了。这套方案基本上覆盖了整个VBA相关内容的大多数的知识点,VBA作为一种寄生的语言毕竟有着自己的局限性,如果能熟练掌握本套方案的内容,对于工作中遇到的问题基本上能做到得心应手,余下的就是自己提高的过程了。好了,还是回到我们这讲的内容,如果合并多个文档。
日常办公中,合并文档是经常需要处理的,当文件数量较少、文件体积较小时可以轻松应对,但当文件数量较多、文件体积较大时,操作起来就要花费大量的时间和精力,而且很容易出错。比如,每年年末,公司所有员工都要交工作总结,人事部门需要将某部门的总结汇总到一个文件里,以便向总经理汇报。这时就可以借助VBA实现文件的批量操作,大大提高办公效率和准确性。
那么如何利用VBA进行文档的合并呢?首先,我们把所有需要合并的文件都在同一个文件夹中;所有需要合并文件的文件名要有一定的规律,最好是连续的数字。当然如果不是连续的数字也是可以处理的,这个问题朋友们可以自己去考虑,这里我讲的是基本的操作。
我这里有几个文件,放在桌面的一个名为"新建文件夹"的文件夹下面,里面有3个文档,还有一个文档是用来放合并后的文档的,如图:
这个时候的程序该如何写呢:看我下面的代码:
Sub mynzHB()
filedir = "C:\Users\nl\Desktop\新建文件夹" '指定文件存放路径
Application.ScreenUpdating = False '关闭屏幕刷新提高速度
Dim filenum As Integer '要合并的文件数
Dim a As Integer '定义数字变量
Dim FileName1 As String '合并后的文件名
Dim FileName2 As String '定义要合并的文件名变量
filenum = 3
FileName1 = "合并.docx"
a = 1
Do While a <= filenum '由于我是事先知道要合并的数目,所以这里的条件就简单多了
FileName2 = CStr(a) & ".docx" '文件名的处理
ChangeFileOpenDirectory filedir '路径指示
Documents.Open FileName:=FileName2 '打开要合并的文件
Selection.WholeStory '全选
Selection.Copy '复制
ActiveDocument.Close '关闭文件
Documents.Open FileName:=FileName1 '打开合并后的文件
Selection.EndKey Unit:=wdStory '将光标移到文件尾部
Selection.TypeParagraph '插入新段落,避免合并混乱
Selection.PasteAndFormat (wdPasteDefault) '粘贴
ActiveDocument.Save '保存文件
ActiveDocument.Close '关闭文件
a = a 1 '变量加1,然后处理下个文件
Loop
MsgBox "任务完成,共有" & a - 1 & "个文档被合并!" & "请查看文件"
Documents.Open FileName:=FileName1 '打开合并后的文件
End Sub
代码截图;
由于必要的解释我在代码中都加了注释,就不再解释代码了,只看看运行后的"合并"文件;
下面看一看运行过程的录屏:
50
今日内容回向:
1 如何合并几个文档到相同的文件?
2 在本节的实例中,我讲了最为简单的方法,工作中如果是复杂的条件,比如文档的命名不是很规范,你有解决的思路吗?