论文导读::基于VBA的自动评分研究。该职业资格等级可以分为中级工、高级工、技师、高级技师。由于选择题等容易实现自动评分。
论文关键词:VBA,高级工,自动评分
0 引 言
大学计算机基础是公共课,很多班级在进行期末考试时,都要进行无纸化考试。单纯依靠人工阅卷,工作量大且效率低,由于选择题等容易实现自动评分,所以计算机基础中的操作题的自动评分工作就显得非常重要[1]。对于计算机专业的学生来说,有的要进行相关的资格考试,计算机系统管理员就是其中一种。该职业资格等级可以分为中级工、高级工、技师、高级技师。
计算机系统管理员的高级工考试是一种资格认证考试,可以基于C/S模式考试,考生通过登录网站计算机论文,随机抽取试卷,进行第一部分判断题、单项选择题、多项选择题的答题,再下载第二部分操作题,内容主要有:OS、Word、Excel、PowerPoint、FrontPage和Network,进行答题后保存到指定的文件夹中。 服务器端上安装Server 2003和SQL Server,题库和学生的信息及成绩都在SQL Server数据库中。
学生在做完第一部分后,系统可以自动评分并记录下来,第二部分操作题却不能自动评分,需要教师手工在电脑上阅卷,费时费力。因此,对操作题部分的自动评分能够提高阅卷的效率和准确性。从考试内容上可以看出,Word、Excel、PowerPoint和FrontPage都属于Office的内容,他们之间有许多是相通的。文献[2]探索了office文档操作自动阅卷评分技术。
1 基于VBA的自动评分研究
通常可以认为VBA(VisualBasic for Applications)是非常流行的应用程序开发语言Visual Basic的子集,有了一定的VB知识对于学习VBA非常方便免费论文。但是两者之间有一些不同,VB是独立的程序开发语言,开发的程序可以脱离开发环境独立运行,而VBA则要依赖于已有的应用程序,但针对性强,能使应用程序自动化。
1.1 VBA
VBA是标准宏语言,是基于Visual Basic forWindows 发展而来的。与传统的宏语言不同计算机论文,VBA 提供了面向对象的程序设计方法,作为一种通用的宏语言可被所有的Microsoft 可编程应用软件所共享。
VBA重要特点之一是面向对象。对象是类的具体实例。在VBA中对象是封装有数据和代码的客体。例如在Word中,一段连续的区域可以记为Range对象,用户可以在VBA程序代码中为Range对象赋值。VBA提供了一个基本的编程环境和功能强大的接口,如Windows 的API、ADO、COM 等,使Office 应用软件的功能得到扩充。90%的用户只用到了Word全部功能的10%,这些未用到的功能的开发,很多都是和VBA分不开的[3]。
1.2 Word对象自动评分
Word中有很多的对象,常用的主要有:Document对象,表示引用一个文档;Range 对象,表示引用文档中的某一连续区域;Words对象,表示引用文档中的某一单词;Characters对象,表示引用文档中的某一字符;Sentences对象,表示引用文档中的某一句子;Paragraphs对象,表示引用文档中的某一段落;Sections 对象,表示引用文档中的某一节。例如:打开文档,Documents.Open Filename=”C:\mydocuments\ wvba.doc”;保存一篇现有文档,Documents(“test.doc”).save;关闭文档,并以test.doc保存,可以写成Documents(“test.doc”).closesavechanges=wdsavechanges。选中整篇文档且文档中没有分节的,可以写成ActiveDocument.Section(1)。选择某一区域计算机论文,如该文档的第一段到第四段,可以写成:Set ww=CreateObject(“Word.Application”), Set dd=ww.Documents.open(“C:\mydoucuments\wba.doc”,readonly=false), Set myRange = ActiveDocument.Range(start= dd.Praraghs(1). Range.start, End=dd.Paragraphs(4).Range. End)。以高级工中比较常见的文档设置为例说明,题目要求:第一段字体为“黑体”,字号为“二号”,添加“波浪线”,对齐方式为“居中”。第二段正文部分首行应缩进2个字符。如图1所示:

