雷 暉
摘要:Visual Basic for Application(簡稱VBA)是由Microsoft公司開發(fā)的新一代標(biāo)準(zhǔn)宏語言,它具有簡單易學(xué)、功能強(qiáng)大等特點(diǎn),對于經(jīng)常跟Office 打交道的用戶來說,學(xué)習(xí)VBA有助于提高工作效率。本文通過實(shí)例詳細(xì)介紹了如何使用VBA批改學(xué)生的Word作業(yè)。因Word中涉及的知識點(diǎn)較多,不可能一一加以列舉,筆者意在通過本文向讀者闡述程序編制的一般方法,通過該方法,可以解決絕大多數(shù)Word閱卷的問題。
關(guān)鍵詞:VBA;Word作業(yè);閱卷
中圖分類號:G433 文獻(xiàn)標(biāo)識碼:A 文章編號:1673-8454(2009)12-0063-03
許多中學(xué)信息技術(shù)教師感到,批改學(xué)生的Word作業(yè)是一件繁雜的工作。筆者在工作中,使用自編軟件幫助學(xué)生練習(xí)和鞏固所學(xué)知識,極大地提高了工作效率。采用軟件批改的方式有兩大優(yōu)點(diǎn):第一,針對性強(qiáng)。因不同學(xué)生易犯的錯(cuò)誤是不相同的,相比傳統(tǒng)的教師集體講評的方式,軟件可充當(dāng)小老師的角色,能針對學(xué)生的不同錯(cuò)誤進(jìn)行相應(yīng)的提示,針對性更強(qiáng);第二,時(shí)效性強(qiáng)。相比傳統(tǒng)的課后批改、下節(jié)反饋的方式,軟件批改能當(dāng)堂課及時(shí)進(jìn)行反饋,有助于學(xué)生加深印象。下面筆者就為大家詳細(xì)介紹如何使用VBA代碼批改學(xué)生Word作業(yè)。
一、 VBA概述
提起VB,計(jì)算機(jī)教師無人不知,而說起VBA,知道的人卻并不多。很多老師都聽過宏病毒一詞,而宏病毒的元兇,正是VBA。任何事物都有其兩面性,雖然宏病毒令人討厭,但對于經(jīng)常跟Office軟件打交道的用戶來說,學(xué)習(xí)VBA有助于提高工作效率。
言歸正傳,什么是VBA呢?Visual Basic for Application(簡稱VBA)是新一代標(biāo)準(zhǔn)宏語言,它以VB語言為基礎(chǔ),經(jīng)過修改并運(yùn)行在Microsoft Office的應(yīng)用程序中,但它不能像VB一樣生成可執(zhí)行程序。
VBA具有與VB 相似的語言結(jié)構(gòu),它們的集成開發(fā)環(huán)境也幾乎相同。如果你熟悉VB,那么你會(huì)發(fā)現(xiàn)它們在語言方面是相通的。因此,可以將VBA簡單地理解為VB的子集。
二、 如何獲取VBA代碼
實(shí)際上,VBA并不神秘,通過錄制宏的方式可以輕松地查看VBA代碼。下面筆者將通過具體實(shí)例介紹如何獲取
VBA代碼。
例如,需對圖1中上面的文檔進(jìn)行排版,排版后的文檔效果如圖1中下面文檔所示。
題目見下方:
標(biāo)題:字體為“隸書”,字號為“二號”,添加“波浪線”,對齊方式為“居中”。
正文:首行縮進(jìn)“2字符”
若需查看相關(guān)的VBA代碼,可通過以下步驟實(shí)現(xiàn):
第一步,打開需排版的文檔,并將標(biāo)題文字選中。
第二步,單擊菜單欄中的“工具”—“宏”—“錄制新宏”命令,在彈出的對話框中設(shè)置“將宏保存在”當(dāng)前文檔中,并“確定”,這時(shí)會(huì)發(fā)現(xiàn)Word中新增一工具欄,并開始了宏的錄制。
第三步,按題目要求對標(biāo)題進(jìn)行設(shè)置,完成后單擊工具欄上的“暫停錄制”按鈕。
第四步,取消標(biāo)題選中狀態(tài),僅選中正文部分,并單擊工具欄上的“恢復(fù)錄制”按鈕。
第五步,按題目要求對正文進(jìn)行設(shè)置后,單擊“停止錄制”按鈕。
第六步,單擊“工具”—“宏”—“Visual Basic編輯器”命令,打開VB編輯器。
第七步,在窗口的左側(cè)選擇當(dāng)前文檔工程下的模塊“NewMacros”,窗口右側(cè)即顯示出對應(yīng)的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
由于錄制的宏代碼較長,鑒于篇幅所限,這里僅列出與操作相關(guān)的代碼,其余部分用省略號代替。在上圖中,相關(guān)代碼筆者都加了字符邊框,便于大家閱讀。代碼含義依次為:設(shè)置選中文字字體為隸書、字號為二號、下劃線為波浪線、對齊方式為居中,設(shè)置選中段落的首行縮進(jìn)為2字符。
代碼有了,如何實(shí)現(xiàn)閱卷功能呢?
三、 使用Word控件實(shí)現(xiàn)閱卷功能
第一步,將文檔恢復(fù)為排版前的狀態(tài)。
第二步,單擊“視圖”—“工具欄”—“控件工具箱”命令,打開控件工具箱。
第三步,單擊控件工具箱中的“命令按鈕”,在文檔末尾處插入一個(gè)命令按鈕。
第四步,在命令按鈕上右擊,選擇“屬性”命令,打開屬性面板,并設(shè)置“Caption”屬性為“交卷”。
第五步,在命令按鈕上右擊,選擇“查看代碼”命令,會(huì)打開內(nèi)置的Visual Basic編輯器,并自動(dòng)添加下面的語句:
Private Sub CommandButton1_Click()
End Sub
第六步,添加VBA代碼。
先將剛才錄制的相關(guān)代碼復(fù)制到過程中,再稍加修改即可。修改后的代碼如下所示:
(為方便讀者閱讀,代碼中加了注釋,讀者練習(xí)時(shí)無需輸入注釋部分)
Private Sub CommandButton1_Click()
'定義str1為字符變量,Point為整形變量
Dim str1 As String
Dim Point As Integer
'分別設(shè)置para1對象和para2對象為當(dāng)前文檔第一段和第二段
Set para1 = ActiveDocument.Paragraphs(1)
Set para2 = ActiveDocument.Paragraphs(2)
'如果第一段的字體為隸書,則加20分;否則,輸出提示信息
If para1.Range.Font.Name = "隸書" Then
point = point + 20
Else
str1 = str1 + "標(biāo)題字體為隸書" + vbCrLf
End If
'如果第一段的字號為二號,則加20分;否則,輸出提示信息
If para1.Range.Font.Size = 22 Then
point = point + 20
Else
str1 = str1 + "標(biāo)題字號為二號" + vbCrLf
End If
'如果第一段文字添加了波浪線,則加20分;否則,輸出提示信息
If para1.Range.Font.Underline = wdUnderlineWavy Then
point = point + 20
Else
str1 = str1 + "標(biāo)題沒加波浪線" + vbCrLf
End If
'如果第一段的對齊方式為居中,則加20分;否則,輸出提示信息
If para1.Alignment = wdAlignParagraphCenter Then
point = point + 20
Else
str1 = str1 + "標(biāo)題應(yīng)居中顯示" + vbCrLf
End If
'如果第二段的首行縮進(jìn)為2字符,則加20分;否則,輸出提示信息
If para2.CharacterUnitFirstLineIndent = 2 Then
point = point + 20
Else
str1 = str1 + "正文應(yīng)首行縮進(jìn)2字符" + vbCrLf
End If
str1 = str1 + "你的得分為" + Str(point) + "分"
MsgBox str1, vbOKOnly, "提示"
End Sub
第七步,存盤并測試。
若學(xué)生操作完全正確,單擊“交卷”按鈕后,會(huì)彈出一對話框,顯示得分為100分。若操作不正確,則顯示錯(cuò)誤的地方。如圖2所示。
至此,任務(wù)大功告成,是不是很有成就感?使用VBA編制的程序簡單實(shí)用,但卻不能生成獨(dú)立程序,如果你想編制獨(dú)立且界面美觀的程序,可考慮用VB來實(shí)現(xiàn)。因VBA是VB的子集,因此用VBA編制的程序可以輕松地移植到VB中。這里鑒于篇幅所限,筆者不再贅述。
四、 結(jié)束語
上面介紹的方法可實(shí)現(xiàn)大部分閱卷功能,如文字格式的設(shè)置、段落格式的設(shè)置、頁面設(shè)置等。但在某些情況下,如插入圖片或藝術(shù)字的操作,則需另外尋找相關(guān)代碼,具體方法大家可查找相關(guān)書籍。
最后,筆者想說的是,如果本文能對讀者有些價(jià)值,從此引發(fā)對VBA的興趣,筆者會(huì)甚感欣慰。希望讀者在實(shí)際工作中不斷總結(jié)和積累,最終提高工作效率。
(編輯:隗爽)