曹 亮
(蘇州高等職業(yè)技術(shù)學(xué)校,江蘇蘇州,215009)
EXCEL VBA在職業(yè)學(xué)校成績(jī)單打印工作中的應(yīng)用
曹 亮
(蘇州高等職業(yè)技術(shù)學(xué)校,江蘇蘇州,215009)
EXCEL VBA通過(guò)對(duì)文檔格式的設(shè)置、程序的編寫,實(shí)現(xiàn)了學(xué)生成績(jī)單等表格的全面打印,該應(yīng)用基于數(shù)據(jù)庫(kù)原理,包含兩部分EXCEL文檔,數(shù)據(jù)表格用于存儲(chǔ)表單數(shù)據(jù),打印工具實(shí)現(xiàn)表單打印。
成績(jī)單打印;EXCEL;VBA;數(shù)據(jù)庫(kù)
隨著學(xué)校信息化工作的不斷深化,越來(lái)越多的高校會(huì)使用學(xué)生成績(jī)管理系統(tǒng)來(lái)存儲(chǔ)學(xué)生每一個(gè)學(xué)期的成績(jī)、評(píng)語(yǔ)和思想表現(xiàn)等信息,學(xué)期結(jié)束后學(xué)生、家長(zhǎng)可以通過(guò)學(xué)校提供的賬號(hào)登陸系統(tǒng)進(jìn)行查詢,方便學(xué)生的同時(shí)也減輕了班主任、任課教師在學(xué)期末的工作量,達(dá)到事半功倍的效果。然而,仍有為數(shù)不少的職業(yè)類學(xué)校還未能實(shí)現(xiàn)學(xué)生成績(jī)?cè)诰€查詢功能,每到學(xué)期末仍然需要班主任以成績(jī)報(bào)告單的形式告知學(xué)生成績(jī)和評(píng)語(yǔ),手工填寫成績(jī)單,工作量大,耗時(shí)耗力,對(duì)于目前信息化程度越來(lái)越高的職業(yè)學(xué)校而言,這無(wú)疑是一種尷尬。本文針對(duì)職業(yè)學(xué)校無(wú)法提供學(xué)生在線查詢成績(jī)的情況,根據(jù)班主任期末的工作特點(diǎn),利用微軟公司的EXCEL軟件的VBA功能,基于數(shù)據(jù)庫(kù)的理念,實(shí)現(xiàn)學(xué)生成績(jī)報(bào)告單、三好學(xué)生、優(yōu)秀學(xué)生干部等表格的打印功能,免去班主任手寫的麻煩,作為向?qū)W生成績(jī)?cè)诰€查詢的過(guò)渡,該功能的實(shí)現(xiàn)可以有效提高班主任期末工作的效率, EXCEL VBA零成本,小巧靈活,方便編輯,具有一定的推廣價(jià)值。
Visual Basic for Applications(VBA)是 Visual Basic 的一種宏語(yǔ)言,是微軟開發(fā)出來(lái)在其桌面應(yīng)用程序中執(zhí)行通用的自動(dòng)化(OLE)任務(wù)的編程語(yǔ)言。主要能用來(lái)擴(kuò)展Windows的應(yīng)用程序功能,特別是Microsoft Office軟件。也可說(shuō)是一種應(yīng)用程式視覺(jué)化的Basic 腳本。該語(yǔ)言于1993年由微軟公司開發(fā)的的應(yīng)用程序共享一種通用的自動(dòng)化語(yǔ)言——Visual Basic For Application(VBA),實(shí)際上VBA是寄生于VB應(yīng)用程序的版本。微軟在1994年發(fā)行的Excel5.0版本中,即具備了VBA的宏功能。
VBA 易于學(xué)習(xí)掌握,可以使用宏記錄器記錄用戶的各種操作并將其轉(zhuǎn)換為VBA 程序代碼。這樣用戶可以容易地將日常工作轉(zhuǎn)換為VBA 程序代碼,使工作自動(dòng)化。因此,對(duì)于在工作中需要經(jīng)常使用Office 套裝軟件的用戶,學(xué)用VBA 有助于使工作自動(dòng)化,提高工作效率。另外,由于VBA 可以直接應(yīng)用Office 套裝軟件的各項(xiàng)強(qiáng)大功能,所以對(duì)于程序設(shè)計(jì)人員的程序設(shè)計(jì)和開發(fā)更加方便快捷。
EXCEL VBA最終是以電子表格文檔的形式存在的,為了方便班主任的使用,我們將該應(yīng)用分為兩個(gè)部分:打印工具部分和數(shù)據(jù)表格部分(兩個(gè)獨(dú)立的EXCEL文檔)。打印工具是實(shí)現(xiàn)成績(jī)單等表格打印的功能,其中包含了最主要的VBA程序;數(shù)據(jù)表格是學(xué)生成績(jī)、評(píng)語(yǔ)等信息存儲(chǔ)的地方,通過(guò)數(shù)據(jù)表格將數(shù)據(jù)導(dǎo)入至打印工具,從而實(shí)現(xiàn)所有學(xué)生成績(jī)報(bào)告單等表格的打印。之所以采用兩個(gè)獨(dú)立文檔的形式,是因?yàn)樵趯?shí)踐應(yīng)用中發(fā)現(xiàn),包含有VBA程序的文檔對(duì)于普通非計(jì)算機(jī)專業(yè)的班主任而言使用難度較大,基于數(shù)據(jù)庫(kù)的原理要求班主任必須將學(xué)生成績(jī)、評(píng)語(yǔ)的信息事先錄入到文檔中才能利用打印工具進(jìn)行打印,如果打印工具和數(shù)據(jù)表格混在一個(gè)文檔中就會(huì)出現(xiàn)很多錯(cuò)誤操作。兩個(gè)文檔的存在,班主任只要負(fù)責(zé)將數(shù)據(jù)錄入到數(shù)據(jù)表格文檔,而工作人員便可以將數(shù)據(jù)導(dǎo)入至打印工具文檔進(jìn)行打印。
EXCEL電子表格是現(xiàn)代辦公最常用的軟件之一,其本身就是一個(gè)最基本的數(shù)據(jù)庫(kù),雖然比不上ACCESS和專業(yè)的SQL SERVER等數(shù)據(jù)庫(kù)軟件,面對(duì)成績(jī)單數(shù)據(jù)的存儲(chǔ)還是綽綽有余的。根據(jù)職業(yè)學(xué)校成績(jī)報(bào)告單的特點(diǎn),此處以蘇州高等職業(yè)技術(shù)學(xué)校為例,在數(shù)據(jù)表格文檔中設(shè)置兩張工作表,一是用于存儲(chǔ)成績(jī),二是用于存儲(chǔ)評(píng)語(yǔ)等信息。
需要指出的是,該數(shù)據(jù)表是以學(xué)生姓名為索引的,也就是說(shuō)學(xué)生姓名就是該學(xué)生的ID,這關(guān)系到VBA程序設(shè)計(jì)。
在數(shù)據(jù)表格中,為了便于班主任統(tǒng)計(jì)學(xué)生的排名,是否能夠評(píng)為三好學(xué)生等,設(shè)置了VBA程序,利用按鈕進(jìn)行觸發(fā)。
為了便于工作人員打印時(shí)將數(shù)據(jù)導(dǎo)入到打印工具,設(shè)置了數(shù)據(jù)拷貝程序,利用按鈕進(jìn)行觸發(fā),程序如下。
Public Sub abc8()
mydir = Dir(ThisWorkbook.Path &”print.xlsm”,vbNormal)
Workbooks.Open ThisWorkbook.Path &””& mydir
Sheet2.Range(“a2:bw53”).Copy
Workbooks(“print.xlsm”).Sheets(1).Range(“a2:bw53”)= “”
Workbooks(“print.xlsm”).Sheets(1).Range(“a2”).PasteSpecial
Sheet3.Range(“a3:r52”).Copy
Workbooks(“print.xlsm”).Activate
Workbooks(“print.xlsm”).Sheets(2).Range(“a3:r52”)=“”
Workbooks(“print.xlsm”).Sheets(2).Range(“a3”).PasteSpecial
End Sub
4.1 根據(jù)成績(jī)報(bào)告單、三好學(xué)生呈報(bào)表等表格的格式在工作表中進(jìn)行設(shè)置
需要指出的是,在EXCEL2010軟件中,需要將度量單位設(shè)置為CM或MM。首先要對(duì)成績(jī)報(bào)告單等表格進(jìn)行測(cè)量,標(biāo)記行、列和頁(yè)邊距的實(shí)際尺寸,然后再到EXCEL中進(jìn)行相應(yīng)尺寸設(shè)置,最終要實(shí)現(xiàn)電子表格和紙質(zhì)表單的尺寸、行、列、邊距一致,這個(gè)環(huán)節(jié)關(guān)系到最終打印的質(zhì)量,每個(gè)數(shù)據(jù)項(xiàng)目是否能準(zhǔn)確的打印在對(duì)應(yīng)位置。如圖1所示。

