摘要:Visual Basic for Application(簡稱VBA)是由Microsoft公司開發(fā)的新一代標(biāo)準(zhǔn)宏語言,它具有簡單易學(xué)、功能強大等特點,對于經(jīng)常跟Office打交道的用戶來說,學(xué)習(xí)VBA有助于提高工作效率。本文通過實例詳細(xì)介紹了如何使用VBA實現(xiàn)Office操作題的自動閱卷。因VBA編程中涉及的知識點較多,不可能一一加以列舉,筆者意在通過本文向讀者闡述程序編制的一般方法和使用VBA實現(xiàn)Office操作題自動閱卷的核心思想。
關(guān)鍵詞:VBA;Office操作題;閱卷
中國分類號:TP391.4文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2009)36-10267-02
在目前的辦公自動化軟件中,Microsoft Office 的應(yīng)用已極為普遍,因此在高中信息技術(shù)會考中,Word、Excel已經(jīng)成為必考內(nèi)容。如果它們的操作題單純依靠人工閱卷,效率會非常低,而且容易出現(xiàn)誤判、漏判、給分不公正等問題。目前,信息技術(shù)會考軟件已經(jīng)實現(xiàn)了Office操作題的自動閱卷功能,但任課教師如果想要在平時的教學(xué)中使用這些軟件,就必須花錢購買。為了解決這個問題,我認(rèn)真研究了很多資料,使用Office 軟件自帶的VBA 宏指令編程,實現(xiàn)了操作題的自動閱卷功能。
1 VBA 的基本概念與實現(xiàn)原理
VBA 是指Visual Basic for Application,它是在Office中使用的宏語言,主要為了增強Word、Excel 等軟件的自動化能力。VBA的語法類似VB,但提供了很多VB中沒有的函數(shù)和對象,這些函數(shù)、對象都是針對Office應(yīng)用的。因此可以像編寫VB程序那樣來編寫VBA程序,以實現(xiàn)某個功能。
考試中的操作題主要是檢查學(xué)生對軟件的實際使用和控制能力,通常是給出一篇Word文檔或Excel 工作簿,并提出若干題目,要求學(xué)生對文檔或表格進(jìn)行編排,閱卷人則檢查學(xué)生是否已按照題目要求完成了相關(guān)操作,并且是否達(dá)到題目要求的效果。由于Office各應(yīng)用系統(tǒng)(包括Word、Excel、Power Point以及Access) 中,文檔存儲并非像WPS等軟件采用的存儲方式,即采用頭加內(nèi)容的方式,而是采用對象數(shù)據(jù)流的方式進(jìn)行存儲,包括主數(shù)據(jù)流、摘要信息、表數(shù)據(jù)流、非文本數(shù)據(jù)流等,結(jié)構(gòu)非常復(fù)雜,因此,從外部很難可靠地訪問到這些數(shù)據(jù)。而VBA由于帶有大量專門針對于Office文件的函數(shù)、對象,通過它們可以方便地訪問到文檔中的各個元素,并對它們的狀態(tài)進(jìn)行識別判斷,因此非常適合于用來編寫自動閱卷的相關(guān)程序。
2 VBA針對Word的主要對象
VBA中帶有大量專門針對Office(包括Word、Excel、PowerPoint以及Access)文件的對象,限于篇幅問題,本文只介紹針對Word的VBA對象。
在Word中我們能夠獲得的最高層對象是Application 對象,它代表的是Word應(yīng)用程序本身。在Application對象中包含了一些其他的對象集合,例如:Document、windows、Selection 等對象。
documents 對象集合和document對象都是Application 對象的子對象。documents 對象集合是所有的document對象的集合,document 對象代表的是一篇完整的Word 文檔,它包括了文檔中所有的對象如段落、文本、字、句、表格格式等。如果VBA代碼與考試題在同一個文檔中,建議大家使用ThisDocument對象,它代表當(dāng)前文檔,這樣能夠省去打開文檔、保存文檔、關(guān)閉文檔等復(fù)雜操作。
使用VBA通常需要完成的任務(wù)是在文檔中指定一個區(qū)域,然后對該區(qū)域進(jìn)行一些操作,例如插入文字、應(yīng)用格式等。文檔的這一部分就可以用Range對象來代表。定義Range對象后,就可以應(yīng)用Range對象的方法和屬性來修改這個區(qū)域的內(nèi)容。
對文檔應(yīng)用格式主要包括字體格式、段落格式、表格等內(nèi)容。
通過使用Font對象可以設(shè)置文本的字體格式。Font對象包含了各種字體屬性(字體名稱、字體大小、顏色等)。
Paragraphs 對象包含了所選內(nèi)容、范圍或文檔中的所有段落。Paragraph 對象為 Paragraphs 集合的一個成員,代表選定內(nèi)容、范圍或文檔內(nèi)的一個段落。可用 Paragraphs(index) 返回一個 Paragraph 對象,其中 index 為索引號。
Tables 對象是由 Table 對象組成的集合,它代表選定內(nèi)容、范圍或文檔中的所有表格。Table 對象是 Tables 集合的一個成員,代表一個單獨的表格??墒褂?Tables(index) 返回一個 Table 對象,其中 index 為索引號。索引號代表選定內(nèi)容、范圍或文檔中表格的位置。
3 VBA評測Word操作題實例
通過上面的內(nèi)容,我們已經(jīng)了解Word中常用的VBA對象,關(guān)于它們的屬性和方法大家可以看幫助。下面,我們通過兩個實例學(xué)習(xí)VBA評測Word操作題的編程方法。
例1字體格式的評測。
題目要求:將第一自然段(明十三陵從1409年營建長陵到清順治元年營建思陵……)的格式設(shè)置為:隸書、小四號、青色、加粗、傾斜。
代碼如下:
With ThisDocument.Paragraphs(1).Range.Font
'考點1、對字體名稱進(jìn)行評測
If .Name = \"隸書\" Then
TextBox1.Text = \"考點1、字體名稱設(shè)置成功\" vbCrLf
Else
TextBox1.Text = \"考點1、字體名稱設(shè)置失敗\" vbCrLf
End If
'考點2、對字號大小進(jìn)行評測
If .Size = 12 Then
TextBox1.Text = TextBox1.Text \"考點2、字體大小設(shè)置成功\" vbCrLf
Else
TextBox1.Text = TextBox1.Text \"考點2、字體大小設(shè)置失敗\" vbCrLf
End If
'考點3、對字體顏色進(jìn)行評測
If .Color = wdColorTeal Then
TextBox1.Text = TextBox1.Text \"考點3、字體顏色設(shè)置成功\" vbCrLf
Else
TextBox1.Text = TextBox1.Text \"考點3、字體顏色設(shè)置失敗\" vbCrLf
End If
'考點4、對字體粗細(xì)進(jìn)行評測
If .Bold = True Then
TextBox1.Text = TextBox1.Text \"考點4、字體粗細(xì)設(shè)置成功\" vbCrLf
Else
TextBox1.Text = TextBox1.Text \"考點4、字體粗細(xì)設(shè)置失敗\" vbCrLf
End If
'考點5、對字體傾斜進(jìn)行評測
If .Italic = True Then
TextBox1.Text = TextBox1.Text \"考點5、字體傾斜設(shè)置成功\" vbCrLf
Else
TextBox1.Text = TextBox1.Text \"考點5、字體傾斜設(shè)置失敗\" vbCrLf
End If
End With
需要說明的是,TextBox1是我在Word文檔中添加的一個文本框控件的名稱,它的用途是把評測結(jié)果呈現(xiàn)給學(xué)生。
例2段落格式的評測。
題目要求:將第二自然段(十三陵是中國歷代帝王陵寢建筑中……)的段落格式設(shè)置為:首行縮進(jìn)4字符;段前間距1行,段后間距1行。
代碼如下:
With ThisDocument.Paragraphs(2)
'首行縮進(jìn)4字符
If .CharacterUnitFirstLineIndent = 4 Then
TextBox1.Text = TextBox1.Text \"考點1、首行縮進(jìn)4字符設(shè)置成功\" vbCrLf
Else
TextBox1.Text = TextBox1.Text \"考點1、首行縮進(jìn)4字符設(shè)置失敗\" vbCrLf
End If
'段前間距一行
If .SpaceBefore = 15.6 Then
TextBox1.Text = TextBox1.Text \"考點2、段前間距1行設(shè)置成功\" vbCrLf
Else
TextBox1.Text = TextBox1.Text \"考點2、段前間距1行設(shè)置失敗\" vbCrLf
End If
'斷后間距一行
If .SpaceAfter = 15.6 Then
TextBox1.Text = TextBox1.Text \"考點3、段后間距1行設(shè)置成功\" vbCrLf
Else
TextBox1.Text = TextBox1.Text \"考點3、段后間距1行設(shè)置失敗\" vbCrLf
End If
End With
使用Word控件實現(xiàn)閱卷功能
第一步、將文檔恢復(fù)為排版前的狀態(tài)。
第二步、單擊“視圖”——“工具欄”——“控件工具箱”命令.打開控件工具箱。
第三步、單擊控件工具箱中的“命令按鈕”,在文檔末尾處插入一個命令按鈕。
第四步、在命令按鈕上右擊,選擇“屬性”命令,打開屬性面板,并設(shè)置“Caption”屬性為“交卷”。
第五步、在命令按鈕上右擊,選擇“查看代碼”命令,會打開內(nèi)置的Visual Basic編輯器,并自動添加下面的語句:
Private Sub CommandButtonl Click()
End Sub
第六步、單擊控件工具箱中的“文本框”,在文檔末尾處插入一個文本框,默認(rèn)名稱為Textbox1;
第七步、在文本框上右擊.選擇“屬性”命令,打開屬性面板,并設(shè)置“MultiLine”屬性為“True”,允許文本框顯示多行文本。
第八步、添加代碼,實現(xiàn)評測功能,當(dāng)用戶點擊按鈕時,實現(xiàn)自動評測,把評測結(jié)果顯示在文本框中,具體的代碼請參考上面的實例。
4 結(jié)束語
實踐表明,利用VBA編寫Office操作題自動評測程序具有簡單、便捷、易于修改等特點。如果本文能對讀者有些價值,從此引發(fā)對VBA的興趣,筆者會甚感欣慰。希望讀者能在實際工作中不斷總結(jié)和積累,最終提高工作效率。
參考文獻(xiàn):
[1] 雷暉.如何使用VBA批改學(xué)生Word作業(yè)[J].中國教育信息化:基礎(chǔ)教育,2009(6).
[2] 姚利國,姚暉.Office操作題自動閱卷實現(xiàn)[J].四川教育學(xué)院學(xué)報,2003(12).
[3] 朱江,謝深泉.考試系統(tǒng)中Word操作題自動閱卷的實現(xiàn)[J].湘潭大學(xué)自然科學(xué)學(xué)報,2002(3).