基于VBA组卷中自动排版的实现

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  一、引言
  建立完善的题库是课程建设的一项重要工作,当数据库的形式进行题库管理,通过编写抽题程序,在分类明确、题量丰富的题库支持下,实现自动组卷并非难事。试卷一般都采用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 < 10 Then s = " " + Trim(str(Num)) + "." Else s = Trim(str(Num)) + "."
  If Num = 0 Then s = ""
  Set myRange = appObj.ActiveDocument.Content
  myRange.Collapse Direction:=wdCollapseEnd
  myRange.InsertAfter s & vbTab & str1
  myRange.InsertParagraphAfter
  myRange.Font.Name = "宋体"
  myRange.Font.Size = 12
  myRange.ParagraphFormat.TabHangingIndent 1 '悬挂缩进1个制表位
  End Sub
  为了对选项进行排版,自定义一个过程insLeftAndHangingIndent,其功能是根据参数str1传入的选项内容,将其作为段落写入Word文档,设置字型、字体、字号及左缩进和悬挂缩进。
  Private Sub insLeftAndHangingIndent(str1 As String)
  Set myRange = ActiveDocument.Content
  myRange.Collapse Direction:=wdCollapseEnd
  myRange.InsertAfter str1
  myRange.InsertParagraphAfter
  myRange.Font.Name = "宋体"
  myRange.Font.Size = 12'小四
  '设置左缩进与悬挂缩进
  myRange.ParagraphFormat.FirstLineIndent = CentimetersToPoints(-0.64)
  myRange.ParagraphFormat.LeftIndent = CentimetersToPoints(1.48)
  End Sub

上一页123下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答