Excel 文档自动批阅程序的研究与开发

时间:2022-07-19 08:16:09

Excel 文档自动批阅程序的研究与开发

摘要:Excel因功能强大、操作简单、适用广泛成为当今最为流行的电子表格软件,也因此而成为最为广泛的教学软件之一。在教学中对学生的Excel作业文档如何批阅?毫无疑问用计算机自动批阅是快速准确解决的唯一途径。笔者对此进行了深入的分析和探讨,并成功编制出Excel自动批阅的程序并成功投入教学,受到了良好的教学效果。

关键词:Excel;试卷;批阅;VBA

中图分类号:TP319 文献标识码:A 文章编号:1009-3044(2013)28-6327-05

Excel是当今最为流行的电子表格软件。它功能强大、适用广泛、操作简单,是所有从小学到大学以及社会培训机构计算机基础教学中必不可少的教学软件之一。但在教学中遇到一难以解决但又无法绕过的问题,就是如何批阅学生上交的Excel作业文档?人工批阅是很不现实的,费时不说难以准确。为此我进行了一些研究,并成功开发了自动批阅Excel文档的程序,既方便又迅速且准确的解决了此难题。在近几年的教学实践中使用效果很好。

1 解决思路

Excel文档的存储结构微软并未公开,这给我们了解学生文档的内部结构带来了困难。但在Office中微软却给我们提供了一个万能工具VBA,通过它可以获取Office文档中的对象及其属性,从而了解文档内容判断对错与否,这是我们得以批阅Excel文档的先决条件。

解决Excel批阅的主要思路是预先创建一个数据库,记录下本次需要批阅的所有考核项目、考核区域、考核知识点等信息,再做好本试卷的标准答案。批阅时按数据库中的批阅项目将学生解答与标准答案进行比对,从而进行判断学生解答的对错。

2 开发软件及数据库的选择

目前许多开发工具都可以针对Excel进行操作。但Excel和其它Office软件都自带了一个开发环境,在此环境中开发完全可以满足本项目的要求。而且Excel所提供的宏录制功能可以一字不改的将录制的代码移植到程序中,给对象和属性的获得以及代码的编制带来了便利,调试程序时也免除了在多个软件中来回切换之苦。另外本项目所使用的数据量很小,Excel本身就是一个数据库软件,完全可以存放批阅所需的数据,批阅结果的输出可以存放在其它数据库中,但查看不方便,软件移植性差。程序中采用Excel工作表存放批阅结果数据,老师和学生可以很方便的利用已掌握的Excel所提供的筛选、分类汇总、数据透视表等强大的数据统计功能了解班级和各自的批阅结果。因而我的开发环境和数据库全部使用Excel。

3 数据库结构

学生在做题时一般是以试卷为单位的。创建数据库的首要任务就是把这套试卷需批阅的相关信息记载在数据库中作为批阅的依据。其结构部分内容如下表1:

考虑到程序还要自动批阅Word、PowerPoint、FrontPage、Access等软件的作业文档,所以设置了“题型”列,“试卷”是给各套试卷所做的一个编号以区分不同试卷。“批阅项目”是要批阅的项目名称,如单元格、边框、图表等。“工作表名”是本项目的批阅内容在哪个工作表中。“区域”表示要检查的单元格范围。如:B3:C10等,当然象图表、工作表改名等是无此项的。“考点”是具体的考核即需批阅的内容。如单元格项目的考核点有:内容、公式、外表引用、小数位数、百分比、千位分隔符等内容。本程序中所使用的试卷全部来自江苏省大学生计算机一级考试试题,并以“2013春1”等为试卷名。

4 批阅所及涉的相关对象与属性

自动批阅的思路就是将解答与标准文档中的相关内容取出来进行对比。这里使用到对象的概念。Excel中有许多对象。利用不同对象对文档的所内容进行存储和管理。Excel有完整的按层次组织的对象体系,这里无法详细解释,有兴趣可查看Excel编程环境VBE中的帮助信息和相关资料。下面只对本软件所涉及的几个主要对象简单介绍。

1)应用程序对象Application

这是Excel程序的最高层对象。代表整个Excel应用程序。其它所有对象都是它的子对象。表示时不同对象间用“.”隔开。但为表示的方便该对象默认可省略不写。Application有许多属性来表示或设置Excel应用程序的使用状态。

2)工作簿集Workbooks和工作簿Workbook对象

