> 文章列表 > 如何实现多个Word文档的自动合并

如何实现多个Word文档的自动合并

大家好,我们今日继续讲解VBA代码解决方案的第147讲内容:如何实现多个文档的合并。这一讲是VBA代码解决方案的最后一讲内容了,其实关于WORD中利用VBA的内容还很多,余下的内容就不再这里讲了。这套方案基本上覆盖了整个VBA相关内容的大多数的知识点,VBA作为一种寄生的语言毕竟有着自己的局限性,如果能熟练掌握本套方案的内容,对于工作中遇到的问题基本上能做到得心应手,余下的就是自己提高的过程了。好了,还是回到我们这讲的内容,如果合并多个文档。

日常办公中,合并文档是经常需要处理的,当文件数量较少、文件体积较小时可以轻松应对,但当文件数量较多、文件体积较大时,操作起来就要花费大量的时间和精力,而且很容易出错。比如,每年年末,公司所有员工都要交工作总结,人事部门需要将某部门的总结汇总到一个文件里,以便向总经理汇报。这时就可以借助VBA实现文件的批量操作,大大提高办公效率和准确性。

那么如何利用VBA进行文档的合并呢?首先,我们把所有需要合并的文件都在同一个文件夹中;所有需要合并文件的文件名要有一定的规律,最好是连续的数字。当然如果不是连续的数字也是可以处理的,这个问题朋友们可以自己去考虑,这里我讲的是基本的操作。

我这里有几个文件,放在桌面的一个名为\"新建文件夹\"的文件夹下面,里面有3个文档,还有一个文档是用来放合并后的文档的,如图:

如何实现多个Word文档的自动合并

这个时候的程序该如何写呢:看我下面的代码:

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

代码截图;

如何实现多个Word文档的自动合并

由于必要的解释我在代码中都加了注释,就不再解释代码了,只看看运行后的\"合并\"文件;

如何实现多个Word文档的自动合并

下面看一看运行过程的录屏:

重播播放