APP下载

基于VBA的Word自动阅卷系统设计与实现

2017-09-29刘冰

软件导刊 2017年9期
关键词:办公自动化

刘冰

摘 要:Word操作题涉及文字正确率以及各种图文混排格式及表格的相关知识点,让计算机取代人工批改,实现办公自动化,能够极大提升工作效率。对目前自动改卷策略进行研究与比较,设计并实现基于VBA的Word自动阅卷系统,对Office结果文档模型进行分析,采用VBA获取文档内容,提取对象及属性的方法,并在采用模块化设计的前提下,摆脱对出题格式限定的问题。实验结果表明,系统运行稳定,实现了大批量学生Word题目的自动阅卷功能,在获得阅卷正确率的同时,极大减轻了阅卷人员的工作压力。

关键词:VBA;自动阅卷;文档模型;办公自动化

DOI:10.11907/rjdk.171659

中图分类号:TP319 文献标识码:A 文章编号:1672-7800(2017)009-0134-04

Abstract:Word operating-question involves the correct rate of text and photo text format and form related knowledge points. So how to make the computer instead of manual making, so as to achieve office automation, which is the purpose of design the system. Based on the comparison of current automatic marking strategy, the design of the system uses an analysis of the office results document model, to get the document content, extraction methods and attributes of the object by using VBA, and meanwhile modular design can get rid of the problem, which is limit of the setting topic. The experimental results show that the system runs stably, and achieve the automatic marking function of large quantities of students Word topics. It can greatly reduce the pressure of the marking staff while obtaining the correct rate.

Key Words:VBA; automatic scoring; document model; office automation

0 引言

在计算机技术高度发展的今天,熟练使用计算机已经成为个人能力的标志。《大学计算机基础》是我国各大高校中面向众多非计算机专业学生开设的一门基础课,旨在促进学生对计算机基础知识的了解,以及对Office这一办公软件的熟练使用。除了高校以外,一些单位也要求工作人员掌握这一重要软件的使用。笔者所在学校每年学生期末考试提交的Word操作题达到近10 000道,作为主观题,抛开改卷教师人为因素不谈,单从工作量和每题中涵盖的知识点来讲,平均改一个学生的Word题目至少需要3~5分钟,而且还没有考虑文字的正确率,仅仅只是简单的肉眼比对。因此,从解决教师改卷压力、提高改卷正确率、保证改卷公平的角度来讲,建立一个批量的、自动化阅卷系统尤为必要。

1 现状分析

目前,Word的自动化阅卷大致可以分为两种解决策略[1]:第一种策略是通过记录并分析考生的操作步骤实现阅卷评分;第二种策略是通过分析考生实际操作的结果文档来实现阅卷评分。其中,第一种策略的实现大致有两种方法:①构建一个被测软件的仿真系统,这种方法工作量巨大,如果出现了新的软件版本,就需要重新构建仿真,因此适应性很差;②利用Office软件中提供的宏记录功能,在出标准题目时就录制成功,但是此功能也有着明显不足:一是针对每一道题目都必须录制,重复性工作量很大,二是针对不同的判分原则,如果文章内容不同而知识点相同,就存在某种程度的误判,因此这种策略已经很少使用。第二种策略大致可以分为两种方法,具体如下:

(1)使用微软Office的VBA(Visual Basic for Applications)技术。通过OLE(Object Linking and Embedding)编程调用Office应用的目标对象,获取文档内容与属性以实现评分;利用VBA技术分析操作结果,对各种版本的Office应用兼容性好且容易实现;针对每个试题编写相应的阅卷程序段,形成程序段与试题的一一对应关系。这种阅卷方法的准确率高,但是VBA需要在宿主軟件上使用,存在一定的局限性。

(2)运用Office所提供的文档描述信息进行阅卷评分。Office文档从结构上主要有文档主体信息与文档描述头信息两个部分,通过解析文档描述头信息可以得到文档中相关对象的描述,再与标准文档对应信息进行比较来实现评分。但是这种方法的前提是限制文档的格式标准。

2 系统设计与实现

系统采用仿照人工阅卷的模式即结果型评分,即不考虑学生的操作过程[2],仅判断操作后的文档中试题涉及的Word对象的结果状态是否与试题要求一致,进而对操作评分。其中,最关键的技术是打开相应考生试题文档、对试题相关的Word对象属性和方法进行提取和转换。

