Word根据Excel数据批量打印照片(各种证书)

准备工作:准备一份考生信息数据库,可以是Word创建的数据源,也可以像Excel工作簿、Access数据库、Query文件、Foxpro文件,都可以作为邮件合并的数据源。只要有这些文件存在,邮件合并时就不需要再创建新的数据源,直接打开这些数据源使用即可。需要注意的是:在使用Excel工作簿时,必须保证数据文件是数据库格式,即第一行必须是字段名,数据行中间不能有空行等。这样可以使不同的数据共享,避免重复劳动,提高办公效率。例如:一个EXCEL工作薄里面包含了编号、准考证号、考生姓名及其他相关信息的字段,要批量打印照片的话,还需要加一个照片的路径和文件名的字段(如果照片的文件名正好是考生的准考证号或姓名的话,可免),假设照片放在e:/photo文件夹里,每位考生的照片文件名和准考证号相对应(如果用姓名的话可能会碰到同名同姓的问题)。数据准备工作的正确与否,关系到以后打印出来的证件正确与否,所以必须要仔细校对正确。

  接下来的工作就是要设计邮件合并的模板了,步骤如下:

  1.启动word程序,从菜单栏中选择“工具――邮件合并”,将出现“邮件合并帮助器”对话框;

  2.在“邮件合并帮助器” 对话框中的第一步“主文档”中单击“创建” 下拉按钮,选择“套用信函” (如果想在一张纸上打印多份的话,选择“分类”),再在出现的对话框中点击“活动窗口(A)”按钮。

  3.在“邮件合并帮助器”对话框中点击“获取数据(G)”下拉按钮,选择“打开数据源(O)…”,在出现打开文件对话框中打开刚保存的Excel电子表格,点击“确定”并在弹出的对话框中点击“编辑主文档(M)”,这时你会发现在工具栏中多了一栏邮件合并工具栏;

  4.然后画好表格填好项目,进行排版、设置纸张,再把光标置于要插入相应项目的位置,点击“邮件合并”工具栏的“插入合并域”下拉菜单(下拉菜单中的相应选项与Excel数据表格中的标题行是一一对应的),然后单击下拉菜单中的相应选项,直至插入所有只包含文字的域。

  5.下面是实现批量打印照片的关键一步,就是照片域的实现:

  先把光标定位在要插入照片的地方,按Ctrl+F9插入一个域,输入“IncludePicture "e://photo//”(不包含外侧双引号),再按Ctrl+F9插入一个域,输入“MergeField "准考证号"”,光标定位到这个域之后输入“.jpg"”,最后看到的    结果应该是:

  {IncludePicture "e://photo//{MergeField "准考证号"}.jpg"}。(这一步思路很好,用“准考证号”后就省得为每个文件输入路径了)

  现在保持光标在域中,按Shift+F9将代码转换为结果,也就是把图片内容显示出来。这时候如果什么也没显示,不要慌,按个F9刷新一下域就行了。其实,在按Shift+F9之前直接按F9刷新域也可以显示出来图片。不过图片大小似乎不太合适,调整一下吧。

  6.然后单击合并到新文档按钮,切换到生成的新文档里,咦,怎么照片处什么都没有?不会是上当了吧?
