曹 亮
(蘇州高等職業(yè)技術學校,江蘇蘇州,215009)
EXCEL VBA在職業(yè)學校成績單打印工作中的應用
曹 亮
(蘇州高等職業(yè)技術學校,江蘇蘇州,215009)
EXCEL VBA通過對文檔格式的設置、程序的編寫,實現(xiàn)了學生成績單等表格的全面打印,該應用基于數(shù)據(jù)庫原理,包含兩部分EXCEL文檔,數(shù)據(jù)表格用于存儲表單數(shù)據(jù),打印工具實現(xiàn)表單打印。
成績單打??;EXCEL;VBA;數(shù)據(jù)庫
隨著學校信息化工作的不斷深化,越來越多的高校會使用學生成績管理系統(tǒng)來存儲學生每一個學期的成績、評語和思想表現(xiàn)等信息,學期結(jié)束后學生、家長可以通過學校提供的賬號登陸系統(tǒng)進行查詢,方便學生的同時也減輕了班主任、任課教師在學期末的工作量,達到事半功倍的效果。然而,仍有為數(shù)不少的職業(yè)類學校還未能實現(xiàn)學生成績在線查詢功能,每到學期末仍然需要班主任以成績報告單的形式告知學生成績和評語,手工填寫成績單,工作量大,耗時耗力,對于目前信息化程度越來越高的職業(yè)學校而言,這無疑是一種尷尬。本文針對職業(yè)學校無法提供學生在線查詢成績的情況,根據(jù)班主任期末的工作特點,利用微軟公司的EXCEL軟件的VBA功能,基于數(shù)據(jù)庫的理念,實現(xiàn)學生成績報告單、三好學生、優(yōu)秀學生干部等表格的打印功能,免去班主任手寫的麻煩,作為向?qū)W生成績在線查詢的過渡,該功能的實現(xiàn)可以有效提高班主任期末工作的效率, EXCEL VBA零成本,小巧靈活,方便編輯,具有一定的推廣價值。
Visual Basic for Applications(VBA)是 Visual Basic 的一種宏語言,是微軟開發(fā)出來在其桌面應用程序中執(zhí)行通用的自動化(OLE)任務的編程語言。主要能用來擴展Windows的應用程序功能,特別是Microsoft Office軟件。也可說是一種應用程式視覺化的Basic 腳本。該語言于1993年由微軟公司開發(fā)的的應用程序共享一種通用的自動化語言——Visual Basic For Application(VBA),實際上VBA是寄生于VB應用程序的版本。微軟在1994年發(fā)行的Excel5.0版本中,即具備了VBA的宏功能。
VBA 易于學習掌握,可以使用宏記錄器記錄用戶的各種操作并將其轉(zhuǎn)換為VBA 程序代碼。這樣用戶可以容易地將日常工作轉(zhuǎn)換為VBA 程序代碼,使工作自動化。因此,對于在工作中需要經(jīng)常使用Office 套裝軟件的用戶,學用VBA 有助于使工作自動化,提高工作效率。另外,由于VBA 可以直接應用Office 套裝軟件的各項強大功能,所以對于程序設計人員的程序設計和開發(fā)更加方便快捷。
EXCEL VBA最終是以電子表格文檔的形式存在的,為了方便班主任的使用,我們將該應用分為兩個部分:打印工具部分和數(shù)據(jù)表格部分(兩個獨立的EXCEL文檔)。打印工具是實現(xiàn)成績單等表格打印的功能,其中包含了最主要的VBA程序;數(shù)據(jù)表格是學生成績、評語等信息存儲的地方,通過數(shù)據(jù)表格將數(shù)據(jù)導入至打印工具,從而實現(xiàn)所有學生成績報告單等表格的打印。之所以采用兩個獨立文檔的形式,是因為在實踐應用中發(fā)現(xiàn),包含有VBA程序的文檔對于普通非計算機專業(yè)的班主任而言使用難度較大,基于數(shù)據(jù)庫的原理要求班主任必須將學生成績、評語的信息事先錄入到文檔中才能利用打印工具進行打印,如果打印工具和數(shù)據(jù)表格混在一個文檔中就會出現(xiàn)很多錯誤操作。兩個文檔的存在,班主任只要負責將數(shù)據(jù)錄入到數(shù)據(jù)表格文檔,而工作人員便可以將數(shù)據(jù)導入至打印工具文檔進行打印。
EXCEL電子表格是現(xiàn)代辦公最常用的軟件之一,其本身就是一個最基本的數(shù)據(jù)庫,雖然比不上ACCESS和專業(yè)的SQL SERVER等數(shù)據(jù)庫軟件,面對成績單數(shù)據(jù)的存儲還是綽綽有余的。根據(jù)職業(yè)學校成績報告單的特點,此處以蘇州高等職業(yè)技術學校為例,在數(shù)據(jù)表格文檔中設置兩張工作表,一是用于存儲成績,二是用于存儲評語等信息。
需要指出的是,該數(shù)據(jù)表是以學生姓名為索引的,也就是說學生姓名就是該學生的ID,這關系到VBA程序設計。
在數(shù)據(jù)表格中,為了便于班主任統(tǒng)計學生的排名,是否能夠評為三好學生等,設置了VBA程序,利用按鈕進行觸發(fā)。
為了便于工作人員打印時將數(shù)據(jù)導入到打印工具,設置了數(shù)據(jù)拷貝程序,利用按鈕進行觸發(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ù)成績報告單、三好學生呈報表等表格的格式在工作表中進行設置
需要指出的是,在EXCEL2010軟件中,需要將度量單位設置為CM或MM。首先要對成績報告單等表格進行測量,標記行、列和頁邊距的實際尺寸,然后再到EXCEL中進行相應尺寸設置,最終要實現(xiàn)電子表格和紙質(zhì)表單的尺寸、行、列、邊距一致,這個環(huán)節(jié)關系到最終打印的質(zhì)量,每個數(shù)據(jù)項目是否能準確的打印在對應位置。如圖1所示。
圖1 打印工具設計
4.2 成績報告單VBA程序設置
首先確定打印程序的功能,在成績報告單電子表格中切換學生姓名時,程序能夠在數(shù)據(jù)表中搜索該學生的信息,即該學生所有科目的成績和評語等信息,搜索到之后將這些數(shù)據(jù)顯示在成績單電子表格對應的位置,最終實現(xiàn)打印。
(1)需要在成績報告單電子表格姓名單元格中產(chǎn)生學生姓名的下拉列表,使用了單元格數(shù)據(jù)有效性功能,將數(shù)據(jù)表中的姓名列作為數(shù)據(jù)源。
(2)切換姓名觸發(fā)搜索程序的事件,使用了Worksheet_Change事件,當sheet中指定位置單元格數(shù)據(jù)發(fā)生變化時即觸發(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)當發(fā)生Worksheet_Change事件時,需要在數(shù)據(jù)表格中搜索該單元格中姓名學生,使用FOR循環(huán)進行搜索,之后再次通過循環(huán)將學生成績、評語等信息拷貝至成績單對應單元格內(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)為了便于程序后期的維護,主要程序存放于VBA模塊中,由工作表中的過程進行調(diào)用。
其余的三好學生呈報表等表格程序的設計亦是如此,不再贅述,打印工具能夠?qū)崿F(xiàn)以蘇州高等職業(yè)技術學校為例的期末一系列表格的打印。
本文從實用的角度對EXCEL VBA在成績報告單打印中的應用進行了詳細的說明,程序的難度并不大,無論是設計人員還是使用人員都非常容易上手。在實際使用中,能夠有效減輕班主期末的工作壓力,提高效率。當然,VBA的應用不限于此,對于學校而言,無論是教務、財務、行政都能夠以此為例,開發(fā)出適合本部門的各種應用,優(yōu)化提高工作效率,提升學校工作的信息化程度。
[1]周興裔.面向職業(yè)技術學院的考試系統(tǒng)的設計與實現(xiàn)[D].沈陽:東北大學,2010.
[2]向蘭宣.VBA在學生成績單打印中的應用[J].消費電子,2013(12).
[3]莊嚴.學生成績錄入系統(tǒng)中自動填表功能的設計與實現(xiàn)[J].考試周刊,2014(67).
[4]鄧滿英.基于Excel班級學生成績查詢功能的設計與實現(xiàn)[J].牡丹江師范學院學報,2012(4).
[5]錢平生.基于Excel函數(shù)實現(xiàn)學生成績有效管理[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