前段时间有个网友请教松哥一个关于word邮件合并的问题,他有一张Excel表,里面是一些测量的数据。
这个excel表大概有2000行,现在有三个需求:
1.将这些数据按顺序粘贴到下面的word表格里面;
2.表格填充满以后自动换页;
3.不同的日期需要换页。
我这里直接说一下做法。
第一步:先在邮件合并数据源的excel表内加一列“条件”,对当前行和下一行的日期是否一致进行条件判断,如果当前这一行和下一行的日期相等,那么就返回1,如果不相等,就返回0。
第二步:使用常规邮件合并方法插入第一行合并域
第三步:设置word表格中其他行的域代码
在第二行第一个空白单元格中,先按下ALT+F9进入域代码编辑状态,然后按CTRL+F9,出现一对大括号{},注意这个大括号一定是要通过组合键出来,手工输入是无效的。
在大括号中输入set a "" ,a可以自己指定其他的名称。在set a ""这三者之间都要有空格。然后将光标定位到“”中间,在菜单中选择“插入合并域”,选择“条件”字段。这样就会得到{ set a "{MERGEFIELD 条件}"}这样的域代码。这段代码的意思就是将excel条件这一列的对应的这组值赋值给变量a
接下来在规则菜单内选择“下一记录条件”,比较条件选择“等于”,比较对象框中输入1点击确定 。此时在前面的代码后面就出现了{NEXTIF {MERGEFIELD 条件} = 1 }这样的代码,这句代码用来判断当前记录的条件值是否等于 1 ,如果当前条件的值等于1,就显示下一条记录,因为这个命令只能控制一条记录,因此,如果在一页上要显示 10条记录,就要把这个命令再复制8份。
但是光这样做还是不行,如果某一天的记录少于10 条,word就会用另外一天的记录来填满整个表格,但这不是我们想要的结果,所以我们还要加上一个逻辑判断:如果条件= 1,就显示这一条记录,否则就显示为空:{ IF a = 1 { MERGEFIELD "桩号" } "" }
再移到第二行其他列单元格中,按上面一个步骤输入,只需要输入第三个逻辑判断,将其中的”桩号”更换为“里程”等字段。第二行完成以后将内容复制到其他行中,这样就完成了域代码的编辑工作。
再按下ALT+F9退出域代码编辑状态
第四步:完成合并,部分效果图入下