2.1 技术平台

VBA是微软公司开发的程序语言,可以嵌入到软件中。在支持VBA的软件中可以用VBA进行自动化工作。所有主要的Office程序如Word、Excel、PowerPoint等办公组件中都支持VBA。VBA 提供了访问Office文档的接口,包含大量针对该类文档的函数和对象,使用VBA 编程可以对文档中各对象的属性和状态进行识别和读取,这为系统实现打下了基础。但是VBA本身是需要宿主软件支撑的[3],即无法脱离Word程序独立运行,所以系统采用的VB6.0[4]首先是为了创建Word对象,为使用VBA设计合理框架,其次可以方便UI设计,同时结合本校非计算机专业的考试模式选用Excel进行成绩统计,可以方便后期维护和网上成绩上传。endprint

2.2 系统策略

软件设计的整体目标是为了最大程度地实现Word文档知识点识别的合理性,这样才可以保证考生得到合理的分数。基于此特点,设计系统框架如图1所示。

数据进入主要指两个待比对的Word文档,数据输出主要指最终得到的学生分数及评分情况记录。最重要的是处理模块,此模块的重点在于要进行两次处理:预处理阶段和二次处理阶段。这样设计的原因在于,如果仅仅是提取Word格式等知识点比对,会出现一种问题,即文字内容可以随意输入,比如整篇文字都是“中”字(跟标准文档严重不吻合),而那些常见的排版知识点,如段落格式、字体格式、图片等依然正确,如图2所示。

通过第一次预处理阶段操作,提取出学生文档和标准文档的纯文字部分,然后利用建立起标准文档的数据字典,再利用算法比对文字输入正确的情况,为后期进行格式知识点判断给出指导分数。

在二次处理阶段,设计的操作是分别对Word文档对象[5]中的各种属性进行比对,包括字符格式化、段落格式化、页面格式化、表格及图文混排等。每个大知识点下又包括很多小的知识点,比如字体属性,包括字体类型、字体大小、字体颜色、下划线;表格有行高、列宽、表格的边框和底纹等[6]。因此,将每个知识点分成不同的模块,通过模块来实现各知识点内容的判断。同时,这样的模块化设计也方便后期不同考试标准的制订修改。

2.3 系统实现

系统流程如图3所示。在初始化阶段,需要利用VB建立起Word的后台服务,这样就可以开始使用VBA。但要注意到VBA操作Office文档对象时,即在整个阅卷的过程中是不能够被打断的,而且当连续批改多份试卷文档时,会在下一次打开文档时,产生错误代码“462”,即“远程服务不存在或不能使用”。解决方法是:在打开Word只初始化一次,然后改完一份试卷时,不退出Word服务,只是关闭相应文档,等到所有文档批阅完毕后,最终退出Word的Application[7]。

实现代码如下:

Public xlm As Excel.Application

Public wrd As Word.Application

Set Form1.wrd = New Word.Application

Form1.wrd.Visible = True

Set xlm = CreateObject("Excel.Application") '打开电子表格,用于统计分数结果

xlm.Visible = True

上述步骤实现了Word和Excel的Application的后台驻留。

2.3.1 预处理阶段

为了获得纯文字,考察出学生文字输入能力,就需要排除多余的干扰因素,比如有些学生会在插入图片时保留“画布”,还有些人会添加制表符"^t"或手工回车符"^l"及手工分页符"^m"等。

实现算法如下:

Dim stutem$, biaotem用来保存两个临时的学生文档名和标准文档名

然后调用多个剔除因素的模块:

Call tihuan(stuname, biaoname, cishustu, cishubiao)

剔除手工插入的回车符、分页符等。

Call table_move(stuname, biaoname, cishustu, cishubiao, biaotem, stutem)

调用移除表格

……

Call creat_dict(a(), b(), stuchang, biaochang, numstu, numbiao, stuname, biaoname)

调用建立两个数据字典的模块。

到此为止,系统得到了纯文字部分。

Dim wrcount As Integer, wrnum1 As Integer, wrhfnum As Integer

wrcount = wenzipan(a(), b(), stuchang, biaochang)

这里调用一个函数判断文字的正确率,即比对学生的文字字典和标准的文字字典。

If wrcount > 200 Then wrcount = 200

这里依照考试评分标准(本校是打字占10分)

