PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

从EXCLE提取数据到WORD,邮件合并代码【王佩丰版本】

[复制链接]
跳转到指定楼层
1#
haierccc 发表于 2015-6-9 21:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:2565|回复数:0
本帖最后由 haierccc 于 2015-6-9 21:28 编辑

如果你在办公室、人力资源部混过,肯定会有一个需求:从EXECL表里提取数据,合并到WORD表格。比如下图有一张发放工资的EXCEL表格:




你需要表格里的数据提取到WORD文档里去:
这有2种情况,1是所有的人都进入一份WORD文件,每个人单独一页:


张三:你本月工资为:4000元整


.........下一页.............


李四:你本月工资为:5000元整


.........下一页............


王五:你本月工资为:6000元整


2是每个人单独的一个WORD文档,以人名命名:
张三工资条.doc、李四工资条.doc、王五工资条.doc


以上2种情况都有解决方法,具体看这里:
http://v.youku.com/v_show/id_XNDA3MjEzODQw.html?from=s1.8-1-1.2
http://v.youku.com/v_show/id_XNDA3MjM0MjY0.html?from=s1.8-1-1.2

对于多人在同一个文档,可以很方便的使用“邮件合并”功能,但对于每个人单独一个文档,就需要VBA代码了。
上面的视频很模糊,根本看不清VBA代码是什么。我从百度里找到了这段代码,贴在下面:
Sub myMailMerge()
'主文档的类型为信函
'合并全部数据记录
'假设主文档已链接好数据源,可以进行正常的邮件合并
Dim myMerge As MailMerge, i As Integer, myname As String
Application.ScreenUpdating = False
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(1).Value & .DataFields(2).Value & "abc"
            .ActiveRecord = wdNextRecord
            .Parent.Execute  '每次合并一个数据记录
            With ActiveDocument
                .Content.Characters.Last.Previous.Delete  '删除分节符
                .SaveAs "E:\" & myname & ".doc"  '假设生成的各文档保存于E盘根目录下
                .Close  '关闭生成的文档(已保存)
            End With
        Next
    End If
End With
Application.ScreenUpdating = True
End Sub


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部