ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1481|回复: 3

[分享] 邮件合并知识汇总

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-7-1 13:26 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 wangqh8203 于 2021-7-1 13:57 编辑

邮件合并知识汇总
       邮件合并是OFFICE软件中一个比较经典的应用,笔者在高校从事教务工作,日常打印证书、发送考试通知、制作成绩表并发送给学生都需要使用到邮件合并功能,所以这次把邮件合并做了一次系统梳理。

一、     文字类邮件合并
        文字类邮件合并是最基础的操作,上手也很容易,只需在WORD建立模板文档,然后在菜单栏-[邮件]-[选择收件人]-[使用现有列表],然后在打开框中找到对应的EXCEL表即可,在插入合并域中将字段插入到正文对应的位置即可。

选择收件人

选择收件人


在称谓时需要根据性别显示对应的男士/女士,可以用域的if语句:

if条件

if条件

域if

域if





二、     图片类邮件合并
      制作含图片的邮件合并时,插入图片方法:WORD菜单栏-[插入]-[文本]-[文档部件]-[域]-[IncludePicture],在【文件名或URL】输入名称,然后Alt+F9切换在域代码中的“名称”替换为【插入合并域】中【地址】域(地址需要用双斜杠),再次切换显示结果。如果最后图片没有显示,全选,F9刷新域。


三、     表格类邮件合并
       经常要给学生发送成绩单或者给老师发送出题通知,每个学生对应的课程成绩或者老师的出题科目都不一样,要分类归纳整理成表格后才能发送。这里邮件合并中生成表格可以分两种方法,一种只用域代码制作,这种又可以分2种方法。另一种方法是先用邮件合并生成后再用VBA转换成表格。
        首先在做之前先对需要分类的字段排序,添加一个辅助列,如果后续有同类数据记为1,反之记为0。再添加一列辅助列(计数列),计算出分类字段分组后的记录数量。
1.   只用域代码制作(A、B两种方法)

A.  表格行数设置为分组统计的最大值,生成的表格只有最大的分组数量能填满行数,其他分组都有空行,不太美观。

B.  先编辑收件人列表筛选计数列从最小值开始筛选,然后逐次添加表格的行数,在添加域[下一记录]和记录字段。这样做步骤稍微多一些,但思路很简单,容易上手,表格做出来也美观。

2.   域代码结合VBA制作:先用邮件合并生成,其中表格内容用空格做为分隔符,然后再用VBA文本转换成表格命令生成表格。

四、     其他:邮件合并后拆分文档(下面的是用WORD功能实现,用VBA代码实现参见附件里宏代码)
        在学生毕业后需要把邮件合并后的每一条记录单独拆分成WORD存档保存,可以先用WORD邮件合并后再用文档拆分功能进行拆分。首先把模板需要拆分的标题设置为大纲一级(这个就是以后的保存的文件名),之后用邮件合并,接着进入大纲视图,全选文档,点击主控文档里显示文档,选择创建,保存即可。在同一文件夹就有根据标题生成的同名文件。

邮件合并.zip (623.5 KB, 下载次数: 88)


TA的精华主题

TA的得分主题

发表于 2021-7-1 15:49 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-7-5 19:17 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-7-10 20:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
最近同事提出新需求,需要对合并后数据筛选后打印指定的数据,如下图:
QQ截图20210710200845.png
研究了下WdMailMergeActiveRecord常量,主要对wdNextDataSourceRecord和wdNextRecord这两个名称刚开始不是太明白。一个是对应数据源,另一个对应结果集。后来经过测试明白了,含有DataSourceRecord字段的,数据包含的是所有数据源,在邮件合并里是否筛选都不影响,可以在
这里测试看到,指针是在移动的,但是筛选如果没有被选中的,不能用DataSource.ActiveRecord激活。 QQ图片20210710200122.png
如果用wdNextRecord
QQ截图20210710195600.png
那么指针就只会选择第一,第三,第五项记录。第二,第四因为没有选择就自动跳过。
在用for next循环是,提前用wdFirstRecord、wdLastRecord,确定上、下标,就可以避免遍历时进入无限循环或者报错的情况。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 10:26 , Processed in 0.034973 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表