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