摘 要:教师一般应用Word来命制试卷,但收集试题和排版工作量非常繁重,利用VBA在Word中的应用,开发一个自带试题库,教师可以对题库进行添加、修改和删除试题等功能;并能够对所选择的题目进行自动排版.教师可以高效完成一份高质量的试卷,彻底减轻教师命制试题的工作量.
关 键 词 :Word;VBA;自动排版
目前大多数学校、教师利用Word命制试卷,需要花费大量的时间来收题、排版,而且排版后的试卷格式也不标准.通过VBA for Word开发一款自带试题库和试卷排版功能的系统,教师可以
对题库中的试题进行添加、修改和删除等管理,对选好的试题进行自动排版,生成标准的、统一的试卷,每位教师都可以在短时间内高效地完成一份高质量的试卷.
一、试卷结构分析
以语文试卷为例,纸型为A3,方向为横向,版面分左右两栏,左边最上面一般为一级标题并居中显示某次语文考试试卷.试卷正文大致包括:基础知识、现代文、文言文和写作四大块内容.基础知识部分主要是:选择和填空,在试卷排版中题目需要左缩;现代文部分主要包含:正文内容和正文后的习题,正文内容标题需要居中,正文首行缩进2个字符;文言文部分的排版和现代文基本相同;写作部分排版比较麻烦的是作文格子的编排,它是上下行之间要空开一行的表格.
二、系统功能模块分析
本系统主要有三大功能模块:添加试题、修改试题(包括修改和删除)和试卷自动生成.数据库采用Access,主要考虑它移植方便、便于管理.试题存放在数据库中,在对大量试卷分析时发现,一个大题中有若干个小题,而每个大题所含的小题数都是不同的,所以在设计数据库时采用了多表并建立关系.
三、系统功能的实现
1.添加试题
在系统设计需求分析中考虑到教师在命制试卷时,收集试题耗时,试题的保密性差,所以在本系统中直接设计了试题库.题库可以对试题进行有效地保密,因为题库量很大,组卷时按条件随机组卷,猜题押宝命中概率很小.有了题库,可以马上启用备用的平行试卷,或在考试前的最后时刻随机决定平行试卷中的一套作为正式考卷,从而达到出其不意的效果.试题库极大地方便了实现计算机科学的管理(修改、增删、试卷合理生成、浏览、打印等),又因试卷的随机生成,提高了试卷的保密程度,从而进一步提高了考试的效果,充分体现出考试的严肃性和公平性.
2.修改试题
该模块主要实现两个功能:删除和修改.教师对该系统库中的试题可以做出相应的修改,或者对不必要的试题进行删除操作.
这一模块与上面的添加试题模块都是引用ADO连接ACCESS数据,并对数据保存、修改和删除.
3.自动排版并生成试卷
该模块主要有两块内容:试卷版面设置和试卷试题设置.
(1)试卷版面设置
用户可以在“试卷纸张大小”下拉框中选择相应的纸型,程序中主要是通过VBA的Application对象的ActiveDocument.PageSetup.PaperSize属性设置试卷纸张的大小;在“请输入试卷大标题”文本框中输入将要生成试卷的标题.比如,“2013学年第二学期九年级第一次语文月考”,我们在程序中是通过Application对象的如
下属性实现:
.ActiveDocument.PageSetup.PaperSize等于papType(“A3”)
‘设置试卷页面纸型
With Selection.PageSetup.TextColumns
‘对页面进行分栏
.SetCount numcolumns:等于2
.EvenlySpaced等于True
.LineBetween等于False
.Width等于CentimetersToPoints(5.84)
.Spacing等于CentimetersToPoints(2.96)
End With
.Selection.Style等于ActiveDocument.Styles(“标题1”)
‘设置为“标题1”
.Selection.Font.Name等于“黑体” ‘字形
.Selection.ParagraphFormat.Alignment等于wdAlignParagraphCenter
‘对标题居中对齐
.Selection.Font.Size等于18 ‘标题字号18号
.Selection.TypeText “2013学年第二学期九年级第一次月考+Chr(10)” ‘设置一级标题,Chr(10)为换行
(2)试卷试题设置
该模块分为四大块:基本知识(选择题和填空题)、现代文、文言文(文言文阅读和古诗)和写作.教师按照试卷的要求选择需要的题型,在对应题型下输入题数,若输入的题数大于系统库中的题数,则系统会有相应提示.
试题是从试题库中随机抽取的,并要求不能再次抽中,所以,在随机生成函数Rnd前加上Randomize函数,这样可以避免抽到的试题被重复抽中.
(3)试卷的卷面内容排版
试卷的排版主要包括试卷的标题、字体大小及段落格式等方面.这些都可以利用Application对象中的以下性能来实现自动
排版.
.Selection.Style等于ActiveDocument.Styles(“标题2”)
‘设置二级标题
.Selection.Font.Size等于12
‘二级标题字号为12号 .Selection.Font.Name等于“黑体”
‘二级标题字体为宋体
.Selection.TypeText“一、基础知识”+Chr(10)
‘设置二级标题
以上代码主要是对二级标题设置
.Selection.Style等于ActiveDocument.Styles(“正文”)
‘设置正文
.Selection.Font.Size等于10
‘设置正文字号为10号
.Selection.Font.Name等于“宋体”
‘设置正文字体为宋体
With Selection.ParagraphFormat
.CharacterUnitLeftIndent等于2
‘正文内容左缩进2字符
.CharacterUnitFirstLineIndent等于-2
‘正文内容首行悬挂-2字符
End With
.Selection.TypeText num & "、" & rs(0).Value+Chr(10)
With Selection.ParagraphFormat
.CharacterUnitLeftIndent等于4
‘正文内容左缩进4字符
.CharacterUnitFirstLineIndent等于-2
End With
Word应用程序是目前应用最广泛的排版软件,但是大部分人只能使用它的常规功能来排版.利用VBA for Word可以实现繁琐、机械的日常排版工作自动化.用VBA扩展功能可以完成各种高级排版功能的软件开发.