基于AutoIt3和VBA的Word操作题自动批量批改程序的设计与实现
2014-11-01何剑
何 剑
(扬州职业大学,江苏扬州 225009)
大学计算机信息技术课程是普通高校和高职院校大一学生的一门公共基础必修课,主要讲授两部分内容:计算机信息技术的基础理论知识、计算机常用软件(Office应用软件为主)的基本操作技能。在Office应用软件的实验教学中,为了提高学生的实际操作水平,需要教师及时批改学生的课堂或课后操作题作业并给出错误反馈。众所周知,Word操作题的批改工作量很大,且人工批改难免误判,本文针对该情况,提出一种Word操作题自动批量批改程序框架,并应用AutoIt3和VBA具体实现。
1 AutoIt3与应用程序自动化
AutoIt3是一种免费的BASIC风格的脚本语言,被设计用来自动化Windows图形用户界面和通用脚本编程;它组合使用模拟击键、鼠标移动和窗口/控件操作,以一种使用其他语言不可能或不可靠完成的方式实现任务自动化;AutoIt3也是一种非常小的、自包含的语言,它可以运行在所有版本Windows平台上而不需要恼人的运行时库[1]。
应用程序自动化,主要指应用程序的自动化技术,即指应用软件的操作步骤、使用流程的自动化技术,具体说来,利用这种技术可以按照人们的意愿代替人们实施对应用软件的自动操作。毫无疑问,AutoIt3就是一种基于Windows平台的应用程序自动化技术。
2 Word操作题自动批量批改程序框架的设计
在Windows GUI环境下,Word操作题的每一小题都会有多种操作手段(下拉式菜单、弹出式菜单、工具栏按钮、键盘快捷键、设置对话框等)、多样操作顺序可以完成同一效果,因此,单个学生Word操作题的自动批改不能依据操作手段或操作顺序,只能依赖操作效果,事实上,教师人工批改也的确是这么做的。VBA是一种可以嵌入Word应用软件使用的编程语言,可以设置或读取Word各类对象的属性,所以,应用VBA自动批改单个学生Word操作题是最合适的选择。在此基础上,应用AutoIt3模拟按学号逐个批改多个学生Word操作题的过程,实现对多个学生Word操作题的自动批量批改程序。
图1即是本文所设计的Word操作题自动批量批改程序框架。在此框架中,“某Word操作题自动批改宏代码”、“作业目录”、“待批改的某Word文件名”这三项需要用户根据具体题目要求在运行程序前确定。以后,无论哪一道Word操作题,只要用户给出这三项,就可以套用该程序框架来实现具体针对某一道Word操作题的自动批量批改程序。
3 Word操作题自动批量批改程序的实现
图1 Word操作题自动批量批改程序框架
本文从大学计算机信息技术课程教材[2]中随机选择了一道Word操作题。调入“操作题”目录下的ED1.RTF文件,按下列要求进行操作:(1)设置页面上、下页边距为2厘米,左、右页边距为3厘米,装订线位于左侧,装订线0.5厘米,每页40行,每行38字符;(2)在正文第二段适当位置插入艺术字“马寅初的贡献”,采用第五行第四列样式,艺术字字体为黑体、40号、加粗,环绕方式为四周型;(3)设置正文第一段首字下沉3行,其余段落首行缩进2字符;(4)将正文中所有的“人口”设置为红色、加着重号;(5)将正文第三段分为偏左两栏,加分隔线;(6)在正文第五段适当位置插入“云形标注”自选图形,设置其环绕方式为紧密型,填充黄色,并在其中添加文字“向传统人口观念挑战”;(7)设置页眉为“人口危机”,页脚为页码,均居中对齐;(8)将编辑好的文章以文件名:DONE,文件类型:RTF格式(*.rtf),存放于同一目录中。下面以该题为例,基于上文提出的程序框架,具体实现针对该Word操作题的自动批量批改程序。
3.1 对Word操作题划分评分点和对应分值
首先依据课程知识点考核要求对该Word操作题的每一小题划分评分点和对应分值。约定该题总分20分,若DONE.rtf文件不存在,即Word-08小题未完成,则该题不得分。限于篇幅,这里只列出Word-06小题的评分点及分值作为范例,如表1所示。
3.2 单个学生Word操作题自动批改程序
然后应用VBA实现按评分点自动批改单个学生所做该道Word操作题的程序。为方便调试,可以在该程序开始处创建文本文件用以保存批改意见、在程序结束处弹出对话框用以显示该题成绩。
表1 Word操作题Word-06小题评分点及分值
限于篇幅,这里只列出Word-AutoBatchCorrectReport-VBA.txt中 Word-06 小题的自动批改宏代码:
3.3 多个学生Word操作题自动批量批改程序
最后应用AutoIt3实现对多个学生所做该道Word操作题的自动批量批改程序。最终程序源文件是 Word-AutoBatchCorrectReport.au3,其中依次调用了Header、Body、Footer三个代码文件。程序文件清单如图2所示。
图2 程序文件清单
脚本 文 件 Word-AutoBatchCorrectReport-Header.au3实现以下功能:(1)弹出程序启动画面;(2)在程序当前目录下新建 temp.doc,将Word简体中文版默认中文输入法切换为英文输入法,打开宏对话框,创建新宏Word-AutoBatch-CorrectReport-VBA,创建到“所有的活动模板和文档”,如果该宏名已经存在,则替换创建,之后出现VBA编辑器窗口;(3)启动记事本软件,给定该程序所在目录,打开Word-AutoBatchCorrectReport-VBA.txt,将记事本软件默认英文输入法切换为中文输入法,全文复制;(4)切换到VBA编辑器窗口,粘贴代码,保存,关闭temp.doc;(5)切换回记事本窗口,关闭记事本软件。
脚本 文 件 Word-AutoBatchCorrectReport-Body.au3主要功能如下:(1)由用户输入或直接设置作业目录,例如:“C:大学计算机信息技术2013英教班”;(2)由用户输入或直接设置待批改的 Word文件名,例如:“DONE.rtf”;(3)在作业当前目录下新建temp.txt,用作临时传递成绩数据;(4)在作业当前目录下新建Word操作题成绩表文件,例如:“大学计算机信息技术-2013英教班-成绩.xls”;(5)统计作业目录下学号文件夹的数目$DirNum;(6)按照有效学号顺序,依次进入每一个学号文件夹(“XX”),循环执行以下三个步骤:(A)创建“XX批改报告.txt”;(B)查询“操作题”目录下的“DONE.rtf”(文件名不区分大小写)是否存在。如果此文件存在,则打开它,执行宏 Word-AutoBatchCorrectReport-VBA,之后从temp.txt中获取成绩;如果此文件不存在,则设置成绩为0,并将该种情况的批改意见写入“XX批改报告.txt”;(C)将学号和成绩格式化写入Word操作题成绩表文件。限于篇幅,这里只列出该脚本文件的核心代码:
脚本 文 件 Word-AutoBatchCorrectReport-Footer.au3实现以下功能:(1)到程序目录下打开temp.doc,将Word简体中文版默认中文输入法切换为英文输入法,打开宏对话框,删除宏Word-AutoBatchCorrectReport-VBA,保存并关闭 temp.doc;(2)删除作业目录下的temp.txt;(3)删除程序目录下的temp.doc;(4)弹出程序结束画面,询问是否自动打开Word操作题成绩表文件。
4 Word操作题自动批量批改程序的运行
本文以扬州职业大学2013英教班全体28位学生所提交该道Word操作题为案例来运行自动批量批改程序进行验证。学生的作业目录组织如图3所示。
图3 作业目录
在 CPU为 Pentium D 2.66GHz、内存为512MB、操作系统为Windows XP SP2简体中文版的PC上,首先安装MS Office 2003简体中文版,默认中文输入法,调低宏安全性,取消“使用字符单位”,设置*.doc默认关联程序为Microsoft Office Word;然后双击图2中的 Word-AutoBatch-CorrectReport.exe运行自动批量批改程序;最后,所有学生该道Word操作题的成绩都保存在“大学计算机信息技术-2013英教班-成绩.xls”中,图4仅截取前3位学生的成绩作为示例,此外,每个学号文件夹下都会生成一个对应该学生的批注文件“XX批改报告.txt”,图5截取第1位学生的批改报告作为示例。
图4 前3位学生的Word操作题成绩
图5 第1位学生的批改报告
6 结论
本文提出的Word操作题自动批量批改程序框架简单实用,直接套用它很容易实现具体某道Word操作题的自动批量批改程序。本文所写程序在上述PC上运行自动批量批改28道Word操作题合计耗时不足3分钟,对比人工批改每道Word操作题约5分钟,效率提高约50倍,如果PC配置更高,则耗时更少,效率提升甚至数百倍。无论是学校教学,还是社会培训,均可借助Word操作题自动批量批改程序框架轻松实现针对Word操作作业的自动批量批改或Word操作考试的自动批量判卷。
[1]JONATHAN BENNETT. AutoItScript[EB/OL].(2013-08-10)[2014-01-02].http://www.autoitscript.com/site/autoit/.
[2]孙华峰.信息技术实验指导[M].北京:高等教育出版社,2013.