笨人笨办法之用excel批量打印qsl卡片
作者:bd5cdi 本贴转自无线电dx联盟 www.cqcqcq.com.cn
通联多了,填写卡片是件头痛的事,当然你可以打印成标签一张一张贴,但当卡片用完了或者还没来得及印卡片的时候,用卡纸打印不失为一个好办法。老ham有用专门软件的,如bv7等,下载安装后却一头雾水,好象还要先制作模板,挺复杂的,只好放弃了。有将excel与word结合起来,使用邮件合并功能快速批量打印的,不过用邮件合并稍显复杂。偶尔在网上找到一篇用excel vlookup函数实现批量打印功能的文章,觉得很方便、很实用,于是乎拿来主义,依葫芦画瓢做了模板用excel批量打印qsl卡片,试用后自我感觉还不错。
先用excel建立模板:

sheet2 为通联记录

为实现批量打印,还得新建宏,不会vb,只好照抄,不过还很管用
sub dy()
on error resume next
x = inputbox("请输入打印起始序号:", "提示")
y = inputbox("请输入打印结束序号:", "提示")
for i = x to y
cells(2, 2) = i
activewindow.selectedsheets.printout from:=1, to:=1, copies:=1, collate:=true
i = cells(2, 9)(为实现一张卡片打印多条记录,记数器重置了一下)
next i
end sub
功能实现:
b2为记数器,在b2中输入数字即可打印对应序号的qso记录
c11为对方呼号,根据b2中数值在sheet2对应行中第三例查找呼号
函数为:=vlookup(b2,sheet2!a1:g1000,3,false)
b15-f15为对应的日期、时间、波段、rst和模式,函数同上。
为实现一张卡片打印多条记录,先在i16-n20中依据上述方法查找出b2+1至b2+5(共打印6条记录)的qso,同时在i2将记数器重置,若呼号相同,则记数器累进1,函数为:
=if(i20=c11,b2+5,(if(i19=c11,b2+4,(if(i18=c11,b2+3,if(i17=c11,b2+2,if(i16=c11,b2+1,b2)))))))
下面就简单了,
b16:如果i16=c11即呼号相同,则i16=j16否则打印“—”,其它记录同理。
接下来把b2字体颜色设为白色,免得打印出来,把g例以后的都隐藏起来,在sheet2插入记录后就可以打印了。
注意:log导出转换成excel按固定格式编缉好复制到sheet2中,序号要大于实际qso数5以上,避免最后4条记录无法打印或打印出错符号,不要在sheet2直接编辑,以免出错。


现在可以开始打印了,运行宏,按提示输入,放入事先裁好的纸张(别忘了设置好打印纸尺寸),然后就看你的打印机的速度了,用hp1020打了近700张卡片耗时近4个小时,你所要做的只是加纸再加纸。


