首页 > 范文大全 > 正文

轻松定制学生成绩单

开篇:润墨网以专业的文秘视角,为您筛选了一篇轻松定制学生成绩单范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:在教学工作中经常要打印学生的成绩单,利用Foxpro等软件的报表功能当然可以完成这样的任务,但是操作复杂,就连画一个常见的表格都很费劲。如何才能轻松方便地定制学生成绩单呢?该文介绍了笔者常用的两种方法:一是利用WORD中邮件合并的方法;另一种是利用EXCEL脚本的方法。这两种方法也同样适用于打印定制工资表等类似的操作要求。

关键词:成绩单;Foxpro;邮件合并

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)09-2198-02

为了叙述方便,该文假设学生成绩数据在“成绩.xls”工作簿的Sheet1工作表内,下面就谈谈具体做法:

方法一:利用WORD中的邮件合并功能

新建一个WORD文档,选择“工具”“信函与邮件”“邮件合并”,并进行以下六步操作。

1) 选择文档类型为“信函”,点击“下一步”。

2) 选择开始文档为“使用当前文档”,点击“下一步”。

3) 在选择收件人项中选择“使用现有列表”,并通过“浏览”按钮选择“成绩.xls”,在弹出的表格窗口中选择“Sheet1$”,点击“下一步”。

4) 在撰写信函这一步中选择“其他项目……”并将数据库域插入文档中适当的位置。因为需要在一页中显示多个学生的成绩单,所以将已插入数据库域的表格复制多份。但是这样操作的结果是每个表格显示的内容是一样的,为了解决这一问题,我们需要在“视图”?“工具栏”中显示“邮件合并”工具栏,并在每份表格后插入“邮件合并”工具栏“插入WORD域”中的“下一条记录”域,文档中会显示出“《Next Record》”,这个域标记的作用是将数据指针指向下一条记录,这样在每个表格显示一条记录后记录指针都会自动跳到下一条数据记录,为显示下一条记录做准备。这里要特别指出的是本页面最后一个成绩单后不要插入“下一条记录”域,因为内容换页前记录指针会自动跳到下一条记录。做完这步操作后现在我们可以点击“下一步”了。如下图所示:

5) 预览信函时可以见到页面上有多条记录,按顺序显示每个学生的成绩,如果你现在就迫不及待的预览下一页,显示的信息仍然是从第二个学生信息开始的。不过不要紧,等做完下一步“完成合并”时就不会有这样的问题了,显示的所有信息都是正常的。点击“下一步”。

6) 在“完成合并”这一步已经完成了我们想要的成绩单,如果我们还想对进一步个性化设置成绩单,可点击“编辑个人信函”生成一个合并后的新文档进行编辑。

至此,我们利用WORD中的邮件合并功能成功地生成了学生的成绩单。

方法二:利用EXCEL中的脚本生成学生的成绩单

为了实现按照定制的成绩单打印学生成绩,笔者的思路是这样的:首先在Sheet2表中设置好学生成绩的样式,然后利用EXCEL中的Visual Basic脚本编辑器编写脚本来复制这个表格并从Sheet1表中取出一个学生的数据填充进去。如此反复,不停地复制成绩样式,再不停地填充数据,直到所有学生的成绩单都完成为止。本例中要打印的学生成绩表的样式如下图:

选择“视图”“工具栏”“控件工具箱”,点击控件工具箱面板上的按钮在Sheet2 表中画一个命令按钮,这个按钮默认的名称为“CommandButton1”。右击此按钮,在快捷菜单中选择“属性”,设置这个按钮的Caption属性为“生成”。双击这个命令按钮进入Visual Basic脚本编辑器,在CommandButton1按钮的Click事件过程中输入以下语句:

Private Sub CommandButton1_Click()

i = 2'Sheet1表中学生的信息从第二行开始

zkzh = Sheet1.Cells(i, 1)'从Sheet1表中第i行的A列取出学生的准考证号

While (Not (zkzh = ""))'逐行处理学生信息,只到取出准考证号为空为止

'开始复制成绩单式样

Rows("1:3").Select '选择Sheet2表中开始的三行空成绩单样式

Selection.Copy '复制选择的三行成绩单样式

j = 4 * (i - 1) + 1'j为把复制的成绩单样式粘贴到的行号

'粘贴成绩单式样

Range(Cells(j, 1), Cells(j, 1)).Select'选择j行的A列,准备粘贴成绩单样式

ActiveSheet.Paste '粘贴成绩单样式

'设置成绩单标题

Cells(j, 1).Value = "高一" + Str(Sheet1.Cells(i, 2).Value) + "班" + Sheet1.Cells(i, 4).Value + "成绩单"

'写入学生信息

Cells(j + 2, 1).Value = Sheet1.Cells(i, 1).Value'写入准考证号

Cells(j + 2, 2).Value = Sheet1.Cells(i, 4).Value'写入姓名

Cells(j + 2, 3).Value = Sheet1.Cells(i, 5).Value'写入性别

Cells(j + 2, 4).Value = Sheet1.Cells(i, 6).Value'写入语文成绩

Cells(j + 2, 5).Value = Sheet1.Cells(i, 7).Value'写入数学成绩

Cells(j + 2, 6).Value = Sheet1.Cells(i, 8).Value'写入英语成绩

Cells(j + 2, 7).Value = Sheet1.Cells(i, 9).Value'写入物理成绩

Cells(j + 2, 8).Value = Sheet1.Cells(i, 10).Value '写入化学成绩

Cells(j + 2, 9).Value = Sheet1.Cells(i, 11).Value '写入生物成绩

Cells(j + 2, 10).Value = Sheet1.Cells(i, 12).Value'写入政治成绩

Cells(j + 2, 11).Value = Sheet1.Cells(i, 13).Value'写入历史成绩

Cells(j + 2, 12).Value = Sheet1.Cells(i, 14).Value'写入地理成绩

Cells(j + 2, 13).Value = Sheet1.Cells(i, 15).Value'写入总分

'准备处理下一个学生信息

i = i + 1

zkzh = Sheet1.Cells(i, 1)

Wend

End Sub

保存后关闭Visual Basic脚本编辑器,并点击控件工具箱中的第一个按钮“退出设计模式”。现在我们就已经大功告成了,当你点击Sheet2表中的“生成”按钮时,就会执行脚本命令,自动生成所有学生的定制成绩单。当然,打印前别忘了删除Sheet2表中第一行到第三行的定制学生成绩样式。

下图为点击“生成”按钮后的效果。

在设计过程中,我们可以利用“工具”“宏”“录制新宏”记录下我们对数据进行操作,然后我们在“工具”“宏”“宏”中对刚刚录制的宏进行编辑,可以查看到刚才每步操作所对应的脚本命令。这些操作可以大大减少在Visual Basic脚本编辑过程中的工作量,提高工作效率。

以上两种方法都可以实现学生成绩单的定制,利用WORD中的邮件合并功能生成定制的学生成绩单操作简单,易实现,而利用EXCEL脚本生成定制的学生成绩单的方法虽然要求较高,但是却可以根据要求更加灵活的定制,如筛选、条件格式等。这两种方法同样适用于其他有类似操作要求的地方,如定制工资表等。该文所有操作均在Office2003中实现。