鄧建華 李燕 蘇州科技學(xué)院 215011
高校教師在每學(xué)期結(jié)束時(shí)都要按照要求對(duì)學(xué)生課程考核成績(jī)進(jìn)行統(tǒng)計(jì)、分析,并對(duì)課程教學(xué)過(guò)程與效果進(jìn)行總結(jié),填入課程教學(xué)小結(jié)表。一般的課程教學(xué)小結(jié)表是Word文檔,Word的數(shù)據(jù)處理能力不如Excel強(qiáng)大,教師在學(xué)生考核成績(jī)統(tǒng)計(jì)分析時(shí)需先要在Excel表中進(jìn)行[1,2],然后再手工復(fù)制到課程小結(jié)表中,重復(fù)和繁瑣的手工操作很容易導(dǎo)致出錯(cuò)。
針對(duì)上述問(wèn)題,這里提出應(yīng)用VBA編寫(xiě)一段宏編碼實(shí)現(xiàn)Excel學(xué)生考核成績(jī)分析結(jié)論分析數(shù)據(jù)自動(dòng)填入到課程教學(xué)小結(jié)表的技術(shù)。
VBA是一種最好的微軟通用應(yīng)用軟件腳本語(yǔ)言,包含在Office應(yīng)用軟件中,所以通過(guò)VBA腳本語(yǔ)言對(duì)Office各模塊基本功能進(jìn)行擴(kuò)展以更好地為教學(xué)管理提供幫助,提高工作效率。
VBA腳本語(yǔ)言[3]與以前版本的XLM宏語(yǔ)言不同,VBA代碼更容易閱讀和理解。VBA語(yǔ)言的基礎(chǔ)是Visual Basic語(yǔ)言,具有易學(xué)可移植的特點(diǎn);VBA有一個(gè)面向?qū)ο蟮木幊汰h(huán)境,它只能處理對(duì)象,VBA所支持的各模塊對(duì)象模型內(nèi)嵌在Office軟件內(nèi)。
Word和Excel的對(duì)象模型是一種層次關(guān)系,Excel在主應(yīng)用程序(Application)對(duì)象內(nèi)包含子對(duì)象:工作簿對(duì)象(Workbook)、工作表對(duì)象(Worksheet)及大量的內(nèi)部函數(shù)對(duì)象等100多類;同樣VBA幾乎可以響應(yīng)Word對(duì)象的每個(gè)動(dòng)作,Word的任何元素如文檔表格段落、域及書(shū)簽等都可以用相應(yīng)封裝入對(duì)象。在Word主應(yīng)用程序(Application)對(duì)象中包含了如Document、Windows、Selection等對(duì)象。以課程教學(xué)小結(jié)表自動(dòng)生成程序段中需要用到的主要對(duì)象有:
2.1.1 需要用到的主要Excel模塊對(duì)象
(1)工作簿(Workbook)對(duì)象
一個(gè)工作簿(Workbook)對(duì)象實(shí)際上就是一個(gè)Excel文件,如果學(xué)生成績(jī)統(tǒng)計(jì)分析的文件名是“TEXTANLASYS.XLS”如在該文件中使用課程小結(jié)表自動(dòng)生成的宏,則該文件為當(dāng)前活動(dòng)的工作簿(Workbook)對(duì)象。
(2)工作表(Worksheet)對(duì)象
每個(gè)工作簿(Workbook)對(duì)象上可以有多個(gè)工作表(Worksheet)。在默認(rèn)情況下,Excel的當(dāng)前工作簿上有名為Sheetl,Sheet2,Sheet3三個(gè)工作表.并且Sheetl為當(dāng)前工作表。如果想使Sheet3成為當(dāng)前工作表,則可使用下列語(yǔ)句:
ExcelApp.Worksheets(“Sheet3”).Activate’ExcelApp為Excel.Application對(duì)象
(3)單元格(Cell)對(duì)象
工作表(Worksheet)對(duì)象中的單元格(Cell)。它是以行Row和列Col作為參數(shù)的。如下語(yǔ)句可以實(shí)現(xiàn)對(duì)某位置單元格賦值:
Cell(3,4)=5 ’將第三行第四列(第D列)的單元格賦值5。
2.1.2 需要用到的主要Word模塊對(duì)象
(1)Document對(duì)象
一個(gè)Document對(duì)象就表示一個(gè)Word文檔,如要在VBA中通過(guò)Excel程序打開(kāi)當(dāng)前目錄下需要填寫(xiě)分析數(shù)據(jù)的課程教學(xué)小結(jié)表Word文檔“kcxj.doc”,則可編寫(xiě)語(yǔ)句:
Set WdApp = CreateObject("Word.Application") ’打開(kāi)Word應(yīng)用程序
Set aDoc = WdApp.Documents.Open(ActiveWorkbook.Path & "/ kcxj.doc ")’ aDoc代表打開(kāi)的課程教學(xué)小結(jié)表文檔。
(2)區(qū)域(Range)對(duì)象
Range對(duì)象代表文檔中的一個(gè)特定范圍,在Visual Basic過(guò)程中使用Range對(duì)象可以定義文檔的某一部分,然后對(duì)該區(qū)域進(jìn)行一些操作,例如插入文字或應(yīng)用格式。
(3)表格(Table)對(duì)象
Table對(duì)象代表選定內(nèi)容范圍或文檔中的某個(gè)表格。因?yàn)樵谖臋n中往往有多個(gè)表格,往往需要用到表格集合對(duì)象加下標(biāo)的方式來(lái)定位,如:使用下列語(yǔ)句可以對(duì)當(dāng)前文檔的某個(gè)Table對(duì)象的某單元格賦值:
aDoc.Tables(1).Cell(3, 2).Range.InsertAfter Sheet2.Cells(2, 2)’表示對(duì)aDoc中表格1的第三行、第2列的單元格賦值為當(dāng)前Excel文件Sheet2中Cells(2, 2)的值。
課程教學(xué)小結(jié)表有兩個(gè)方面的主要作用:一是教師通過(guò)總結(jié)課堂教學(xué)過(guò)程中的經(jīng)驗(yàn)和體會(huì),并在定性評(píng)價(jià)的基礎(chǔ)上對(duì)教學(xué)設(shè)計(jì)提出合理化建議。二是教師通過(guò)對(duì)學(xué)生平時(shí)、考核成績(jī)的定量統(tǒng)計(jì)分析對(duì)學(xué)生成績(jī)及試卷質(zhì)量進(jìn)行評(píng)價(jià),獲得學(xué)生掌握知識(shí)程度及優(yōu)化試卷內(nèi)容思路。課程教學(xué)小結(jié)表基本結(jié)構(gòu)除包含課程基本信息等文字描述內(nèi)容以外,需要定量統(tǒng)計(jì)分析的數(shù)據(jù)結(jié)構(gòu)見(jiàn)圖1。
課程教學(xué)小結(jié)表主要需填寫(xiě)的統(tǒng)計(jì)分析數(shù)據(jù)有:
(1) 授課班級(jí)學(xué)生平時(shí)、考核及總評(píng)成績(jī)的各分?jǐn)?shù)段的分布情況及標(biāo)準(zhǔn)差,用表格表示;
(2) 試卷分析指標(biāo)主要包括:題目的難度、可信度等指標(biāo),也用表格表示。
這些值事先都要在Excel中計(jì)算出來(lái)。然后自動(dòng)從Excel工作表中自動(dòng)填寫(xiě)到課程教學(xué)小結(jié)表指定的表格單元格內(nèi)。
一般一套試卷共有大題4~6類,小題多于20題,以往教師手工計(jì)算學(xué)生考核得分時(shí),往往因?yàn)榕脑嚲砹看蠖容^容易算錯(cuò),經(jīng)常會(huì)出現(xiàn)多計(jì)或少計(jì)的情況,這對(duì)學(xué)生很不公平。現(xiàn)在利用Excel自動(dòng)計(jì)算的功能,教師在批改完某個(gè)學(xué)生的試卷后,首先在Excel中進(jìn)行每個(gè)學(xué)生考核成績(jī)的統(tǒng)計(jì),可以很好的克服上述問(wèn)題;同樣的Excel強(qiáng)大的統(tǒng)計(jì)及自編公式功能使教師方便的求均值、標(biāo)準(zhǔn)差及繪制成績(jī)分布曲線圖等;
但是,Excel的文字處理及表格表示沒(méi)有Word靈活,所以大部分高校的課程教學(xué)小結(jié)表多是Word文檔,這就需要把上述Excel表中的分析數(shù)據(jù)填入到Word文檔中,下面就是應(yīng)用VBA編寫(xiě)的一段宏編碼來(lái)實(shí)現(xiàn)該功能的方法。
(1)首先,把在進(jìn)行考核成績(jī)統(tǒng)計(jì)分析的工作簿中建立三個(gè)工作表,名稱分別為:學(xué)生信息、成績(jī)輸入及成績(jī)統(tǒng)計(jì)與試卷分析;
(2)在成績(jī)輸入表單中輸入每個(gè)學(xué)生的試卷各大題得分、平時(shí)成績(jī)、實(shí)驗(yàn)成績(jī),按照成績(jī)所占比例計(jì)算出總評(píng)成績(jī);
(3)利用Excel的內(nèi)部函數(shù)及強(qiáng)大的單元格計(jì)算能力,算出小結(jié)表需要填寫(xiě)的分析數(shù)據(jù):各分?jǐn)?shù)段人數(shù)、百分比、平均值、標(biāo)準(zhǔn)差及難易度等[5,6];
(4)打開(kāi)excel的“工具”菜單,單擊菜單項(xiàng)“宏”,在跳出的對(duì)話框中點(diǎn)擊“創(chuàng)建”按鈕,然后就打開(kāi)了VBA編程環(huán)境界面,在代碼窗口建立代碼。


