基于EXCEL VBA的标准化试卷处理系统的实现
2018-06-11冯迎春
[摘 要] 目前,越来越多的卷面考試采用网络平台考试形式,这一考试形式给教育评价环节带来极大方便,但在应用条件上也存在一定限制。本系统利用EXCEL VBA操作WORD文档生成标准化电子文档,并通过相应处理完成文档的分发和结果的数据采集,完成试卷的生成和结果的收集,以期为当网络化平台考试条件不足时电子化考试所用。
[关 键 词] 标准化试卷;试卷处理系统;EXCEL VBA
[中图分类号] TP31 [文献标志码] A [文章编号] 2096-0603(2018)32-0170-02
教育评价是教学过程中不可缺少的一个基本环节,卷面考试仍是当前教育评价的主要形式。随着计算机及网络技术的进步,很多卷面考试采用了网络平台考试形式,网络平台考试具有不受软硬件平台限制、不受时间和地点限制、更新方便、数据收集方便等优点。但也存在一定不足,如需要一定的网站开发技术、需要能在互联网访问的服务器、需要相应的软硬件维护技术力量,一定程度上影响了网络平台考试的灵活性和方便性。
本系统利用EXCEL VBA操作WORD文档,产生包含标准化试卷内容的WORD文档模板,对试卷模板排版后将WORD试卷分发给考生答题,完毕通过网络收回各电子试卷,再通过本系统读取已填写试卷的内容,完成考试结果的收集过程。
一、系统的设计
(一)EXCEL工作表设计
EXCEL工作簿中有“试题”和“名单”两张表。“试题”表中存放试题信息,“名单”表存放学生名单及学生填写后的结果。二表结构如下:
(二)功能的设计
试卷的生成、复制和收回后读取结果的功能,均利用EXCEL VBA实现,下述代码需在EXCEL中按ALT+F11进入VBE后输入(考虑文章篇幅,代码中主要显示关键代码)。
1.生成试卷
通过下述代码,根据各小题题型不同采取不同控件,完成单选、多选和判断题的设计,生成“试卷模板.doc”,保存在与EXCEL文件所在的同一文件夹中。
Sub生成试卷( )
Set wApp=CreateObject("word. application") 打开word
Set wordd=wApp.documents.Add新建文档
Tm=Sheets("试题").[al].CurrentRegion
dls=1段落行数
For i=2 To UBound(Tm)题 1-N
If Tm(i, 2)<>Tm(i - 1, 2)Then
wordd.Paragraphs(dls).Range.Text=Tm(i, 2)&Chr(10):dls=dls+1题型
End If
wordd.Paragraphs(dls).Tange.Text=Tm(i, 3)&"."&Tm(i, 4)&Chr(10):dls=dls+1题干
If Tm(i, 2)Like"多*"Then根据题型确定控件序号
mct="Forms.CheckBox.1"
Else
mct="Forms.OptionButton.1"
End If
For j=5 To 8选1-4
mcp=Chr(64 + j - 4)&"."&Trim(Tm(i, j))
If Len(mcp) >2 Then
Set Wpr =wordd.Paragraphs(dls).Range最后行位置 Set Waia=wApp.ActiveDocument.InlineShapes.AddOLE Control(ClassType:=mct,Range:=Wpr)
With Waia.OLEFormat.Object
.Caption=mcp
.Name="T"&Tm(i, 1)&"_"&Chr(64 + j - 4)
.Width=Application.Min(Len(mcp)*11,390)
.AutoSize=True
.groupname="T"&Tm(i, 1)
End With
wordd.Paragraphs(dls).Range.InsertAfter(vbCrLf):dls=dls+1插入一段
End If
Next j
Next i
wordd.SaveAs ThisWorkbook.Path&"\试卷模板.doc":wApp.Quit
End Sub
2.复制试卷
根据“名单”中的考生名单将“试卷模板.doc”复制成以考生姓名为文件名的WORD文件。
Sub 复制试卷( )
sfile = ThisWorkbook.Path & "\试卷模板.doc"
For i = 2 To Worksheets("名单").[a1].CurrentRegion.Rows.Count
FileCopy sfile,ThisWorkbook.Path & "\" & Worksheets("名单").Cells(i, 2) & ".doc"
Next i
End Sub
3.读取结果
收回试卷文档后放在与EXCEL文件所在的同一文件夹中,利用“读取结果”可将该文档中各考生填写的内容读回“名单”中。
Sub读取结果( )
Set wApp=CreateObject("word,application") 打開word
Set Ws=Worksheets("名单")
Ws.Range("c2:ae2000").ClearContents
For fi=2 To WS.[al].CurrentRegion.Rows.Count逐文件
wApp.documents.Open ThisWorkbook.Path&"\"&Ws.Cells(fi, 2)&".doc"
For Each i In wApp.ActiveDocument.InlineShapes逐控件
With i.OLEFormat.Object
If.Name Like"T*"And.Value Then
Is=Mid(.Name,2,Len(.Name)-3):xs=Right(.Name,1)
Ws.Cells(fi, Is + 2).Value=Trim(Ws.Cells(fi, Is + 2))&xs
End If
End With
Naxt i
Nest fi
wApp.Quit
End Sub
二、系统的优点
该系统的优点主要体现在操作简便灵活、对使用者计算机技术要求低和零成本三个方面。
(一)操作简便灵活
该系统对教师来说,平时只需要使用EXCEL组织试题内容,较为复杂的试题内容如图形、表格和公式可通过对WORD试卷模板的排版来实现,WORD试卷模板的生成、试卷的更名复制和结果采集均能由系统自动完成。而且由于试题存放在EXCEL工作表中,修改和调整极为方便。
(二)对使用者的计算机技术要求低
该系统对教师来说,需要具体WORD和EXCEL的基本操作技能;对学生来说,需要具备基本的WORD操作,因此从目前情况来看,所有教师和学生应都具备这一考试形式所需能力。
(三)零成本
该系统从功能上来看,除了文件分发和收集过程要通过网络来实现之外,试卷生成、试卷填写和试卷结果采集仍属于单机操作,只要使用者的计算机能正常使用OFFICE,即可完成上述操作。因此通过本方式实施考试,不需增加额外的硬件和软件投入,在使用过程中也不需要额外的技术维护费用支出。
三、系统的扩展应用
(一)对非标准化试卷内容的处理
大多试卷都由标准化主观题和非标准客观题组成,完全标准化的试卷相对来说较少。对非标准化的主观题,可利用文本框来实现指定位置结果的收集。只需将VBA代码中ActiveX控件类型设为Textbox,即在“生成试卷( )”功能中,增加题型判断,将mct = "Forms.CheckBox.1"改成mct="Forms.textbox.1",同时设置文本框控件的属性,即可实现文本型主观题设计和结果收集。
(二)试题乱序的实现
对标准化试卷的考试来说,要防止学生偷看他人结果或相互传递答案等作弊,最好的方式是打乱各份试卷中客观题小题题序和选项顺序。要实现这一效果,可在EXCEL中增加“试卷库”表,试卷库来自试题库,按各考生分别生成试题,在根据试题库生成试卷库时,可随机生成小题顺序和选项顺序,从而实现随机试题和选项顺序这一效果。
(三)试卷唯一性的实现
电子文件形式的考试,还需要防止学生通过复制文件或复制试卷内容的方式进行作弊。单纯的WORD文档不具备标记特殊信息这一功能。在本系统中,试题内容是通过各Active X控件来实现的,可利用控件属性来给试题增加一些特殊标记。比如可以根据学生生成唯一码,将这唯一码写入控件名称OLEFormat.Object.Name中,使各份试卷同一试题的控件名称均不相同。试卷收回后对控件名称进行判断即可知道该试题属于哪位学生,从而确保学生只有亲手完成自己的电子试卷才为有效卷。
四、需说明的问题
本办法适用于OFFICE 2003及以上版本,但因WORD在自动恢复文档时可能会改变试题控件类型,因此如遇试卷文件在填写时意外关闭,要重新复制试卷文件做题,不要使用WORD自带的恢复功能。
对EXCEL中的结果判分及运用即为单元格值的匹配运用,方法较多且较为简单。故本文仅涉及试卷生成、分发和结果收集,未涉及对结果的匹配判分。
参考文献:
[1]崔明山.运用ASP设计网络考试系统思路浅探[J].职教论坛,2007(4):58-59.
[2]冯迎春.利用EXCEL VBA自动判分[J].中国教育信息化,2014(2):75-76.