|
邮件合并,用word读出excel的数列,按道理页眉和正文应该是读的同一行的数据,预览也是对的,
但是只要用了以下代码,页眉总会往后错位一行。正文数据为1 2 3 4,页眉也应该是1 2 3 4,
拆开成单个文件之后会变成 页眉会变成2 3 4 4 ,错一位,最后一行数据会出现两次。
样例.rar
(60.29 KB, 下载次数: 5)
- 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
- '以上创建文件夹,多谢Mn860429卡卡西
- 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个和第2个字段(合并域)的当前数据字符串,用以命名文件
- myname = .DataFields(2).Value & "(" & .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
复制代码
|
|