用VB程序实现对学生Excel作业的批量评分.docx
- 文档编号:9324893
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:8
- 大小:18.79KB
用VB程序实现对学生Excel作业的批量评分.docx
《用VB程序实现对学生Excel作业的批量评分.docx》由会员分享,可在线阅读,更多相关《用VB程序实现对学生Excel作业的批量评分.docx(8页珍藏版)》请在冰豆网上搜索。
用VB程序实现对学生Excel作业的批量评分
用VB程序实现对学生Excel作业的批量评分
摘要:
用vb程序实现对学生Excel工作簿的选取,并逐一对其批改评分,将学生姓名、总分和出错原因记录在“评分.xls”中,下面介绍实现的关键技术和实现的方法。
关键词:
vb;Excel;宏;批量评分
0引言
在Excel教学过程中,我们要在多媒体电子教室收取学生作业。
而在课堂上,对学生的课堂作业要进行及时批改评分是很费时间的。
这样就不能客观公正的对学生及时进行评价,对教学中存在的问题不能及时发现。
怎样才能对学生的作业及时批改评分,笔者查阅了有关vb程序自动化控制Excel的有关资料,编写了一个小系统,可以对学生的作业进行评分。
1系统实现的关键技术
1.1自动化控制
自动化使应用程序能够对另一个应用程序中实现的对象进行操作,或者将对象公开以便可以对其进行操作。
自动化服务器是向其他应用程序(称为自动化客户端)公开可编程对象(称为自动化对象)的应用程序。
自动化服务器有时称为自动化组件。
许多Microsoft的应用程序是自动化服务器,包括Access、Word、Excel、PowerPoint、、FrontPage等。
这意味着您可以再使用这些特色丰富的应用程序作为您的应用程序的服务器。
公开自动化对象使客户端能够直接访问通过服务器可用的对象和功能,从而自动完成某些过程。
当应用程序提供的功能对其他应用程序有用时,这样公开对象是有益处的。
要让vb编写的程序作为客户端,Excel程序作为应用程序服务器,让vb程序能自动化控制Excel程序,首先应在vb程序中引用MicrosoftExcel类型库。
方法是:
从“工程”菜单中选择“引用”命令;选择MicrosoftExcel11.0ObjectLibrary(office2003不同的版本,库的版本也不一样);选择“确定”。
然后,在vb程序中创建Excel向用户公开的对象,在通用对象的声明过程中定义Excel对象:
Excel.Application、Excel.WorkBook、Excel.Worksheet、Range、chart等。
Excel.Application对象相当Excel应用程序,Excel.WorkBook对象对应于用户工作簿,Excel.Worksheet对象对应于工作表,range对象是选取的区域,chart对象对应于图表。
这样,vb程序就可以通过Excel服务器实现对对象的自动化控制,完成对对象的属性的提取或判别。
这也是实现对学主作业评分的最关键的技术。
1.2Excel中宏的录制和编辑功能
Excel对象库中基本对象的属性直接反映了对象的特征或状态,通过对对象属性值和题目所要求的对象属性进行比对,可以判断出学生作业做得对或者错。
对象的属性非常多,虽然我们可以通过对象浏览的方法和系统的帮助查阅到我们编程所需的对象属性,但是费时费力,编程的效率非常低。
Excel提供了非常强大的宏编辑功能,我们可以通宏来解决这个问题。
在Excel工作簿中录制宏,按题目的要求对指定的工作簿进行编辑,将对象进行的操作和对象状态或属性的改变以代码的形式存储中宏中。
打开宏,将对象属性的或状态改变的代码提取、转换成对象属性或状态的测试语句,也就是变成对学生作业评分的语句,这样就提高了编程的效率和准确度。
例如:
将a1:
e1单元格区域字体设置为楷体
以下为宏代码
Range("A1:
E1").Select
WithSelection.Font
.Name="楷体"
.FontStyle="常规"
.Size=14
.Strikethrough=False
.Superscript=False
.Subscript=False
.OutlineFont=False
.Shadow=False
.Underline=xlUnderlineStyleNone
.ColorIndex=xlAutomatic
EndWith
提取转换后的评分代码是
Range("A1:
E1").Select
IfSelection.Font.Name="楷体"thenzf=zf+1elsess=ss+”字体设置不正确”
如果正确设置了,那么总分增加一定的值,否则,将出错原因记录在字符串ss中
1.3公共对话框的应用
要批量选择学生作业工作簿,需要设计批量选取工作簿文件的对话框,这会增加很大的工作量。
Visualbasic提供了通用对话框(commondialogbox)控件,使得设计对话框十分方便。
在默认情况下,通用对话框控件不在工具箱中。
在使用之前,应将其添加到工具箱中。
具体方法是在“工程”菜单中选“部件”命令,打开“部件对话框。
在“部件”对话框的“控件”选项卡中,从列出的控件中找到microsoftcommondialogcontrol6.0,使在前面复选框中打下“√”,再单击“应用”按钮,通用对话框就出现在在工具箱中,就可以使用该控件了。
2系统的实现
2.1系统的功能模块
系统有四个模块,分别是:
①选择评分工作簿:
选取要批量评分的学生工作簿;②评分:
批量对学生的Excel作业进行评分,并把学生的姓名、总分和出错原因写入“评分.xls”工作簿中;③查看结果:
打开“评分.xls”工作簿,查看评分的结果;④退出:
退出系统。
2.2调用通用对话框批量选取学生作业工作簿的实现
通用对话框可以提供6种不同形式的对话框,本系统使用的是打开对话框。
为了批量选取学生作业工作簿,将对话框的flags设置为512,运行时允许用户选取多个文件,所选的工作簿的路径和文件名在CommonDialog1.FileName中,文件名之间以空格分隔。
本系统将提取出路径和工作簿的文件名保存在数组myfilename中。
为了便于记录成绩,学生作业工作簿用自己的姓名作为文件名。
PrivateSubCommand3_Click()
CommonDialog1.DialogTitle="打开文件"
CommonDialog1.ShowOpen
'CommonDialog1.Filter="所有文件(*.*)|*.*|工作簿(*.xls)|*.xls|"
CommonDialog1.Flags=512'允许多选
myfilename1=CommonDialog1.FileName
j=1
Fori=1ToLen(myfilename1)
IfMid$(myfilename1,i,1)<>""Thenmyfilename(j)=myfilename(j)+Mid$(myfilename1,i,1)Elsej=j+1
Nexti
‘将文件名置于数组中多文件时取出各个文件名和路径置于数组中,第一单元是路径;单文件时取出文件及路径名在数组的第一单元中
EndSub
2.3对学生作业进行批量评分并记录的实现
首先创建一个Excel.Application对象,并用open方法打开“评分.xls”工作簿对象,并激活工作表“sheet1”对象,并选择“sheet1”的所有单元格,清除单元格的内容,并在第一行的三个单元格中输入“姓名”、“总分”、“出错原因”。
因为对单个学生作业和对多个学生作业进行评分时,提取文件名的方法不同,所以分成两部分,一部分是对多个学生作业,进行评分,另一部分是对一个学生进行评分。
因为两部分只有提取文件名有一些不同,所以本文只介绍对多个学生作业进行评分的部分。
创建一个循环,每循环一次打开一个学生作业工作簿对象,并激活工作表对象(Worksheet),选择其中的对象rang、cells、chart等对象,把对象的属性或状态和题目所要求的对象的属性或状态进行比对,主要是用判断语句,如果正确,则总分加一定分值。
如果出错,则将出错原因存入字符串ss中。
最后,激活“评分.xls”工作簿对象的“sheet1”对象,将结果写入激活“评分.xls”工作簿对象的“sheet1”对象的单元格中。
循环结束,则将完成对所有学生的批量评分,并将结果记录在““评分.xls”中
以下是程序代码:
PublicjAsInteger
Publicmyfilename1AsString
Publicmyfilename(100)AsString(一个班最多100个学生)
DimaaAsExcel.Application
DimbbAsExcel.Workbook
Dimbb1AsExcel.Workbook
DimccAsExcel.Worksheet
Dimcc1AsExcel.Worksheet
DimssAsString
PrivateSubCommand1_Click()
Ifj>=2Then
Setaa=CreateObject("Excel.Application")
aa.Visible=True
Setbb1=aa.Workbooks.Open(App.Path&"\评分.XLS")
Setcc1=bb1.Worksheets("sheet1")
cc1.Activate
cc1.Cells.Select
Selection.Clear
cc1.Cells(1,1)="姓名"
cc1.Cells(1,2)="总分"
cc1.Cells(1,3)="出错原因"
Form=2Toj
myfilename1=myfilename
(1)&myfilename(m)'多文件时取出各个文件名置于数组中,第一单元是路径,其它各单元是文件名
Setbb=aa.Workbooks.Open(myfilename1)打开要评分的学生作业文档
Setcc=bb.Worksheets("sheet1")
zf=0记录总分
ss=""‘记录出错原因
Form1.Show
Range("b15").Select
IfSelection.Formula="=SUM(B3:
B14)"Then
zf=zf+1
Else
ss=ss+"1计算不正确"
EndIf
Range("f3").Select
IfSelection.Formula="=(B3+C3+D3+E3)/3"Then
zf=zf+1
Else
ss=ss+"2计算不正确"
EndIf
IfSelection.NumberFormat="$#,##0.000;$-#,##0.000"Then
zf=zf+1
Else
ss=ss+"数据格式不正确"
EndIf
Range("A1:
e1").Select
IfSelection.HorizontalAlignment=xlCenterAcrossSelectionThen
zf=zf+1
Else
ss=ss+"设置了跨列居中不正确"
EndIf
IfSelection.Font.Name="楷体"Then
zf=zf+1
Else
ss=ss+"设置了楷体不正确"
EndIf
IfSelection.Font.Size="18"Then
zf=zf+1
Else
ss=ss+"设置字号不正确"
EndIf
IfSelection.Font.ColorIndex=5Then
zf=zf+1
Else
ss=ss+"设置了字符颜色错误"
EndIf
cc1.Activate
l1=Len(myfilename
(1))
l2=Len(myfilename1)
cc1.Cells(m,1)=Mid$(myfilename1,l1+1,l2-l1-4)‘学生作业用学生自己的名字命名,取得学生姓名
cc1.Cells(m,2)=zf
cc1.Cells(m,3)=ss
'Form1.Printss打印评分说明
Setcc=Nothing
bb.Save
bb.Close
Setbb=Nothing
Nextm
Else单个学生的评分与上基本相同(略)
2.4查阅评分结果
打开“评分.xls”工作簿,让用户查看评分的结果。
因为习题是千变万化的,所以评分程序也要不断更新。
为提高效率,我们要充分利用Excel的宏功能,实现快速编程。
另外,我们也可以根据教学内容编写习题集和相应的评分程序集。
参考文献:
[1]谭浩强,袁玫,薛淑斌.visualbasic程序设计[M].北京:
清华大学出版社,2006.
[2]叶佳.中文visualbasic6.0编程实用教程[M].北京:
中国水利水电出版社,1999.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 程序 实现 学生 Excel 作业 批量 评分
![提示](https://static.bdocx.com/images/bang_tan.gif)