APP下载

如何使用VBA批改学生Word作业

2009-07-27

中国教育信息化·基础教育 2009年6期

雷 晖

摘要:Visual Basic for Application(简称VBA)是由Microsoft公司开发的新一代标准宏语言,它具有简单易学、功能强大等特点,对于经常跟Office 打交道的用户来说,学习VBA有助于提高工作效率。本文通过实例详细介绍了如何使用VBA批改学生的Word作业。因Word中涉及的知识点较多,不可能一一加以列举,笔者意在通过本文向读者阐述程序编制的一般方法,通过该方法,可以解决绝大多数Word阅卷的问题。

关键词:VBA;Word作业;阅卷

中图分类号:G433 文献标识码:A 文章编号:1673-8454(2009)12-0063-03

许多中学信息技术教师感到,批改学生的Word作业是一件繁杂的工作。笔者在工作中,使用自编软件帮助学生练习和巩固所学知识,极大地提高了工作效率。采用软件批改的方式有两大优点:第一,针对性强。因不同学生易犯的错误是不相同的,相比传统的教师集体讲评的方式,软件可充当小老师的角色,能针对学生的不同错误进行相应的提示,针对性更强;第二,时效性强。相比传统的课后批改、下节反馈的方式,软件批改能当堂课及时进行反馈,有助于学生加深印象。下面笔者就为大家详细介绍如何使用VBA代码批改学生Word作业。

一、 VBA概述

提起VB,计算机教师无人不知,而说起VBA,知道的人却并不多。很多老师都听过宏病毒一词,而宏病毒的元凶,正是VBA。任何事物都有其两面性,虽然宏病毒令人讨厌,但对于经常跟Office软件打交道的用户来说,学习VBA有助于提高工作效率。

言归正传,什么是VBA呢?Visual Basic for Application(简称VBA)是新一代标准宏语言,它以VB语言为基础,经过修改并运行在Microsoft Office的应用程序中,但它不能像VB一样生成可执行程序。

VBA具有与VB 相似的语言结构,它们的集成开发环境也几乎相同。如果你熟悉VB,那么你会发现它们在语言方面是相通的。因此,可以将VBA简单地理解为VB的子集。

二、 如何获取VBA代码

实际上,VBA并不神秘,通过录制宏的方式可以轻松地查看VBA代码。下面笔者将通过具体实例介绍如何获取

VBA代码。

例如,需对图1中上面的文档进行排版,排版后的文档效果如图1中下面文档所示。

题目见下方:

标题:字体为“隶书”,字号为“二号”,添加“波浪线”,对齐方式为“居中”。

正文:首行缩进“2字符”

若需查看相关的VBA代码,可通过以下步骤实现:

第一步,打开需排版的文档,并将标题文字选中。

第二步,单击菜单栏中的“工具”—“宏”—“录制新宏”命令,在弹出的对话框中设置“将宏保存在”当前文档中,并“确定”,这时会发现Word中新增一工具栏,并开始了宏的录制。

第三步,按题目要求对标题进行设置,完成后单击工具栏上的“暂停录制”按钮。

第四步,取消标题选中状态,仅选中正文部分,并单击工具栏上的“恢复录制”按钮。

第五步,按题目要求对正文进行设置后,单击“停止录制”按钮。

第六步,单击“工具”—“宏”—“Visual Basic编辑器”命令,打开VB编辑器。

第七步,在窗口的左侧选择当前文档工程下的模块“NewMacros”,窗口右侧即显示出对应的VBA代码。如下所示:

Sub Macro1()

'

' Macro1 Macro

' 宏在 2008-9-8 由 aaa 录制

'

Selection.Font.Name = "隶书"

Selection.Font.Size = 22

Selection.Font.Underline = wdUnderlineWavy

Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter

With Selection.ParagraphFormat

……

.CharacterUnitFirstLineIndent = 2

……

End With

End Sub

由于录制的宏代码较长,鉴于篇幅所限,这里仅列出与操作相关的代码,其余部分用省略号代替。在上图中,相关代码笔者都加了字符边框,便于大家阅读。代码含义依次为:设置选中文字字体为隶书、字号为二号、下划线为波浪线、对齐方式为居中,设置选中段落的首行缩进为2字符。

代码有了,如何实现阅卷功能呢?

三、 使用Word控件实现阅卷功能

第一步,将文档恢复为排版前的状态。

第二步,单击“视图”—“工具栏”—“控件工具箱”命令,打开控件工具箱。

第三步,单击控件工具箱中的“命令按钮”,在文档末尾处插入一个命令按钮。

第四步,在命令按钮上右击,选择“属性”命令,打开属性面板,并设置“Caption”属性为“交卷”。

第五步,在命令按钮上右击,选择“查看代码”命令,会打开内置的Visual Basic编辑器,并自动添加下面的语句:

Private Sub CommandButton1_Click()

End Sub

第六步,添加VBA代码。

先将刚才录制的相关代码复制到过程中,再稍加修改即可。修改后的代码如下所示:

(为方便读者阅读,代码中加了注释,读者练习时无需输入注释部分)

Private Sub CommandButton1_Click()

'定义str1为字符变量,Point为整形变量

Dim str1 As String

Dim Point As Integer

'分别设置para1对象和para2对象为当前文档第一段和第二段

Set para1 = ActiveDocument.Paragraphs(1)

Set para2 = ActiveDocument.Paragraphs(2)

'如果第一段的字体为隶书,则加20分;否则,输出提示信息

If para1.Range.Font.Name = "隶书" Then

point = point + 20

Else

str1 = str1 + "标题字体为隶书" + vbCrLf

End If

'如果第一段的字号为二号,则加20分;否则,输出提示信息

If para1.Range.Font.Size = 22 Then

point = point + 20

Else

str1 = str1 + "标题字号为二号" + vbCrLf

End If

'如果第一段文字添加了波浪线,则加20分;否则,输出提示信息

If para1.Range.Font.Underline = wdUnderlineWavy Then

point = point + 20

Else

str1 = str1 + "标题没加波浪线" + vbCrLf

End If

'如果第一段的对齐方式为居中,则加20分;否则,输出提示信息

If para1.Alignment = wdAlignParagraphCenter Then

point = point + 20

Else

str1 = str1 + "标题应居中显示" + vbCrLf

End If

'如果第二段的首行缩进为2字符,则加20分;否则,输出提示信息

If para2.CharacterUnitFirstLineIndent = 2 Then

point = point + 20

Else

str1 = str1 + "正文应首行缩进2字符" + vbCrLf

End If

str1 = str1 + "你的得分为" + Str(point) + "分"

MsgBox str1, vbOKOnly, "提示"

End Sub

第七步,存盘并测试。

若学生操作完全正确,单击“交卷”按钮后,会弹出一对话框,显示得分为100分。若操作不正确,则显示错误的地方。如图2所示。

至此,任务大功告成,是不是很有成就感?使用VBA编制的程序简单实用,但却不能生成独立程序,如果你想编制独立且界面美观的程序,可考虑用VB来实现。因VBA是VB的子集,因此用VBA编制的程序可以轻松地移植到VB中。这里鉴于篇幅所限,笔者不再赘述。

四、 结束语

上面介绍的方法可实现大部分阅卷功能,如文字格式的设置、段落格式的设置、页面设置等。但在某些情况下,如插入图片或艺术字的操作,则需另外寻找相关代码,具体方法大家可查找相关书籍。

最后,笔者想说的是,如果本文能对读者有些价值,从此引发对VBA的兴趣,笔者会甚感欣慰。希望读者在实际工作中不断总结和积累,最终提高工作效率。

(编辑:隗爽)