免费论文查重: 大雅 万方 维普 turnitin paperpass

谈批改对Word表格插入题自动批改技术研究与实现

最后更新时间:2024-02-13 作者:用户投稿原创标记本站原创 点赞:17407 浏览:72798
论文导读:
摘 要:基于实践、结合实例,本人对Word表格对象进行了分析,对Word表格插入题操作的自动批改技术进行了研究,总结出带有规律性的实现方法。
关键词:Word;表格;自动批改
1671-7503(2013)13/15-0140-04
一、引言
在计算机基础教学中,制作表达某种信息或关系的Word表格是每个学生必备的操作技能。在我们的工作、学习、生活中,用Word制作的表格可谓无处不在。那么,如何评价学生用Word制表的技能呢?VBA程序能够帮助我们对学生的制表技能做出评价。当把这种评价落实到每一行的VBA代码上时,又将如何实现?下面结合实例阐述Word表格插入题的自动批改技术。

二、实现过程

(一)例题再现(如图1)

(1)将文档上方的表格(题中称之为表格1),复制、粘贴到其下方(复制后的表格称之为表格2)。以下所有的操作均在表格2上进行。
(2)将第1行第1列与第2行第1列中的文字内容对调。
(3)将第1行第5列单元格拆分成一行3列;删除原有的“综合”字段;在新添加的3个单元格中依次输入下列文本:物理、化学、生物。
(4)在第2行最后一列用求和公式计算出总分。
(5)将新插入的3个单元格对齐方式设置为中部居中。

(二)关键代码解析

1.读取单元格文本

判断第2小题中两个单元格内容是否对调,识别第3小题中是否在新添加单元格中输入对应的文本,采用的是同一种解法。下面,以判断第1行第1列单元格的内容是否为“考生姓名”这一考点分析具体的解法。
在VBA程序中,主要利用Table对象和Tables集合对象处理表格。其中,Table对象代表一个表格,Tables则是所有Table对象组成的集合。上述试题中的表格2用VBA语言来描述就是Tables(2);在表格内部,使用Cell对象来访问具体的单元格,第1行第1列,用VBA代码来写就是Cell(1,1)(如图2);要读取第1行第1列单元格中的文本内容是否为“考生姓名”,需要调用left函数来实现。因此,要判断第1行第1列单元格的内容是否为“考生姓名”如图3所示代码。
If Left(Tables(2).Cell(1, 1), 4) = “考生姓名”Then
(取得相应的分数)
Else
(提示:表格2
第1行第1列单元格中的内容不是“考生姓名”。)
End If

2.查找单元格文本

在拆分单元格时,默认情况下,Word程序会保留“综合”字段,为判断考生是否将“综合”字段删除,可采用“遍历算法”——遍历表格2中所有单元格——查找“综合”字段。其代码如下:
Dim celTable As Cell
Dim rngTable As Range
For 论文大全www.7ctime.com
Each celTable In ActiveDocument.Tables(2).Range.Cells
Set rngTable = celTable.Range
rngTable.MoveEnd Unit:=wdCharacter, Count:=-1
If rngTable.Text = "综合" Then
(提示:“综合”字段没有删除!)
Else
(取得相应的分数)
End If
Next celTable

3.突破表格公式数据计算甄别之难点

使用表格公式进行数据计算是Word制表技能考核的一个难点。许多考生或因对单元格地址命名规则不熟悉,特别是对非规则表格的单元格地址无法做出准确的判断而导致不会使用表格公式进行计算,或直接调用操作系统提供的“计算器”程序进行计算后,将计算结果手动填写到单元格中。这样的误操作如何用VBA进行甄别?下面,先谈一谈表格公式与域的密切关系。
通常情况下,通过“表格→公式”命令在单元格中插入公式后,计算结果会直接显示出来。当我们选中计算结果后,就会发现计算结果下面“隐含”的底纹。这个底纹就是我们常说的“域底纹”。如果在选定的计算结果上单击鼠标右键,选择快捷菜单中的“切换域代码”命令,其结果显示为带有大括号的代码(如{=SUM(LEFT)}) ,当我们再次选择这行代码从弹出的快捷菜单中选择“更新域”命令,计算结果又显现出来。也就是说,在Word表格论文导读:
中,表格的计算是通过插入“域”,确切地讲应该是“=(FORMULAR)域”的方式来实现的。等号“=”是在单元格中输入公式时必用的字符,是公式的标志性字符;“FORMULAR”的本义就是公式。在上面的实例代码“{=SUM(LEFT)}”中,“{ }”是域字符,位于其中的代码,即表格公式,就是域代码;执行“更新域”命令后显现的数值,是公式的计算结果,是域结果。
在VBA程序中,Field对象代表一个域。Field对象是Fields集合中的一个元素。使用Field对象时,用Fields(index)可返回单个的Field对象,其中,index是索引序号。
针对上述试题,在对单元格进行比较时,不但要对单元格是否存在域进行判断,同时,要对域代码(Fields(1).Code)和域结果(Fields(1).Result)进行比较,这样才能评价考生是否使用了正确的公式进行计算。所以,针对第4小题的评判代码是:
If ActiveDocument.Fields(1).Code = "=SUM(LEFT)" Or ActiveDocument.Fields(1).Result = "682" Then (取得相应的分数)
Else
(提示:最后一列输入的数值不是通过公式计算,很可能是手工填写的。)
End If

