图1
此外由于通知书中还需要添加老师的评语,因此新建一个工作表,将其命名为老师评语,然后在此表的A列中将学生成绩明细中的学生名单复制过来,然后在B列中输入老师对每个学生的评语(图2)。
图2
设计通知书打印模板
虽然每个学校的家长通知书格式可能不尽完全相同,但是大体上是差不多的,新建一个工作表,将其命名为批量打印通知书,然后在此表的A2:K24单元格区域中,根据自己学校的要求,输入家长通知书的必要内容,如标题、开头语、成绩表格、评语表格以及家长填写意见的位置(图3)。
图3
由于要实现批量打印,必须在此通知书模板中添加一个通知书序号选择单元格,这样就能够通过这个单元格中的不同序号,从而能够显示不同的家长通知书,在 L3单元格中输入请输入序号,然后确定M3单元格为通知书序号选项单元格。同时为了将前面学生成绩明细中每个学生的数据自动引用过来,在通知书中学生成绩明细表学生姓名下面的A12中输入公式=OFFSET(学生成绩明细!$A$2,$M$3*1-1,0)&"",在第1门课语文 下面的B12中输入公式=VLOOKUP($A$12,学生成绩明细!$A$2:$K$60,2,0),在第2门课数学下面的B12中输入公式 =VLOOKUP($A$12,学生成绩明细!$A$2:$K$60,3,0),并依次类推,然后在存放老师评语的A14中输入公式 =VLOOKUP($A$12,老师评语!$A$2:$B$71,2,0)。这样当在M3单元格中输入1时,就会在通知书模板中显示第1个学生的家长通知书,而2时,则显示第2个学生的家长通知书。
需要注意的是,此处使用了OFFSET、VLOOKUP等函数,其作用为根据M3单元格中的数值,而自动引用学生成绩明细对应的学生姓名,而且在成绩表以及评语中自动引用相应学生的成绩以及评语资料,而公式OFFSET(学生成绩明细!$A$2,$M$3*1-1,0)&""中的$M$3*1则是针对不同数据之间相隔行数而定的,如果相隔2行,则将其修改为$M$3*2即可。
利用控件,高效率批量打印通知书
在前面通知书模板设计的基础上,就可以利用控件进行批量打印通知书的工作了,在N2、N3中分别输入开始序号、结束序号,以其后面的O2、O3单元格作为批量打印通知书的起始序号,接着单击开发工具菜单,单击控件功能区中的插入选项,在弹出的控件列表中,选择ActiveX控件中的命令按钮,将其拖动到M3单元格的下面。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/diannaorumen/)接着右击此按钮控件,在弹出的右键快捷菜单中,选择属性命令,在随之弹出的属性对话框中,将此按钮控件的Caption属性,即按钮标题修改为批量打印通知书。然后还是右击此按钮控件,选择查看代码命令,在弹出的VBA编辑窗口中输入以下批量打印命令:
Private Sub CommandButton1_Click()
For i = Range("o2") To Range("o3")
Range("m3") = i
ActiveSheet.PrintOut
Next
End Sub
输入完毕后,关闭此VBA编辑框,单击控件功能区中的设计模式选项,以退出设计模式,然后选择下通知书的打印区域,最后在O2、O3单元格中输入需要批量打印家长通知书的起始序号,如1~50,最后单击批量打印通知书按钮,就可以立即打印出所需要的所需要的50名学生通知书了。
以上的批量打印是仅仅针对通知书打印而言的,实际上利用以上方法,稍微修改下,还可以应用其他一些批量打印工作领域中,如打印标签、付款通知单、成绩单等等,通过这个方法能够大大提高工作效率,减少出现工作误差的机率。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/diannaorumen/)