Workbooks是已打开的工作簿的集合,可以用索引号或工作簿名称表示其中的某个工作簿。如Wordbooks(1)或Workbooks(“计应管理.xls”)。Workbook是单个工作簿对象,指具体的某个工作簿。与此相关的有二个很重要的对象:Thisworkbook和ActiveWorkbook。前者指VBA代码所处的工作簿,后者表示当前激活的工作簿。

3)工作表集WorkSheets和工作表WorkSheet对象

WorkSheets是Workbook的下层对象,表示该工作簿中的所有工作表。用索引号或工作表名表示某个指定的工作表。如WorkSheets(1)或WorkSheets(“sheet1”)。当Sheet1工作表位于第1个时二者表示的是同一工作表。

4)单元格区域Range对象

这是Excel工作表中表示单元格区域的对象。它可以表示一个单元格、一批单元格或整个工作表中的所有单元格。单元格可以是连续的也可以是不连续的。如在A1单元格表示为Range(“A1”),A3到C8的区域可表示成:Range(“A3:C8”)。A1,A3,A5可以表示为Range(“a1,a3,a5”)。这与Excel中的使用是一致的,很容易理解。

5)单元格Cell对象

这是用行列号表示的单个单元格对象。如;Cell(2,3)表示第2行第3列单元格。在需对单个单元格有规律依次循环操作时非常有效。

6)图表Chart对象

图表是Excel的一大特色。Chart是图表对象。在一个工作表中可以有多个图表即多个Chart对象。通过ChartObjects对象集指定索引号或图表名称获取指定的图表。下面的语句先定义一个tb对象变量,再将Sheet1工作表中的第1个图表赋给tb对象变量。

Dim tb As Chart

Set tb = Worksheets("Sheet1").ChartObjects(1).Chart

If tb.Hastitle then Msgbox tb.ChartTitle ‘若图表有标题则显示

Chart有许多属性表示了该图表的图表类型、数据源、标题及内容等一系列特性。

Excel还有其它许多对象,这些对象及上述各对象的相关属性可以通过宏录制获得。也可通过VBA编辑器的帮助获取。

5 学生作业文档的取名与存储

1)学生作业文件名称的规范是实现计算机自动批阅的基础。本程序中规定按下列规则取名:“班级名学号姓名试卷名”。如:12服设321205013201陈清2013春1.xls。文件名中包含了班级、学号、姓名、试卷等信息,通过扩展名了解文档类型。

2)作业文档的组织结构

通常自动批阅的是Excel某一套试卷所有学生的文档。所以学生文件按试卷存放,即同一试卷的所有学生解答文档存放在一个文件夹下,用试卷名作为该文件夹名称。文件夹层次结构设计为:班级名/程序名/试卷名/作业文档。如:12服设32/Excel/2013春1/12服设321205013201陈清2013春1.xls。

3)标准文档的存储

程序中预先做好的标准文档按“软件名/试卷名”分层存放。

6 批阅的总体流程

启动Excel批阅程序打开[Excel批阅]对话框,如下图。设置班级、标准文档(即试卷名)、学生作业文档目录。点击[开始批阅]按钮后自动批阅一张试卷的所有学生文档。

7 具体项目批阅实现举例

根据江苏省一级考试的题型,软件把试卷中对Excel的操作分为:数据读入、单元格、边框、图表...等13个批阅项目。每个项目均有编制了一个过程进行批阅。如:批阅单元格的“单元格”、批阅图表的“图表”等过程。每个项目中有若干个具体考核点。通过对每个考核点的检查对比实现批阅。由于篇幅的限制这里仅以单元格和图表批阅的个别考点为例简要说明如下。

单元格是最常见的Excel批阅项目。下面是批阅单元格的过程,参数依次是:批阅项目工作表、结果输出工作表、班级、学号、姓名、试卷名、标准区域、解答区域、当前批阅项目所在行号。本过程调用一次则批阅项目表中的一行,即一个项目。

其中:bz和jd均是从参数中传来的Range对象,包含了需批阅判断的单元格区域。通过变量i的循环用bz.Item(i)和jd.Item(i)历遍区域中的所有单元格。单元格的考点有:内容、有无公式、绝对地址、百分比、小数位数、外表引用、左对齐、表内引用、千位分隔符。

