Word根据Excel数据批量打印照片(各种证书)
Admin | 2008-5-15 20:51:02 | 被阅次数 | 9336
准备工作:准备一份考生信息数据库,可以是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邮件合并实现批量打印带照片证件\\邮件合并[url=file://\\photo\\4220001.jpg]\\photo\\4220001.jpg[/url]"}
指定路径(路径:操作系统用来定位文件夹或文件的路径,例如 C:\Manual\Art\Art 22.gif)时,请以双反斜杠替代单反斜杠。例如: “C:\\Manual\\Art\\Art 22.gif”
IncludePicture域中的文件名路径也可以使用相对路径。如{IncludePicture "邮件合并[url=file://\\photo\\4220001.jpg]\\photo\\4220001.jpg[/url]"},文件保存后则会从文档所在的文件夹下去找对应文件。用相对路径的好处是只要把包含word模板文件、数据库文件和照片文件夹放在一个文件夹内,那么拷贝到其他任何一台安装有office软件的电脑上都可以合并打印了。
Switches 开关,如下:
\c Converter 指定要使用的图形筛选。图形筛选的文件名不带有 .flt 扩展名,例如,输入 picture 表示筛选文件 Picture.flt。
\d 图形数据不随文档保存以减小文件长度。
\* MERGEFORMAT 注意前面的\*是必须的,“*”后面有个空格,所有域代码都有这个开关,用来保存对域结果进行的格式修改。
注意事项:
1.插入域的时候,包含域代码的那一对大括号并不是手工输入的。应该使用Ctrl+F9来插入域(此时会自动插入表示域的那一对大括号),并在其中填写域代码。
2.特别注意,引号内的文件名一定不能写错甚至多加一个空格也不行,否则Word将找不到图片文件,只会出现一个红叉。比如不能写成:
{IncludePicture " e:\\photo\\{MergeField "准考证号"}.jpg"},因为e:前多加了空格。
3.最后还有一点不得不说明,图片只有在应用“嵌入型”版式的时候才可以用于邮件合并。如果选成其它格式,虽然定位方便了,但是邮件合并的时候会不认它。如果确实需要灵活的定位,可以考虑插入一个文本框,去掉边框等属性,并在这个文本框里插入INCLUDEPICTURE域代码,调文本框的位置即可