圖1 打印工具設(shè)計(jì)
4.2 成績(jī)報(bào)告單VBA程序設(shè)置
首先確定打印程序的功能,在成績(jī)報(bào)告單電子表格中切換學(xué)生姓名時(shí),程序能夠在數(shù)據(jù)表中搜索該學(xué)生的信息,即該學(xué)生所有科目的成績(jī)和評(píng)語(yǔ)等信息,搜索到之后將這些數(shù)據(jù)顯示在成績(jī)單電子表格對(duì)應(yīng)的位置,最終實(shí)現(xiàn)打印。
(1)需要在成績(jī)報(bào)告單電子表格姓名單元格中產(chǎn)生學(xué)生姓名的下拉列表,使用了單元格數(shù)據(jù)有效性功能,將數(shù)據(jù)表中的姓名列作為數(shù)據(jù)源。
(2)切換姓名觸發(fā)搜索程序的事件,使用了Worksheet_Change事件,當(dāng)sheet中指定位置單元格數(shù)據(jù)發(fā)生變化時(shí)即觸發(fā)程序。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column=26 And Target.Row=20 Then
Call Sou
End If
End Sub
(3)當(dāng)發(fā)生Worksheet_Change事件時(shí),需要在數(shù)據(jù)表格中搜索該單元格中姓名學(xué)生,使用FOR循環(huán)進(jìn)行搜索,之后再次通過(guò)循環(huán)將學(xué)生成績(jī)、評(píng)語(yǔ)等信息拷貝至成績(jī)單對(duì)應(yīng)單元格內(nèi),部分程序如下:
x = 4
For i = 4 To 60
If Sheet9.Cells(20, 26) = Sheet2.Cells(i, 2) Then
For j = 3 To ll - 1
k = k + 1
If k = 3 Then
k = 4
End If
If Sheet2.Cells(i, j) <>”” Then
Sheet8.Cells(x, k + 22) = Val(Sheet2.Cells(i, j))
Else
Sheet8.Cells(x, k + 22) =“”
End If
If k = 6 Then
k = 0
x = x + 1
End If
Next
Sheet8.Cells(3, 2) = Sheet3.Cells(i - 1, 3)
Sheet8.Cells(13, 5) = Sheet3.Cells(i - 1, 4)
Sheet8.Cells(13, 18) = Sheet3.Cells(i - 1, 5)
Sheet8.Cells(17, 6) = Sheet3.Cells(i - 1, 7)
Sheet8.Cells(17, 9) = Sheet3.Cells(i - 1, 8)
Sheet8.Cells(17, 11) = Sheet3.Cells(i - 1, 9)
Sheet8.Cells(17, 19) = Sheet3.Cells(i - 1, 10)
Sheet8.Cells(20, 23) = Sheet3.Cells(i - 1, 11)
End If
Next
(4)為了便于程序后期的維護(hù),主要程序存放于VBA模塊中,由工作表中的過(guò)程進(jìn)行調(diào)用。
其余的三好學(xué)生呈報(bào)表等表格程序的設(shè)計(jì)亦是如此,不再贅述,打印工具能夠?qū)崿F(xiàn)以蘇州高等職業(yè)技術(shù)學(xué)校為例的期末一系列表格的打印。
本文從實(shí)用的角度對(duì)EXCEL VBA在成績(jī)報(bào)告單打印中的應(yīng)用進(jìn)行了詳細(xì)的說(shuō)明,程序的難度并不大,無(wú)論是設(shè)計(jì)人員還是使用人員都非常容易上手。在實(shí)際使用中,能夠有效減輕班主期末的工作壓力,提高效率。當(dāng)然,VBA的應(yīng)用不限于此,對(duì)于學(xué)校而言,無(wú)論是教務(wù)、財(cái)務(wù)、行政都能夠以此為例,開發(fā)出適合本部門的各種應(yīng)用,優(yōu)化提高工作效率,提升學(xué)校工作的信息化程度。
[1]周興裔.面向職業(yè)技術(shù)學(xué)院的考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].沈陽(yáng):東北大學(xué),2010.
[2]向蘭宣.VBA在學(xué)生成績(jī)單打印中的應(yīng)用[J].消費(fèi)電子,2013(12).
[3]莊嚴(yán).學(xué)生成績(jī)錄入系統(tǒng)中自動(dòng)填表功能的設(shè)計(jì)與實(shí)現(xiàn)[J].考試周刊,2014(67).
[4]鄧滿英.基于Excel班級(jí)學(xué)生成績(jī)查詢功能的設(shè)計(jì)與實(shí)現(xiàn)[J].牡丹江師范學(xué)院學(xué)報(bào),2012(4).
[5]錢平生.基于Excel函數(shù)實(shí)現(xiàn)學(xué)生成績(jī)有效管理[J].軟件,2013(6).
Application of EXCEL VBA in the printing of report cards in Vocational Schools
Cao Liang
(Suzhou Higher Vocational School,Suzhou Jiangsu,215009)
EXCEL VBA through writing to document format settings, procedures, to achieve a comprehensive student transcript print form, the application based on the principle of the database, contains two parts of EXCEL documents, the data table for storing the form data, printing tools form printing.
report printing; EXCEL; VBA; database