错字超过200字,就按200个错算,因为每20个字,扣1分,最多扣10分。

fenshu = fenshu-wrcount \\ 20

Print #1, "因为字数的问题,错字的问题,学生还剩分数="; fenshu

将扣分情况写入到文本文件#1,以便查阅。

2.3.2 二次处理阶段

此阶段先处理对各种图文混排格式知识点的提取,由于点太多,这里只对标题判断的算法处理作介绍。Word中的标题一般是艺术字或者样式格式,标准文档里是很正规的某个,而学生文档可是会出现各种各样的形式,在算法中都需要注意到。

模块设3个参数,分别用来代表两个文档名和分数:

Sub biaoti(ByVal stuname As String, ByVal biaoname$, wrbiao As Integer)

先設flag标志变量:

For 从段落1到尾部

If Documents(biaoname).Paragraphs(i).Style 即不是正文也不是纯文本Then

段落样式如果不是正文,那肯定是样式:endprint

b(1) = Documents(biaoname).Paragraphs(i).Style '样式名

b(2) = Documents(biaoname).Paragraphs(i).Range.Text '标题内容

b(3) = Documents(biaoname).Paragraphs(i).Alignment '标题对齐方式

flag = True '找到标志

Exit For

Elseif Documents(biaoname).Paragraphs(i).Range.Text <> vbCr Then

否则如果不是样式,则肯定是正文,先判断是否为空段落。

For Each cc In Documents(biaoname).InlineShapes '按照嵌入式图片考虑

If cc.AlternativeText <> "" Then '此条件用来判断是否为艺术字

b(1) = Documents(biaoname).Paragraphs(i).Style

'由于嵌入也属于正文,所以可以用段落的样式,但结果肯定是正文样式

b(2) = cc.TextEffect.Text '艺术字的内容

b(3) = Documents(biaoname).Paragraphs(i).Alignment '段落的对齐方式

flag = True

End If

If flag = True Then Exit For '找到,就退出

Next

End If

Next i

If flag <> True Then '若既不是标准标题,也不是嵌入式,则考虑环绕的艺术字

后续还需要对学生的文档进行同样的操作,然后比较两个数组a和b,得出知识点的评分结论。

3 系统操作与效果

本系统重在操作的方便性,开始阶段,只需要用户确定出标准文档的目录位置,然后选取需要评阅的学生文档(可以多份)。

为了让用户能够方便地观察阅卷情况,系统在界面的底部设置了状态栏,显示出总共选定的文件数目、正在处理的文件名字,而且特别加入了常规等待过程中的进度条,如图4所示。

实际测试结果如表1所示,改卷效率得以极大提升。

4 结语

本文基于VBA技术设计并实现了Word自动阅卷系统。该系统能够消除以往人工阅卷过程中主观因素造成的对试卷的误判、漏判。此外,还加入了对提交多份试卷取最高分的判断功能,极大减轻了教师阅卷的工作压力。实际应用表明,该系统能够稳定、高效地运行。后续将在文章查重方面作深入研究,争取取得新的突破。

参考文献:

[1] 汤克明,陈峻.Word自动阅卷系统的设计与实现[J].计算机工程与应用,2008,44(35):69-72.

[2] 林关成.基于VBA的Office操作题自动阅卷技术研究[J].信息技术,2013(7):83-86

[3] GUY HART-DAVIS.VBA从入门到精通[M].第2版.杨密,杨乐,柯树森,译.北京:电子工业出版,2008.

[4] 郑阿奇.Visual Basic教程[M].第2版.北京:清华大学出版社,2010.

[5] 王亚利,李井竹.Word操作题自动阅卷技术的研究与实现[J].宁波职业技术学院学报,2009,13(2):84-87.

[6] 刘玉梅.用VBA的Word操作题自动阅卷方法的研究与实現[J].计算机教育,2007(24):146-149.

[7] 廖丽嵘.基于VBA的自动改卷系统的设计与实现[J].电脑知识与技术:学术学流,2011,7(19):4594-4595.

(责任编辑:孙 娟)endprint

猜你喜欢

办公自动化
浅谈办公自动化系统的设计与应用
办公自动化中的计算机应用
办公自动化系统软件教学探索
办公室自动化、办公自动化与OA
沪苏浙高速公路办公自动化系统设计
利用办公自动化进行图书馆管理