鄧建華 李燕 蘇州科技學院 215011
高校教師在每學期結束時都要按照要求對學生課程考核成績進行統(tǒng)計、分析,并對課程教學過程與效果進行總結,填入課程教學小結表。一般的課程教學小結表是Word文檔,Word的數(shù)據(jù)處理能力不如Excel強大,教師在學生考核成績統(tǒng)計分析時需先要在Excel表中進行[1,2],然后再手工復制到課程小結表中,重復和繁瑣的手工操作很容易導致出錯。
針對上述問題,這里提出應用VBA編寫一段宏編碼實現(xiàn)Excel學生考核成績分析結論分析數(shù)據(jù)自動填入到課程教學小結表的技術。
VBA是一種最好的微軟通用應用軟件腳本語言,包含在Office應用軟件中,所以通過VBA腳本語言對Office各模塊基本功能進行擴展以更好地為教學管理提供幫助,提高工作效率。
VBA腳本語言[3]與以前版本的XLM宏語言不同,VBA代碼更容易閱讀和理解。VBA語言的基礎是Visual Basic語言,具有易學可移植的特點;VBA有一個面向對象的編程環(huán)境,它只能處理對象,VBA所支持的各模塊對象模型內(nèi)嵌在Office軟件內(nèi)。
Word和Excel的對象模型是一種層次關系,Excel在主應用程序(Application)對象內(nèi)包含子對象:工作簿對象(Workbook)、工作表對象(Worksheet)及大量的內(nèi)部函數(shù)對象等100多類;同樣VBA幾乎可以響應Word對象的每個動作,Word的任何元素如文檔表格段落、域及書簽等都可以用相應封裝入對象。在Word主應用程序(Application)對象中包含了如Document、Windows、Selection等對象。以課程教學小結表自動生成程序段中需要用到的主要對象有:
2.1.1 需要用到的主要Excel模塊對象
(1)工作簿(Workbook)對象
一個工作簿(Workbook)對象實際上就是一個Excel文件,如果學生成績統(tǒng)計分析的文件名是“TEXTANLASYS.XLS”如在該文件中使用課程小結表自動生成的宏,則該文件為當前活動的工作簿(Workbook)對象。
(2)工作表(Worksheet)對象
每個工作簿(Workbook)對象上可以有多個工作表(Worksheet)。在默認情況下,Excel的當前工作簿上有名為Sheetl,Sheet2,Sheet3三個工作表.并且Sheetl為當前工作表。如果想使Sheet3成為當前工作表,則可使用下列語句:
ExcelApp.Worksheets(“Sheet3”).Activate’ExcelApp為Excel.Application對象
(3)單元格(Cell)對象
工作表(Worksheet)對象中的單元格(Cell)。它是以行Row和列Col作為參數(shù)的。如下語句可以實現(xiàn)對某位置單元格賦值:
Cell(3,4)=5 ’將第三行第四列(第D列)的單元格賦值5。
2.1.2 需要用到的主要Word模塊對象
(1)Document對象
一個Document對象就表示一個Word文檔,如要在VBA中通過Excel程序打開當前目錄下需要填寫分析數(shù)據(jù)的課程教學小結表Word文檔“kcxj.doc”,則可編寫語句:
Set WdApp = CreateObject("Word.Application") ’打開Word應用程序
Set aDoc = WdApp.Documents.Open(ActiveWorkbook.Path & "/ kcxj.doc ")’ aDoc代表打開的課程教學小結表文檔。
(2)區(qū)域(Range)對象
Range對象代表文檔中的一個特定范圍,在Visual Basic過程中使用Range對象可以定義文檔的某一部分,然后對該區(qū)域進行一些操作,例如插入文字或應用格式。
(3)表格(Table)對象
Table對象代表選定內(nèi)容范圍或文檔中的某個表格。因為在文檔中往往有多個表格,往往需要用到表格集合對象加下標的方式來定位,如:使用下列語句可以對當前文檔的某個Table對象的某單元格賦值:
aDoc.Tables(1).Cell(3, 2).Range.InsertAfter Sheet2.Cells(2, 2)’表示對aDoc中表格1的第三行、第2列的單元格賦值為當前Excel文件Sheet2中Cells(2, 2)的值。
課程教學小結表有兩個方面的主要作用:一是教師通過總結課堂教學過程中的經(jīng)驗和體會,并在定性評價的基礎上對教學設計提出合理化建議。二是教師通過對學生平時、考核成績的定量統(tǒng)計分析對學生成績及試卷質量進行評價,獲得學生掌握知識程度及優(yōu)化試卷內(nèi)容思路。課程教學小結表基本結構除包含課程基本信息等文字描述內(nèi)容以外,需要定量統(tǒng)計分析的數(shù)據(jù)結構見圖1。
課程教學小結表主要需填寫的統(tǒng)計分析數(shù)據(jù)有:
(1) 授課班級學生平時、考核及總評成績的各分數(shù)段的分布情況及標準差,用表格表示;
(2) 試卷分析指標主要包括:題目的難度、可信度等指標,也用表格表示。
這些值事先都要在Excel中計算出來。然后自動從Excel工作表中自動填寫到課程教學小結表指定的表格單元格內(nèi)。
一般一套試卷共有大題4~6類,小題多于20題,以往教師手工計算學生考核得分時,往往因為批改試卷量大而比較容易算錯,經(jīng)常會出現(xiàn)多計或少計的情況,這對學生很不公平。現(xiàn)在利用Excel自動計算的功能,教師在批改完某個學生的試卷后,首先在Excel中進行每個學生考核成績的統(tǒng)計,可以很好的克服上述問題;同樣的Excel強大的統(tǒng)計及自編公式功能使教師方便的求均值、標準差及繪制成績分布曲線圖等;
但是,Excel的文字處理及表格表示沒有Word靈活,所以大部分高校的課程教學小結表多是Word文檔,這就需要把上述Excel表中的分析數(shù)據(jù)填入到Word文檔中,下面就是應用VBA編寫的一段宏編碼來實現(xiàn)該功能的方法。
(1)首先,把在進行考核成績統(tǒng)計分析的工作簿中建立三個工作表,名稱分別為:學生信息、成績輸入及成績統(tǒng)計與試卷分析;
(2)在成績輸入表單中輸入每個學生的試卷各大題得分、平時成績、實驗成績,按照成績所占比例計算出總評成績;
(3)利用Excel的內(nèi)部函數(shù)及強大的單元格計算能力,算出小結表需要填寫的分析數(shù)據(jù):各分數(shù)段人數(shù)、百分比、平均值、標準差及難易度等[5,6];
(4)打開excel的“工具”菜單,單擊菜單項“宏”,在跳出的對話框中點擊“創(chuàng)建”按鈕,然后就打開了VBA編程環(huán)境界面,在代碼窗口建立代碼。
輸入上述代碼段后就建立了新的宏過程filldoc(),然后執(zhí)行就可以完成自動把數(shù)據(jù)導入課程小結表的功能。
圖1 課程教學小結表數(shù)據(jù)統(tǒng)計分析結構
當Word表格合并單元格比較多時,就不能從Excel直接進行整體復制粘貼,所以這給教師手工填寫課程小結表帶來不便,這里利用VBA語言編程很方便地實現(xiàn)了把Excel單元格數(shù)據(jù)自動填入課程教學小結表中,只要點擊一下鼠標就可以輕易地解決重復和繁瑣的手工操作,減輕了教師的工作負擔,提高了工作效率。
[1] 金文子,李永凡.在 ExceI中利用VBA程序進行學生成績統(tǒng)計[J].電腦知識與技術(學術交流).2007,4(20):554~555.
[2]李影.用Excel實現(xiàn)成績統(tǒng)計與試卷分析[J].長春大學學報.2009,19(10):55~57.
[3]馬春虎,關麗華,張曉偉.VBA在成績管理中的應用[J].承德醫(yī)學院學報.2006,23(1):49~53.
[4]王川.中文版Office2000 VBA一冊通[M].北京:人民郵電出版社.2000,34~121.
[5]張效鋒,劉巍.基于方差分析和相關分析的學生學科成績的比較研究[J].白城師范學院學報.2009,23(3):20~22.
[6] 趙紅梅.北京電大學生成績分析系統(tǒng)的設計與實現(xiàn)[D].北京:北京工業(yè)大學.2008.21~23.