Excel 自动打印表格份数/序号
#Update:
改进了。现在的样式如下:
第一步,先做一张报销单:
从自动化的角度来说,尽量采用公式帮助计算、限定单元格可输入的内容、以及设置单元格格式。在这张单据里,编号单元格为 K1。
公式:
对于报销单而言,使用 =SUM() 和 =VLOOKUP() 通常就足够了,至多再加个 =SUMIF()、=COUNTIF() 就足以做出挺复杂的报销单了。
单元格格式:
选定单元格后 『右键→设置单元格格式』。标准的可以选择第三类货币格式,复杂的可以自行定义格式,使用#代表一个数位,使用0代表『当这个数位是最高位但为0时依然显示』。
限定填充序列:
选定单元格后菜单栏选择『 数据→数据验证→数据验证』。允许序列,来源直接写入需要的内容,用英文逗号分隔。
第二步,添加 Excel 的开发工具菜单:
依次点击菜单上的 『文件→选项→(跳出 Excel 选项窗口)→自定义功能区→☑开发工具』打钩。
第三步,设置打印宏:
点击菜单上的 『开发工具→Visual Basic』,打开 VBA 面板,左侧双击 『ThisWorkbook』,把以下代码粘贴到出现的窗口内,然后关闭窗口
注意 K1 为这篇文章中的编号位置,其它表单需要相应调整。
1 | Sub PrintWithNumber() '定义宏名 |
第四步,添加宏按钮:
点击『开发工具→插入→按钮(窗体按钮)』。
然后用鼠标在 Excel 空白处拖出一个方块,当松开鼠标时,会自动跳出『指定宏』窗口,选择窗口内的『ThisWorkbook.PrintWithNumber』,然后确定。
右键点击该按钮,选择『编辑文字』,修改为『打印报销单』。
第五步,设置打印区域:
这一步是为了防止把按钮本身也打印出来。
全选需要打印的区域,选择菜单 『页面布局→打印区域→设置打印区域』。
第六步,另存为 xlsm:
由于使用了 vba,必须把文件存为 xlsm 格式。(启用宏的 Excel 格式)
完工。
今天接到一个小任务,寥寥一记。
在 Excel 中,常见的一种需求是打印带份数号码的各种表单,例如报销单、外出单等。通常财务都会提供模板给员工自行填写,再由财务按入帐顺序统一写上序号。但当某人一次性要写几十份,或者说类似的需求,需要一次性打印 N 份时,有没有办法让打印的表格上自动带上序号?
解决办法需要依赖 Excel 中的宏程序,在 Excel 中按 Alt+F11 可以直接打开宏编辑器。或需要先通过『视图』→『宏』→『录制宏』,再经由编辑宏的办法来打开。
核心宏程序如下,一目了然:
1 | Sub test() |
E1 为需要填序号的单元格。程序先定义一个变量用来作为页码,然后不断用它替换指定单元格中的值,每替换一次就打印一张。这一方法硬要说有什么缺点的话,大概也就是打印任务数比较多,可能在几千份时会占用不少内存。
更完整的模板还需要在界面上做个按钮和两个输入框,以便让完全没有宏能力的财务也能定义起始和结束页码并打印。但今天这需求仅仅是帮助打印而不是做个新模版,所以这任务也就完成了不再搞复杂了。
样例下载 模板-日常费用报销表