
当我们需要批量生成名片,合同,成绩单等有相同内容的文件时,使用word邮件合并功能非常方便。如果你还需要把word文件发给不同的人就需要再拆分一下,用复制粘贴的方法拆分word,数量一多不仅效率低,还会因为文档格式变化变得不一样,如果有图片的话又无法用大纲视图拆分,如果转成PDF文件再拆分后再转回word,格式还是会有变动,对于喜欢完美的强迫症患者来说,这真的是难以接受。
其实就算有图片或表格,也是可以完美拆分的,下面我用word2010给大家举个例子演示一下这套方法的完整流程。
年底了,老板让助理给手下的10名一线员工写一封表扬信,对他们在公司的辛苦工作表示肯定,同时也调研一下他们对公司的期望,为了方便回收整理,以邮件附件的形式发给对方。
1. 准备好需要替换的EXCEL数据源

2. 打开word模板文件

3.邮件合并









如果插入域的格式不是文本,注意邮件合并之前修改域代码,即选择插入的域,右键选择“切换域代码”,在“”输入想要对应的格式,如日期格式:@“yyyy-mm-dd”


注:第一次使用邮件合并会在合并后生成新文档“信函1”,如果想要拆分成单个文件,记得先将生成的信函关闭。
4.文件拆分


点击运行后会在当前word文件目录下生成“拆分后文档”,运行结果如下:

代码:
Sub myMailMerge()
'主文档的类型为信函
'合并全部数据记录
'假设主文档已链接好数据源,可以进行正常的邮件合并
Dim myMerge As MailMerge, i As Integer, myname As String, t As String
t = ActiveDocument.Path
Set fso = CreateObject("scripting.filesystemobject")
If (fso.folderexists(t & "拆分后文档")) Then
Else
Set f1 = fso.createfolder(t & "拆分后文档")
End If
Set myMerge = ActiveDocument.MailMerge
With myMerge.DataSource
If .Parent.State = wdMainAndDataSource Then
.ActiveRecord = wdFirstRecord
For i = 1 To .RecordCount
.FirstRecord = i
.LastRecord = i
.Parent.Destination = wdSendToNewDocument
'取得数据源第1个数据字符串,用以命名文件
myname = .DataFields(1).Value
.ActiveRecord = wdNextRecord
.Parent.Execute '每次合并一个数据记录
With ActiveDocument
.Content.Characters.Last.Previous.Delete '删除分节符
.SaveAs t & "拆分后文档" & myname '生成的各文档保存目录
.Close '关闭生成的文档(已保存)
End With
Next
End If
End With
Application.ScreenUpdating = True
MsgBox "拆分操作完毕!" & vbCrLf & "请到本目录下“拆分后文档”文件夹查看!!", vbInformation
End Sub