其中单元格的内容属性为:Valuse或Text,这也是Range的默认属性,可以省略不写。有无公式的属性为HasFormula,若为公式肯定是以“=”开头的,所以也可以判断Formula属性值的第1个字符是否为“=”作为判断依据。绝对地址是在行号或列表前添加“$”表示的,判断时用instr()函数查看“$”字符是否在单元格的Formula属性中存在。百分比通过在单元格的NumberFormat属性中含是否有“%”符号来批阅。单元格的小数位数是在NumberFormat属性中用“0.000_”字符串表示的,程序中使用instr()函数找出“0.”与“_”二字符间0的个数获取小数位数。Excel在引用非当前工作表时必须在工作表名称与单元格地址间用“!”隔开,这也就成为判断的依据。左对齐是水平对齐属性HorizontalAlignment的一个取值,取出该属性的值再与标准对比即可判断。表内引用的批阅主要是防止考生在题目要求引用时直接采用相应单元格的值进行计算,引用就是在公式中使用地址,地址是由字符和数字组成的,如果公式中未使用引用则公式中无字母,由此而进行判断。Excel的千位分隔符是在单元格的NumberFormat属性中用“#,##” 字符表示的,这也成为批阅判断的依据。过程最后调用了sc输出过程,将本项目的批阅结果送入结果工作表中输出。界面如下。

制作Excel图表是每套试卷的必答题。软件编制了一个“图表”过程批阅图表。过程的参数如“单元格”过程,只是bz、jd二对象变量分别表示需批阅图表所在工作表。过程中首先判断指定工作表中图表的数量,如为0则考生图表未解答,则图表的所有考核点均为0。否则,用Set bzc = bz.ChartObjects(1).Chart和Set jdc = jd.ChartObjects(1).Chart语句将标准和解答图表分别赋给bzc和jdc二图表对象变量,使接下来的编程思路更清晰、代码更简单。语句中取出ChartObjects索引号为1的图表对象是基于工作表中只有一个图表考虑的,一般考试不会也没有必要要求考生创建多个图表。图表的考核点比较多,主要有:图表类型、数据源等16个知识点。它们所对应的相关属性如下表2:

有了属性只要对解答与标准相应属性进行对比就可以批阅了。

8 其它各类操作题的批阅思路

1)数据读入、列排序、数据透视表。这几类题型实际上是无法了解其操作方法的,只要判断操作结果。对于此类试题只要给定区域对内容进行对比即可。

2)合并单元格的批阅

在批阅合并单元格时实际参数是需要合并的Range对象变量,如果此区域已合并则bz.MergeCells属性返回真。其它如内容、居中、字体、字号、颜色的属性分别为:bz.Item(1).Text、bz.HorizontalAlignmentbz.Font.Name、bz.Font.Size、bz.Font.ColorIndex。

3)筛选的批阅。从筛选的结果看,筛选并不是将数据行删除而是隐藏,批阅时将批阅区域内的各行隐藏属性与标准做对比。

4)边框底纹。Borders是Excel的边框集对象,该集合包含四个边框线和水平与垂直内框线,并将这些边框作为一个整体进行操作。也可以用索引号表示上下左右水平垂直六个独立的边框。索引号分别为:xlEdgeTop、xlEdgeBottom、xlEdgeLeft、xlEdgeRight、xlInsideHorizontal 或 xlInsideVertical,分别表示上下左右水平垂直。这些对象的属性主要有:线条样式、粗细、颜色分别用LineStyle、Weight、Color属性表示。底纹用bz.Interior.Color属性表示,其中bz是Range区域对象。

5)条件格式

Excel可以通过条件格式功能对指定区域的颜色或边框进行自动设置。条件可以是多个,其条件数量由bz.FormatConditions.Count属性设定。条件的具体内容由bz.FormatConditions(1).Operator决定。其中:bz是Range区域对象变量,索引号i是条件序号,设定的颜色和粗细分别由bz.FormatConditions(1).Font.ColorIndex和FormatConditions(1).Font.Bold二属性决定。

9 结束语

Excel的计算机自动批阅是编制Office文档批阅程序中最方便的。这是因为Excel提供了比其它Office程序更方便、功能更强大的宏录制功能。其二Excel对批阅对象的准确定位可以方便的用Range对象实现,其三用VBA对Excel研究的书籍很多,网络咨询信息量也很大,提供了更多的帮助。

参考文献:

[1] 欧阳明慧. Excel VBA技巧实例手册[M].北京:北京希望电子出版社,2009.

[2] 韩小良.Excel VBA高效办公实用宝典[M]. 北京:中国铁道出版社,2009.

[3] 赵志东.Excel VBA技巧应用[M]. 北京:人民邮电出版社,2007.

[4] 伍云辉.Excel VBA典型实例大全[M].北京:电子工业出版社,2008.

[5] 韩小良.Excel VBA活用范例大辞典[M]. 2版.北京:中国铁道出版社,2011.

上一篇:后定位时代需要立体品牌策略 下一篇:浅析我国公共文化服务均等化