现在的位置: 首页 > 综合 > 正文

Word 邮件合并

2011年02月17日 ⁄ 综合 ⁄ 共 949字 ⁄ 字号 评论关闭
 

这两天遇到一个问题,客户需要将数据库中的应聘信息通过word打印出来,于是我们就把数据库记录导出到Excel文件中,客户自行制作word模版文档,然后使用邮件合并功能打印Excel中的数据,但在处理应聘者的像片时遇到一个问题。

 

Excel文件中存储的是应聘者的像片文件路径,但在word打印的时候,需要打印出实际的像片,由于数据比较多(2000条左右),一个一个去插入像片实在不可取,于是想继续用插入域的方式来处理:

 

理论上应该是可以的,实际使用的时候就发现,总是显示第一张像片,需要手工按F9来刷新像片,如果使用“合并到新文档”后,就根本不能刷新了。这的确是个头痛的问题。

 

折腾了半天,制作了一个宏:

Sub 预览()

'

' 预览 Macro

' 宏在 2005-2-25 由 xxx 录制

'

Dim data As MailMergeDataSource

Set data = ActiveDocument.MailMerge.DataSource

data.ActiveRecord = wdFirstDataSourceRecord

Selection.Fields.Update

For i = 1 To data.RecordCount

ActiveDocument.PrintPreview

MsgBox ("第" + Str(i) + "条记录打印完毕。")

'ActiveDocument.PrintOut

data.ActiveRecord = wdNextRecord

Selection.Fields.Update

Next

End Sub

 

呵呵,很笨吧,首先定位到第一条记录,然后刷新像片(打开文档的时候,首先要选中像片域),打印,移到下一条记录,直到所有记录都打印完毕。

 

虽然这样把问题解决了,可总觉得不爽,而且不能合并到新文档,如果要再作一些处理,或者只打印几个总是不方便。想一想,如果模版文档只是插入INCLUDEPICTUR域代码而不是实际的像片,由合并后的文档来实现实际的像片插入那就更合适了。

 

通过在Office Online网站上查找关于域的资料,发现有一个SET域可以设置标签,于是就这样来处理:

 

 

呵呵,真还可以了,合并后的文档中,包含了这样的内容:

 

切换到域结果视图(Ctrl+F9),然后全选(Ctrl+A),再按F9更新域,一切OK

 

抱歉!评论已关闭.