获取VIP特权
首页 > 模板攻略 > 其他 > 利用Excel实现满幅面批量打印工资条

2019-10-31 09:14:36

0已点赞

利用Excel实现满幅面批量打印工资条



公司工资条格式(图1),由于工资条比较窄小,如果用Word的邮件合并功能,按默认设置只能一张纸打印一个工资条,浪费纸张不说,效率也不高,如果将工资条复制几份放在同一A4纸页面的话对邮件合并的数据源则要进行多纵列排版,数据源有变动需要修改的时候也很不方便,而且工资条里含有“金额大写”项目,用邮件合并功能也比较麻烦,经过综合考虑和比较,决定用Excel2003来制作带金额大写且能满幅面批量打印的工资条模板。

利用Excel实现满幅面批量打印工资条(1)

    经询问得知工资报表为每月必做,决定采用调用工资报表数据来实现。通过测量,发现一张A4纸纵向放4个工资条比较合适。

一、修改工资报表
    为方便数据调用和发放工资时能“对号入座”,我们在报表前插入两列,分别命名为“序号”和“工资条编号”,在A3单元格里输入=row()-2,在B3中输入=row()+2005049998,同时选中A3和B3单元格,往下拖动填充句柄到最后一行以产生能自动调整的序号和工资条编号。修改后报表格式如图2所示(其中某些无须用到的数据列已隐藏)。

利用Excel实现满幅面批量打印工资条(2)

二、制作工资条打印界面

1.设计打印内容界面
    在工资报表工作簿里插入一个工作表,重命名为“打印”,并将原有工资条格式复制到里面,然后按以下步骤操作(这里的操作步骤比较多一点,不过对以后来说能做到“一劳永逸”):

    在B2里输入=now(),并设置其单元格格式,“数字”标签中“分类”为“日期”,“类型”为“2001年3月14日”;在I2、A6、B5、C5、D5、E5、F5、G5、H5、B8、C8、D8、E8、F8中分别输入=VLOOKUP(M5,工资报表!A:R,2)、=VLOOKUP(M5,工资报表!A:R,4)、=VLOOKUP(M5,工资报表!A:R,5)、=VLOOKUP(M5,工资报表!A:R,6)、=VLOOKUP(M5,工资报表!A:R,7)、=VLOOKUP(M5,工资报表!A:R,8)、=VLOOKUP(M5,工资报表!A:R,9)、=VLOOKUP(M5,工资报表!A:R,10)、=VLOOKUP(M5,工资报表!A:R,11)、=VLOOKUP(M5,工资报表!A:R,12)、=VLOOKUP(M5,工资报表!A:R,13)、=VLOOKUP(M5,工资报表!A:R,14)、=VLOOKUP(M5,工资报表!A:R,15);在J5和F8中分别输入=SUM(B5:H5)和=J5-SUM(B8:E8),把它们的单元格格式都设置成“数值”并保留两位小数,在G8中输入=F8,设置其单元格格式为“特殊”中的“中文大写数字”,然后选择第1—9行行标号把此工资条往下复制3份并分别修改第2、3、4工资条中的公式,在所有内容保持不变的情况下只须将第2个工资条中的所有“M5”改为“M5+1”(比如第2个工资条的I14单元应改为=VLOOKUP(M5+1,工资报表!A:R,2),其余类推),第3个工资条中改为“M5+2”,第4个工资条中改为“M5+3”。 调整好页面设置使之适合A4页面,并在4个工资条之间设置三条单元格边框虚线以方便打印后切割。

2.设计打印控制界面
    在L5、L7和L9中分别输入“当前序号”、“开始序号”和“结束序号”,留M5、M7和M9存放序号数值,右击工具栏选择“窗体”,弹出窗体工具栏,选择其中的“组合框”在N5单元格画一个组合框,右击此组合框选“设置控件格式”,在“控制”标签中设置“数据源区域”为“工资报表!$D$3:$D$20”(即工资报表中的“姓名”区域),“单元格链接”为“$M$5”。确定后把这个组合框复制两份分别放在N7和N9单元格里,并分别将其“单元格链接”改为“$M$7”和“$M$9”。再在“窗体”工具栏中选择“按钮”画一个矩形按钮放在L13:N14单元格区域中,将其文字改为“打印所选范围”(图3),右击此按钮,选择“指定宏”,在弹出窗口中点“新建”按钮,编辑如下代码(注释文字不用输入):

利用Excel实现满幅面批量打印工资条(3)

Sub 按钮4_单击()
序号 = Range("M7").Value
打印:
If 序号 <= Range("M9").Value Then
Range("M5").Value = 序号
If Range("M9").Value - 序号 = 0 Then
Range("A1:J9").PrintOut Copies:=1
GoTo 结束
End If
If Range("M9").Value - 序号 = 1 Then
Range("A1:J21").PrintOut Copies:=1
GoTo 结束
End If
If Range("M9").Value - 序号 = 2 Then
Range("A1:J33").PrintOut Copies:=1
GoTo 结束
End If
'以上三段If条件语句的作用为当打印到所选序号范围的最后一页时,判断最后一页的工资条数目是否足4条,如果不足4条则只打印最后页所剩余的条数并结束整个循环。在原装耗材如此昂贵的年代,我们不得不“惜墨如金”啊
序号 = 序号 + 4
Range("A1:J45").PrintOut Copies:=1
GoTo 打印
End If
'如果序号小于等于M9则跳回"打印" 循环点,否则中止循环.

结束:
End Sub
    为能正常实现打印功能,应将宏的安全性设置一下,点“工具→宏→安全性”,建议将宏的安全性设置为“中”,以后打开此文件时选择“启用宏”即可。

3.美化界面
    好了,所有的设计工作基本完毕,剩下就就是做一些美化工作,将除A1:J45区域以外的单元格的底纹设置为你所喜欢的颜色(比如天蓝色),将M5、M7、M9底纹设成比较醒目的黄色,点“工具→选项”,将“网格线”、“行列标号”和“零值”前的钩去掉。为防止财务MM的误操作修改所设计的内容,可点“工具→保护→保护工作表”将工作表保护起来。最后将此文件保存为一个模板(如“工资条.xlt”)以便以后调用。最后界面如图4所示。

利用Excel实现满幅面批量打印工资条(4)

    现在只要在M7和M9中输入开始序号和结束序号(或在右边的姓名组合框中选择姓名),再点击打印的那个按钮就可一次满幅面批量打印出所选范围的员工工资条,最后一页记录如果不足4条并不会打印出多余的内容来。如果有时仅需要打印某一个员工的工资条,只要在开始序号和结束序号都输入该员工的序号(或在右边组合框都选择该员工姓名)即可只打印该员工工资条(同样不会打印多余内容),非常方便。在以后的月份中如果有数据变动,只需要改动“工资报表”中的数据,然后打到“打印”工作表中进行打印,即使有人事变动要在“工资报表”中增加或删除员工工资记录行,也不会影响“序号”和“工资条编号”的连续性。

如果帮到您!点个赞吧!

相关模板

3秒登陆,即可下载

注册即同意《我拉网服务使用协议》&《我拉网隐私政策》

QQ

QQ

邮箱

电话

提交

手机绑定

绑定手机号,账户更安全

中国 +86

手机号格式错误

按住滑块,拖拽到最右边
>>

验证码错误

温馨提示:微信绑定手机号,手机端也可以登录,我拉网将对用户隐私信息给予严格保密。

取消