(三)试题文档的合理布局

从图1——试题文档页面截图上可以看出,该文档分为三个区域,⑴区为答题区,是考生自由编辑区;⑵区是试题要求及表格样式图片区;⑶区是“交卷”按钮存放区。特别值得一提的是⑵区——试题要求及修改后的表格样式图片区。

1.⑵区的由来

(1)在Word文档窗口下,执行“视图→工具栏→控件工具箱”命令,弹出“控件工具箱”窗口;单击“设计模式”按钮,进行入控件设计状态;将光标定位到试题文档页面中间位置,双击工具箱上的“图像”控件,则“图像”控件插入到相应的位置。
(2)右击页面上的“图像”控件,从快捷菜单中选择“属性”命令,在弹出的“属性”设置窗口中,做如下设置:“AutoSize”和“Enabled”属性值为“True”;单击“Picture”属性后的按钮,浏览并找到事先设计好包含试题要求和修改后的表格样式的图片文件,所选图片就“固定”在文档的相应位置,关闭“属性”窗口。
(3)再次单击“控件工具箱”中的“设计模式”按钮,关闭“控件工具箱”,退出设计模式。

2.⑵区的作用及意义

将修改后的表格样式图展示给考生,是否会失掉考核的意义呢?其实不然。这是因为Word表格插入题操作考核的第一要点是考生在单位时间内所绘制的表格结构是否与考试要求相符,是由“表格结构”这一特殊属性所决定的。何谓表格结构?一定的行数、列数、单元格数及相互之间的对应关系。无论从课堂上还是现实生活中,只有表格结构正确的表格才有使用价值。在国家计算机等级考试·一级考试的试卷中,或要求将几行文字转换为几行几列的表格,或像上面例举的试题一样,先提出修改要求,然后在题后附上修改后的表格样式图,凡此种种,是为了防止考生因对表格结构理解有误而导致相关操作被判无效而大量失分的一种“安全”措施。

(四)程序设计细节谈

1.适度的提示

当上述的⑵区内容设计完成后,考生不能对其进行移动或删除操作,但总是习惯性地用鼠标点击。有必要给考生一个明确的提示,为此,对考生的鼠标点击事件设计了如下的代码:
Private Sub Image1_Click()
If MsgBox(“这是操作要求!单击“确定”按钮后,光标将自动返回页首,安心做题!!”, 31,“提醒”) = vbYes Then
Yes = 1
Exit Sub
Else
Selection.StartOf Unit:=wdStory
End If
End Sub

2.对“随意性”操作的约束

自动论文导读:
批改类型的试题文档以即时显示操作结果、即时评判而深受广大师生的喜爱。事实证明,当考生因对某一考点的理解并不十分明确的情况下,会习惯性地单击“交卷”按钮,以期从弹出的评判结果窗口中查找到一些具有提示作用的信息,尽管提示信息只是简单一句话。如此下去,考生会形成一种思维定势,只要是这种类型的考试,就可以边做边修改。为有效地阻止考生的这种“随意性”操作,设计了如下代码:
If ActiveDocument.Tables.Count = 1 Then
MsgBox “表格2还没有创建无法提交试卷!单击“确定”按钮后,程序将关闭。”, vbQuestion
Application.Quit SeChanges:=wdDoNotSeChanges
End If
运行的结果——当考生没有进行复制表格1的操作,也没有创建表格2的情况下,单击摘自:毕业论文答辩流程www.7ctime.com
“交卷”按钮,试题文档将直接退出。
这个设计也是基于Word程序“面向对象”这一运行原理,制表的第一步就是绘制一个表格,有了操作对象即新创建的表格后,才能进行后续的操作。通过这种近乎严苛的方式提醒学生,对某些知识点的考核,有些操作是有严格的顺序的,是不可逆的。
三、结束语
上述测试只是Word表格插入题系列考核中的一种题型。当然,要制作出具有一定难度的Word表格插入题,还需要更加深入地研究VBA的Word对象,根据相关知识点的考核要求,仔细推敲每一行VBA代码,设计出合理、有效的VBA代码。
以上测试在Windows XP、Office 2003的环境下测试成功。[编辑:张 博]