导读:建立完善的题库是课程建设的一项重要工作,当数据库的形式进行题库管理,通过编写抽题程序,在分类明确、题量丰富的题库支持下,实现自动组卷并非难事。试卷一般都采用Word文档,若采用VBA编程,要用程序将试题写入到Word文档,可以通过引用 Microsoft Word 9.0 Object Library中的相关对象来实现:图片、图形、文本框及艺术字等可利用Shapes集合对象的相应方法加入到文档中!
一、引言 建立完善的题库是课程建设的一项重要工作,当数据库的形式进行题库管理,通过编写抽题程序,在分类明确、题量丰富的题库支持下,实现自动组卷并非难事。试卷一般都采用Word文档,若采用VBA编程,要用程序将试题写入到Word文档,可以通过引用 Microsoft Word 9.0 Object Library中的相关对象来实现:图片、图形、文本框及艺术字等可利用Shapes集合对象的相应方法加入到文档中;表格也可以通过Tables集合对象的Add 方法加入,其大小、位置等排版信息都可以以参数的形式传入;而文字部分的内容也能以字符串的形式通过调用Content对象的InsertAfter方法插入,排版时对其字型、字体、字号及段落格式则可以利用Font对象及Paragraph对象的属性或方式进行设置。 选择题是各类试卷中经常出现的题型,而它的排版有其特殊性,因为选择题的四个选项根据其长度有可能排成四段(行),也可能排成两行,每行两个选项,且它对段落缩进及上、下行中选项的对齐等都有一定的要求。 这里要解决的几个问题是: 1.题干部分的题号对齐,尤其是一位数题号与两位数题号(如第9题与第10题);前、后题题干内容的第一个字符对齐;题干部分作为段落要采用悬挂缩进、且缩进量应合适。 2.若选项由四段(行)构成,则每段应有左缩进、缩进量与题干部分的悬挂缩进量相同,同时,选项内容的长度也有可以超过一行(如第10题中的选项C),所以对选项也要设置悬挂缩进、且缩进量应合适。 3.若选项由两行构成(如第11题中的四个选项),则上一行的选项C与下一行的选项D应对齐。 二、定义选择题的数据结构 程序设计中为了便于将选择题作为函数的参数传递,应定义选择题的数据类型的结构,选择题的结构通常由题干及四个选项构成,具体定义如下: Public Type Choice Sentence As String 题干内容,不包括题号 ChoiceA As String 选项A的内容 ChoiceB As String 选项B的内容 ChoiceC As String 选项C的内容 ChoiceD As String 选项D的内容 End Type 三、页面设置与段落格式 首先进行页面设置,页面上边距、下边距、左边距、右边距分别设为1英寸、1英寸、1.25英寸、1.25英寸, 默认制表位长度为0.33英寸。 With ActiveDocument.PageSetup .TopMargin = InchesToPoints(1) .BottomMargin = InchesToPoints(1) .LeftMargin = InchesToPoints(1.25) .RightMargin = InchesToPoints(1.25) End With ActiveDocument.DefaultTabStop = InchesToPoints(0.33) 为了对题干部分进行排版,先自定义一个过程insTabIndent,其功能是根据第一个参数str1传入的题干内容及第二个参数Num传入的本题题号,在题干内容前加上题号,若Num为0,则表示不加题号;在题号后设置一个制表位,使前、后题的题干内容的第一个字符对齐;对题干所在段落设置悬挂缩进一个制表。 Private Sub insTabIndent(str1 As String, Num As Integer) Dim s As String If Num