輸入上述代碼段后就建立了新的宏過(guò)程filldoc(),然后執(zhí)行就可以完成自動(dòng)把數(shù)據(jù)導(dǎo)入課程小結(jié)表的功能。

圖1 課程教學(xué)小結(jié)表數(shù)據(jù)統(tǒng)計(jì)分析結(jié)構(gòu)
當(dāng)Word表格合并單元格比較多時(shí),就不能從Excel直接進(jìn)行整體復(fù)制粘貼,所以這給教師手工填寫(xiě)課程小結(jié)表帶來(lái)不便,這里利用VBA語(yǔ)言編程很方便地實(shí)現(xiàn)了把Excel單元格數(shù)據(jù)自動(dòng)填入課程教學(xué)小結(jié)表中,只要點(diǎn)擊一下鼠標(biāo)就可以輕易地解決重復(fù)和繁瑣的手工操作,減輕了教師的工作負(fù)擔(dān),提高了工作效率。
[1] 金文子,李永凡.在 ExceI中利用VBA程序進(jìn)行學(xué)生成績(jī)統(tǒng)計(jì)[J].電腦知識(shí)與技術(shù)(學(xué)術(shù)交流).2007,4(20):554~555.
[2]李影.用Excel實(shí)現(xiàn)成績(jī)統(tǒng)計(jì)與試卷分析[J].長(zhǎng)春大學(xué)學(xué)報(bào).2009,19(10):55~57.
[3]馬春虎,關(guān)麗華,張曉偉.VBA在成績(jī)管理中的應(yīng)用[J].承德醫(yī)學(xué)院學(xué)報(bào).2006,23(1):49~53.
[4]王川.中文版Office2000 VBA一冊(cè)通[M].北京:人民郵電出版社.2000,34~121.
[5]張效鋒,劉巍.基于方差分析和相關(guān)分析的學(xué)生學(xué)科成績(jī)的比較研究[J].白城師范學(xué)院學(xué)報(bào).2009,23(3):20~22.
[6] 趙紅梅.北京電大學(xué)生成績(jī)分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京工業(yè)大學(xué).2008.21~23.