别急,保存生成文件(不用关闭文件再打开),按Ctrl+A全选,再按F9,哈哈,每位考生对应的照片是不是全出来了。^_^
不对……好像所有的图片好像显示的都是第一个人的照片。没关系,全选这个Word文档,然后按F9对所有域进行刷新。这时候图片应该都换成了正确的图片,如果还没有——也许Word有这么个BUG——那你就先把这个文档保存下来,关闭,再打开,全选,F9刷新。
  图片刷新的问题是解决了,但是又出现了另一个问题,图片大小都变成调整前的了。也就是说,我们插入INCLUDEPICTURE域之后所做的调整,全都失效。查查Word的帮助文档,可以找到,所有域代码都可以有一个开关,用来保存对域结果进行的格式修改: /* MERGEFORMAT(注意前面的/*是必须的,“*”后面有个空格)。所以,将上面的INCLUDEPICTURE域代码修改为{ INCLUDEPICTURE "e://photo//{MergeField "准考证号"}.jpg" /* MERGEFORMAT }
在邮件合并模板中F9刷新显示图片,调整图片,再合并成新文档,刷新全部域——OK,这次全都是调整后的格式了。
实际上插入一张照片使用的域是{IncludePicture "e://photo//001.jpg"},插入准考证域用的是{MergeField "准考证号"},而本文把这两个域嵌套起来就成了{IncludePicture "e://photo//{MergeField "准考证号"}.jpg"}从而实现了本文最初提出的要求――批量打印照片。
如果想打印在学籍、证件、档案上,在准备好数据库文件的情况下,对主文档模板作相应设计修改,同样也可以实现,可谓一举多得,不用再找专用软件来批量打印照片啦。
建议使用word2000,在word 2003中插入文字域的方法比较烦,在这里不一一表述了。

  附:"INCLUDEPICTURE"的Word域的用法:
  域用法:{ INCLUDEPICTURE "FileName" [Switches ] }
  "FileName" :图形文件的名称和位置。
  如果其中包含较长的带空格文件名,请用引号引住。如{IncludePicture  "D://Documents and Settings//Administrator//桌面//用Word邮件合并实现批量打印带照片证件//邮件合并//photo//4220001.jpg"}
指定路径(路径:操作系统用来定位文件夹或文件的路径,例如 C:/Manual/Art/Art 22.gif)时,请以双反斜杠替代单反斜杠。例如:  “C://Manual//Art//Art 22.gif”
  IncludePicture域中的文件名路径也可以使用相对路径。如{IncludePicture "邮件合并//photo//4220001.jpg"},文件保存后则会从文档所在的文件夹下去找对应文件。用相对路径的好处是只要把包含word模板文件、数据库文件和照片文件夹放在一个文件夹内,那么拷贝到其他任何一台安装有office软件的电脑上都可以合并打印了。
Switches 开关,如下:
  /c   Converter 指定要使用的图形筛选。图形筛选的文件名不带有 .flt 扩展名,例如,输入 picture 表示筛选文件 Picture.flt。
  /d  图形数据不随文档保存以减小文件长度。
  /* MERGEFORMAT  注意前面的/*是必须的,“*”后面有个空格,所有域代码都有这个开关,用来保存对域结果进行的格式修改。

  注意事项:

  1.插入域的时候,包含域代码的那一对大括号并不是手工输入的。应该使用Ctrl+F9来插入域(此时会自动插入表示域的那一对大括号),并在其中填写域代码。
  2.特别注意,引号内的文件名一定不能写错甚至多加一个空格也不行,否则Word将找不到图片文件,只会出现一个红叉。比如不能写成:
{IncludePicture " e://photo//{MergeField "准考证号"}.jpg"},因为e:前多加了空格。
  3.最后还有一点不得不说明,图片只有在应用“嵌入型”版式的时候才可以用于邮件合并。如果选成其它格式,虽然定位方便了,但是邮件合并的时候会不认它。如果确实需要灵活的定位,可以考虑插入一个文本框,去掉边框等属性,并在这个文本框里插入INCLUDEPICTURE域代码,调文本框的位置即可


IT时代网(关注微信公众号ITtime2000,定时推送,互动有福利惊喜)所有原创文章版权所有,未经授权,转载必究。
创客100创投基金成立于2015年,直通硅谷,专注于TMT领域早期项目投资。LP均来自政府、互联网IT、传媒知名企业和个人。创客100创投基金对IT、通信、互联网、IP等有着自己独特眼光和丰富的资源。决策快、投资快是创客100基金最显著的特点。

相关文章
中芯国际联手国家队斥500亿投建12吋晶圆制造 什么信号?
中芯国际等被美列黑名单 外交部:坚决反对美方无端打压中国企业
中芯国际遭“断粮”背后:芯片产业链加速国产化
被美国列入“黑名单”?中芯国际:未收到此类官方消息

精彩评论