正文:摘要:通过利用 VBA 在 Excel 中编写的“宏” ,实现对计算机文化基础excel部分进行自动评判 ,旨在提高教学工作的效率。
关键词:VBA,宏,工作表
《计算机文化基础
》是为非计算机专业的学生开设的一门计算机基础课,本课程涉及Windows、Word、Excel、Powerpoint、Forntpage和Internet技术。这些知识和技能对于信息时代的大学生来说是必不可少的。Excel是微软公司出品的Office系列办公软件中的一个组件,确切地说,它是一个电子表格软件,可以用来制作电子表格、完成许多复杂的数据运算,进行数据的分析和预测并且具有强大的制作图表的功能;对教师来说就是处理统计学生成绩的好帮手。
Visual Basic编辑器是为用户设计的编辑宏代码的开发环境 ,宏是一系列命令和函数组成的任务集合 ,存储于 Visual Basic模块中,在需要执行该项任务时可随时运行.利用 VBA(Visual Basic for Application :VB 提供的嵌入到 Excel 中的程序设计语言)在 Excel 的 Visual Basic编辑器中编写“宏” ,将一些经常重复的任务用“宏”来自动执行。
计算机文化基础中包含6小部分,其中每部分都涉及很多小的细的知识点,再有就是上机操作,每次上机课都是六个教学班180多人一起上课,采用任务教学法,每次课一个任务,那就是180多份作业,如果单纯的用手工去批改学生的作业,工作量是非常大的,基于以上原因,开发了作业自动评分系统,本文只介绍Excel 部分是如何实现的。Office 内置的 VBA 组件可以为解读Office 文档提供一种方便的途径. 利用宏操作 ,不难发现 Office文档的内容和各种格式设置均作为同对象的属性值保存在文档中。利用 VBA 提供对象 ,可以从文档中取出其有关的属性值 ,而依这些属性值显然可以用来判断各种操作的正确否。
一、自动评分的原理Excel 2000 中 ,VBA 为其提供了144 个有关的对象.各对象之间按其实例在 Excel 文档中的隶属关系划分层次。如 workbooks代表当前打开的所有工作薄对,worksheet s(1)代表一个工作薄中的第一个工作表,则 worksheets就处于 workbooks的下一层次。各对象又都有各自的事件、属性和方法,所有这些结合在一起构成了 VBA 与 Excel 的接口.对于单元格,其值及各种格式参数均可由其对应的属性值返回,而对于“筛选”之类的操作,只要按照标准方法操作,其有关的信息就会被保存并可由相关的属性值返回。
但是其返回的只是属性,如果想判断,需要先读取这个属性,比如说首先要确定图表的存在,然后再依次判断需要读取的属性时候存在,比如说判断图表标题是否正确,如果不先判断它是否存在的话,那就会出错,导致程序不能继续运行下去。
二、常考知识点的评分对策考生留在答卷文档中的是操作结果而不是操作过程,当然希望每一操作要求,考生都能按照标准方法去实现.但有些操作,如“自动填充”,如果考生没有使用“编辑”菜单中的“填充”,而是逐个填写,这种做法得到的结果也正确但显然违背了命题人的初衷,因此在编写评分程序时,要综合考虑某一操作可能产生的所有结果,制定正确的评分算法。
1单元格和单元格区域的选择
range 属性可用于指定单元格或单元格区域,而通过 value 等下一级属性返回指定区域中的、格式等信息.如果指定的是单元格区域,则因为域中每个单元格的内容和格式未必都相等,此时要求返回 value 等属性值系统就会出错,所以有对单元格区域探查的子过程要注意出错预防,以因为某一份答卷的不正确结果而中止程序的运行。
2 公式的判定
对于在单元格中使用公式,显示在单元格中的公式值.如果一个单元格的值是通过公式得到 ,formular 属性可以以字符串的形式返回指定单格所用的公式。不过考生在使用公式时往往有多选择,比如,要计算“B1 ::B4”的和,考生无论用sum( “B1:B4” )”还是用“= B1 + B2 + B3+B4”都应判为正确答案.所以对于公式的探查,我们先判指定单元格中的值是否正确,如果正确,再判其formular 属性值是否以“=”开头,若是,则得分。
3 图表的判定
对于图表 ,主要关注数据源,如果数据源选择错误的话,那这个图表就不用再看了,其他的再正确也不会得分的, 数据源选择的判断是通过判断先判断系列的个数,然后在判断系列的值,通过ActiveChart.SeriesCollection.Count,这个方法获得的是系列个数的一个数组,然后读出数组里的每一个值和数据源的那个表中的每个值去比较,如果都完全一致,那么说明数据源选择的是正确的,继续判断其他的题目要求。如图标的标题,还有数值轴格式的设置等等。
4 分类汇总的判定
分类汇总形式多样,汇总结果及其存放位置也有多种,这给评分带来难度。不过,很多考试对分类汇总的考核仅局限于一般要求:即先按给定“汇总字段”排序,然后选定“汇总方式”和“汇总项”,汇总结果的存放位置采用默认的“显示在数据下方” .显然,如果能判断出考生所用的“汇总字段”、“汇总方式”和“汇总项”以及是否按“汇总字段”排序,就能给出相应的分值。“分类汇总”按标准步骤做过之后,“汇总字段”值相同的行会排在连续区域,其下方将添加一行用于记录汇总值,汇总值由公式“= subtotal (有关参数)”返回且与“汇总项”同在一列。如果“汇总字段”不要求汇总, “汇总方式”的名称就出现在“汇总字段”所在的列,否则,将出现在该列前离该列最近的、不是“汇总项”的那一列,如果没有这样的列,就在“A”列前插一列用于存放汇总方式名称。如果汇总之前没有排序,“汇总字段”值相同的记录不一定处在连续的行中 ,这样,用于记录汇总值的行数就会比“先排序后汇总”方法所产生的行数多。事先按要求做出一份标准答案,记下其记录汇总值的行数,传给评分子过程用于判断汇总前是否进行过排序。
除上述四种操作之外,常考的还有高级筛选,图表,插入图片、艺术字、文本框,对字体字号的设置等操作.这些操作比较规范,有关信息可以通过其对象的相关属性值返回,因此,可以方便地实现自动探查。
三、有关的 VBA 子过程限于篇幅 ,仅列出“打开工作表”“判断图表数据源”评分的子过程.
(1)判断工作表打开的子过程
Private Sub Command1_Click()
Dim wb As Workbook
Dim f As Boolean
Dim ws As Worksheet
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(App.Path & "\dqb.xls") Then
Set wb = Workbooks.Open(App.Path & "\dqb.xls") ‘打开工作簿
For i = 1 To Sheets.Count
If Sheets(i).Name = "Sheet1" Then '英文工作表名必须区分大小写
f = True
1/2 1 2 下一页 尾页