荣县新型农村合作医疗服务中心
刘毅
摘要 本文介绍了用VBA作为开发语言,在EXCEL中设计连续打印现金支票和电汇凭证的例子,并给出了源程序。
在本单位的实际工作中,每月都要手工开写大量的现金支票和电汇凭证的票据,工作量相当大,一不小心就极易出错,一丁点错就要重新开。到网上找相应的程序,找到的不是要出钱,就是不能适用于本单位的连续开票。因此,就利用自己所学的知识,支票图片和每月开票的数据导入到EXCEL中,再利用VBA设计将导放的数据输入进指定的单元格,实现连续打印到电汇凭证中。
实现过程:
一、在EXCEL中建立如下四个工作表:
1、将两种票据扫描后导入到EXCEL中。
先将以下两张票据用扫描仪扫描为分辨率为100dpi的图片,再将这两张图片分别设置为“支票打印”和“电汇凭证打印”工作表的背景:单击“格式/工作表/背景”,在弹出的对话框中,选择插入刚扫描的补助结算单的图片。再单击“视图/显示比例/自定义”,将显示比例调整为106。通过拖动行、列标题的边界调整行高列宽,再配合使用格式工具栏中的“合并及居中”按钮,让支票中要每个要填写的位置均正好与一个单元格重合。调整好页面设置,使需要打印的内容能打印在合适的位置,便能达到所见即所得的效果,如图1和图2。
2、将需要的数据分别录入“新农合拨款统计表”和“银行帐号”工作表中。
在“新农合拨款统计表”工作表中,第一列为拨款的单位,从二列开始为每月拨款所需要的数据,每月占四列。
在“银行帐号”工作表中,第一列为拨款的单位的开户单位全称,但必须与“新农合拨款统计表”工作表中的顺序保持一致。第二列为开户行,第三列为银行帐号。
二、在工作表中设置公式及格式。
先设置“支票打印”工作表中的公式及格式。 在图1的现金支票中,在以下单元格中设置如下公式:
图1
1、设置小写日期数字的单元格有:
C12:: =year(now()); F12: =month(now()); H12: = day(now()) 2、设置大写日期数字的单元格有:
Q4: = TEXT(LEFT(C12,1),\"[DBNum2]G/通用格式\")&TEXT(MID(C12,2,1),\"[DBNum2]G/通用格式\")&TEXT(MID(C12,3,1),\"[DBNum2]G/通用格式\")&TEXT(RIGHT(C12,1),\"[DBNum2]G/通用格式\")
R4: = IF(F12<11,\"零\通用格式\") 若月份小于11月,则在月份前再加上大写零。
U4: = IF(OR(H12<10,MOD(H12,10)=0),\"零\通用格式\") 若日期数字为整拾的,则在日期前再加上大写零。 3、设置缩小字体填充格式:
由于收款人和用途这两项的长度是可变的,因此这两项有关的单元格都要设置为缩小字体填充格式。选中C13、C15、O5、N10单元格,单击“格式/单元格/对齐”,将“缩小字体填充”复选框打上勾。
4、设置银行帐号的单元格格式:
选中AB5单元格,单击“格式/单元格/数字”,选择“文本”格式。 5、设置小写金额格式或公式:
(1)选中C14单元格,单击“格式/单元格/数字”,选中货币格式。
(2)在支票右边的分隔开的小写金额中,分别在以下单元格分别输入以下公式: Z8:=IF(C14>=100000000,MID(RIGHTB(C14*100,11),1,1),IF(C14>=10000000,\"¥\AB8:=IF(C14>=10000000,MID(RIGHTB(C14*100,10),1,1),IF(C14>=1000000,\"¥\AC8:=IF(C14>=1000000,MID(RIGHTB(C14*100,9),1,1),IF(C14>=100000,\"¥\AD8:=IF(C14>=100000,MID(RIGHTB(C14*100,8),1,1),IF(C14>=10000,\"¥\AE8:=IF(C14>=10000,MID(RIGHTB(C14*100,7),1,1),IF(C14>=1000,\"¥\AF8:=IF(C14>=1000,MID(RIGHTB(C14*100,6),1,1),IF(C14>=100,\"¥\AG8:=IF(C14>=100,MID(RIGHTB(C14*100,5),1,1),IF(C14>=10,\"¥\AH8:=IF(C14>=10,MID(RIGHTB(C14*100,4),1,1),IF(C14>=1,\"¥\AI8:=IF(C14>=1,MID(RIGHTB(C14*100,3),1,1),IF(C14>=0.1,\"¥\AJ8:=IF(C14>=0.1,MID(RIGHTB(C14*100,2),1,1),IF(C14>=0.01,\"¥\AK8:=IF(C14>=0.01,RIGHTB(C14*100,1),\" \")
公式的前面部份为提供相应位置的小写数字,后面部份为在整个小写金额的有效最高位前面加上¥符号。
6、设置大写金额格式的公式:
(1)在P7单元格中,输入如下公式,设置完整的大写金额:
=IF(C14<0,\"无效数值\元\")&IF(INT(C14*10)-INT(C14)*10=0,IF(INT(C14)*(INT(C14*100)-INT(C14*10)*10)=0,\"\零\"),IF(AND((INT(C14)-INT(C14/10)*10)=0,INT(C14)>0),\"零
\"&TEXT(INT(C14*10)-INT(C14)*10,\"[dbnum2]\")&\"角\角\"))&IF((INT(C14*100)-INT(C14*10)*10)=0,\"整\分\")))
这样现金支票中的所有格式都设置好了。依照同样的原理,将“电汇凭证打印”工作表中也设置好格式和公式。
图2
三、在EXCEL中建立VBA语句,实现支票、电汇凭证的套打及电汇凭证的连续打印
为防止用户误删除工作表的公式及格式,将此文件设置为一打开就立即执行宏,由宏提示用户进行选择输入。由于现金支票几天才开一张,而电汇凭证对各医院转帐时一开就连续开,因此现金支票每次打开文件时,选择运行现金支票的程序后只需运行一次就行了,而打印电汇凭证的程序则需多次运行,则要再建立一个宏,并指定一个快捷键,每按一次快捷键,就运行一次该宏,就打印一个单位。
(一)、首先建立连续打印电汇凭证的宏:
单击中“工具/宏/宏”,在弹出的对话框中先输入宏的名字next_zp,再点击创建,如下图
点击创建后,出现如下图的界面,
在最右边的下拉列表框中选择声明,在声明中输入全局变量:
Public h As Integer, z, y, zp, sm As String ’h为行数的变量;y为月份的变量;sm为用途说明;zp为支票的种类选择,z为电汇凭证中的地址变量。
Sub next_zp() h = h + 1
Worksheets(4).Select
Worksheets(4).Cells(7, 24) = z
Worksheets(4).Cells(5, 19) = Worksheets(2).Cells(h, 2) Worksheets(4).Cells(6, 19) = Worksheets(2).Cells(h, 4) Worksheets(4).Cells(8, 19) = Worksheets(2).Cells(h, 3) Worksheets(4).Cells(9, 4) = Worksheets(1).Cells(7, 16) Worksheets(4).Cells(13, 14) = Worksheets(1).Cells(15, 3) Worksheets(4).Cells(10, 22) = Worksheets(1).Cells(8, 26) Worksheets(4).Cells(10, 23) = Worksheets(1).Cells(8, 28) Worksheets(4).Cells(10, 24) = Worksheets(1).Cells(8, 29) Worksheets(4).Cells(10, 25) = Worksheets(1).Cells(8, 30) Worksheets(4).Cells(10, 26) = Worksheets(1).Cells(8, 31) Worksheets(4).Cells(10, 27) = Worksheets(1).Cells(8, 32) Worksheets(4).Cells(10, 28) = Worksheets(1).Cells(8, 33)
Worksheets(4).Cells(10, 29) = Worksheets(1).Cells(8, 34) Worksheets(4).Cells(10, 30) = Worksheets(1).Cells(8, 35) Worksheets(4).Cells(10, 31) = Worksheets(1).Cells(8, 36) Worksheets(4).Cells(10, 32) = Worksheets(1).Cells(8, 37) End Sub
退出这个编辑程序并保存。再设置该宏的快捷键:
在EXCEL中,单击“工具/宏/宏”,在宏对话框中选中nexp_zp,点击“选项”,设置快捷键为Ctrl+M。则打开这个文件,会先自动运行下面步骤建立的宏,若选择打印电汇凭证,则会打印一个单位的。要再打其他单位的电汇凭证,则按Ctrl+M就会打印下一个单位的电汇凭证。
(二)、建立打开文件就自动运行的宏
再在下图左边双击ThisWorkbook,点击上图中间位置显示为“通用”的下拉列表框,选择Workbook,如下图:
在下边的编辑框中输入列下程序: Private Sub Workbook_Open() Worksheets(1).Select
zp = InputBox(\"1为现金支票,2为电汇凭证,3为其它\请选择支票种类\'选择1为打印现金支票,选择2为打印电汇凭证,3为什么也不运行,就可以粘贴医院的每月报帐数据。
If zp = 1 Then
Worksheets(1).Cells(13, 3) = InputBox(\"请输入收款人姓名\\"请输入收款人姓名\\"刘毅\5000, 5000)
Worksheets(1).Cells(14, 3) = InputBox(\"请输入金额\请输入金额\Worksheets(1).Cells(15, 3) = \"支付异地新合基金\"
Worksheets(1).Cells(5, 15) = Worksheets(1).Cells(13, 3) Worksheets(1).Cells(10, 14) = Worksheets(1).Cells(15, 3) End if If zp=2 then
y = InputBox(\"请输入打印的月份\请输入打印的月份\sm_1 = \"支付\" + Trim(Str(y)) + \"月新合基金\"
h = InputBox(\"请输入要打印第几个单位\请输入要打印第几个单位\sm = InputBox(\"请输入支票的用途\请输入支票的用途\z = InputBox(\"请输入汇入地点\请输入汇入地点\荣县\Worksheets(4).Select
Worksheets(4).Cells(7, 24) = z
Worksheets(4).Cells(5, 19) = Worksheets(2).Cells(h, 2) Worksheets(4).Cells(6, 19) = Worksheets(2).Cells(h, 4) Worksheets(4).Cells(8, 19) = Worksheets(2).Cells(h, 3) Worksheets(4).Cells(9, 4) = Worksheets(1).Cells(7, 16) Worksheets(4).Cells(13, 14) = Worksheets(1).Cells(15, 3)
Worksheets(4).Cells(10, 22) = Worksheets(1).Cells(8, 26) Worksheets(4).Cells(10, 23) = Worksheets(1).Cells(8, 28) Worksheets(4).Cells(10, 24) = Worksheets(1).Cells(8, 29) Worksheets(4).Cells(10, 25) = Worksheets(1).Cells(8, 30) Worksheets(4).Cells(10, 26) = Worksheets(1).Cells(8, 31) Worksheets(4).Cells(10, 27) = Worksheets(1).Cells(8, 32) Worksheets(4).Cells(10, 28) = Worksheets(1).Cells(8, 33) Worksheets(4).Cells(10, 29) = Worksheets(1).Cells(8, 34) Worksheets(4).Cells(10, 30) = Worksheets(1).Cells(8, 35) Worksheets(4).Cells(10, 31) = Worksheets(1).Cells(8, 36) Worksheets(4).Cells(10, 32) = Worksheets(1).Cells(8, 37) Worksheets(4).Select End If End Sub
下图为打印电汇凭证的效果图:
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务