图1 Word试题
控件按钮“交卷”的程序代码如下表1所示。
表1 程序代码及其含义
程序代码
|
含义
|
Private Sub CommandButton1_Click()
Dim str1 As String
Dim point As Integer
Set para1 = ActiveDocument.Paragraphs(1)
Set para2 = ActiveDocument.Paragraphs(2)
If para1.Range.Font.Name = "黑体" Then
point = point + 20
Else
str1 = str1 + "标题字体为黑体" + vbCrLf
End If
If para1.Range.Font.Size = 22 Then
point = point + 20
Else
str1 = str1 + "标题字号为二号" + vbCrLf
End If
If para1.Range.Font.Underline = wdUnderlineWavy Then
point = point + 20
Else
str1 = str1 + "标题没有加波浪线" + vbCrLf
End If
If para1.Alignment = wdAlignParagraphCenter Then
point = point + 20
Else
str1 = str1 + "标题应居中" + vbCrLf
End If
If para2.FirstLineIndent = CentimetersToPoints(0.35) Then
point = point + 20
Else
str1 = str1 + "正文首行应缩进2字符" + vbCrLf
End If
str1 = str1 + "你的得分为" + Str(point) + "分"
MsgBox str1, vbOKOnly, "提示"
End Sub
|
设置一个提交按钮
定义变量str1和point
激活文档的第1段和第2段
判断第1段的字体
判断第1段的字号
判断第1段波浪线
判断第1段是否居中
判断第2段是否首行缩进
显示得分和错误提示
|
如果第1段“希望”两个字体设置为“楷体”,第二段也就是正文首行没有缩进,则自动提示如图2所示。说明标题字体应该设置为黑体,正文首行应缩进2字符,得分为60分,表示其余三项设置正确。

图2 判分结果
1.3 Excel对象
Excel中的对象大部分与Word中类似,也有一些不同。Excel中有常见的单元格、行和列、工作表等对象。
Excel对象的层次结构,每一个对象处于一个选定的对象层次中,除了Application外,每一个对象都是由高层次的对象派生出来的[4]。Excel中的工作薄、工作表、菜单栏、工具栏、窗体和数据等都有相应的对应进行描述。程序设计主要集中在五个对象上:Application,Workbook(s),Worksheet(s),Range,Chart免费论文。例如:选中A1到B10这一区域,Dim myRange AS Range, SetmyRange=worksheets(“sheet1”).Range (“A1:B10”),给工作表“员工资料表”的E1单元格添加“技术工资”内容,可以写成WorkSheets(“员工资料表”).Cell(1,5). text=”技术工资”,给sheet3工作表的A4单元格添加公式计算A1到A3单元格的数值和,可以写成WorkSheet(“sheet3”).Range(“A4”).Formula=” $A$1+$A$4”计算机论文,保存当前的工作薄可以写成ActiveWorkbook.closesavechanges=True。
2 实例研究
在VB环境下,对Excel操作题进行自动评分可以按以下步骤进行。选择【工程】菜单->【引用】,添加Microsoft Excel9.0 object Library。根据Office版本的不同添加不同的对象库,office2010也支持VBA。
题目要求:打开考盘文件夹下的文件Efile2.xls,在“员工基本情况”工作表中的“部门代号”后面增加一“部门”列,然后根据员工所属的部门代号填入每个员工所属的部门名称。(部门名称与部门代号的对应关系为:T01是工程部,T02为研究部,T03为开发部)要求用函数实现。
程序的部分代码如下:
Set dd =Workbooks.Open("C:\高级工考盘\Excel\Efile2.xls ")
Worksheets("员工基本情况").Activate
IfRange("C1").Text = "部门" Then
tempnumber = tempnumber + 20
str1 = "插入一列正确,"
Else
str1 = "插入一列错误,"
End If
Range("C2").Select
If ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""T01"",""工程部"",IF(RC[-1]=""T02"",""研究部"",""开发部""))" Then
tempnumber = tempnumber + 80
str1 = str1 + "公式正确。"
Else
str1 = str1 + "公式错误。"
End If
当只插入了一“部门”列,没有用函数实现公式的时候,程序的代码和运行如图3所示,显示结果为“插入一列正确,公式错误,你的得分是20分”。

图3 插入一列正确,公式错误时的判分结果
当插入了一“部门”列,也用函数实现公式的时候,程序的代码和运行如图4所示,显示结果为“插入一列正确,公式正确,你的得分是100分”。

图4 插入一列正确计算机论文,公式也正确时的判分结果
3 结束语
总之,VBA 易于掌握,可以使用宏记录器录制自己的常用重复的操作,再将其转换为VBA 代码,在VB开发环境中加以修改,使应用程序自动化,降低了工作强度,在高级工试卷的自动评分中高效快速,下一步可以再运用到PowerPoint等程序中。因此,对于在工作中需要经常使用Office 软件的用户,用VBA 有助于使工作自动化,提高工作效率。另外,程序开发人员可以通过VBA直接高调用Office软件的各项功能,开发更加方便快捷。
参考文献:
[1]吴亚坤,郭海旭.Office文档自动评分的研究与实现[J].辽宁大学学报(自然科学版), 2008,35(4):336-337.
[2]廖恩杨.面向对象对Office文档操作自动评分[J]. 计算机应用,2002, 22(8):119-120.
[3]杨晓亮.Word VBA 高效排版范例应用[M]. 北京:中国青年出版社,2005.
[4]Excel Home. Excel VBA 实战技巧精粹[M]. 北京:人民邮电出版社,2008.
|