曹 亮
(蘇州高等職業技術學校,江蘇蘇州,215009)
EXCEL VBA在職業學校成績單打印工作中的應用
曹 亮
(蘇州高等職業技術學校,江蘇蘇州,215009)
EXCEL VBA通過對文檔格式的設置、程序的編寫,實現了學生成績單等表格的全面打印,該應用基于數據庫原理,包含兩部分EXCEL文檔,數據表格用于存儲表單數據,打印工具實現表單打印。
成績單打印;EXCEL;VBA;數據庫
隨著學校信息化工作的不斷深化,越來越多的高校會使用學生成績管理系統來存儲學生每一個學期的成績、評語和思想表現等信息,學期結束后學生、家長可以通過學校提供的賬號登陸系統進行查詢,方便學生的同時也減輕了班主任、任課教師在學期末的工作量,達到事半功倍的效果。然而,仍有為數不少的職業類學校還未能實現學生成績在線查詢功能,每到學期末仍然需要班主任以成績報告單的形式告知學生成績和評語,手工填寫成績單,工作量大,耗時耗力,對于目前信息化程度越來越高的職業學校而言,這無疑是一種尷尬。本文針對職業學校無法提供學生在線查詢成績的情況,根據班主任期末的工作特點,利用微軟公司的EXCEL軟件的VBA功能,基于數據庫的理念,實現學生成績報告單、三好學生、優秀學生干部等表格的打印功能,免去班主任手寫的麻煩,作為向學生成績在線查詢的過渡,該功能的實現可以有效提高班主任期末工作的效率, EXCEL VBA零成本,小巧靈活,方便編輯,具有一定的推廣價值。
Visual Basic for Applications(VBA)是 Visual Basic 的一種宏語言,是微軟開發出來在其桌面應用程序中執行通用的自動化(OLE)任務的編程語言。主要能用來擴展Windows的應用程序功能,特別是Microsoft Office軟件。也可說是一種應用程式視覺化的Basic 腳本。該語言于1993年由微軟公司開發的的應用程序共享一種通用的自動化語言——Visual Basic For Application(VBA),實際上VBA是寄生于VB應用程序的版本。微軟在1994年發行的Excel5.0版本中,即具備了VBA的宏功能。
VBA 易于學習掌握,可以使用宏記錄器記錄用戶的各種操作并將其轉換為VBA 程序代碼。這樣用戶可以容易地將日常工作轉換為VBA 程序代碼,使工作自動化。因此,對于在工作中需要經常使用Office 套裝軟件的用戶,學用VBA 有助于使工作自動化,提高工作效率。另外,由于VBA 可以直接應用Office 套裝軟件的各項強大功能,所以對于程序設計人員的程序設計和開發更加方便快捷。
EXCEL VBA最終是以電子表格文檔的形式存在的,為了方便班主任的使用,我們將該應用分為兩個部分:打印工具部分和數據表格部分(兩個獨立的EXCEL文檔)。打印工具是實現成績單等表格打印的功能,其中包含了最主要的VBA程序;數據表格是學生成績、評語等信息存儲的地方,通過數據表格將數據導入至打印工具,從而實現所有學生成績報告單等表格的打印。之所以采用兩個獨立文檔的形式,是因為在實踐應用中發現,包含有VBA程序的文檔對于普通非計算機專業的班主任而言使用難度較大,基于數據庫的原理要求班主任必須將學生成績、評語的信息事先錄入到文檔中才能利用打印工具進行打印,如果打印工具和數據表格混在一個文檔中就會出現很多錯誤操作。兩個文檔的存在,班主任只要負責將數據錄入到數據表格文檔,而工作人員便可以將數據導入至打印工具文檔進行打印。
EXCEL電子表格是現代辦公最常用的軟件之一,其本身就是一個最基本的數據庫,雖然比不上ACCESS和專業的SQL SERVER等數據庫軟件,面對成績單數據的存儲還是綽綽有余的。根據職業學校成績報告單的特點,此處以蘇州高等職業技術學校為例,在數據表格文檔中設置兩張工作表,一是用于存儲成績,二是用于存儲評語等信息。
需要指出的是,該數據表是以學生姓名為索引的,也就是說學生姓名就是該學生的ID,這關系到VBA程序設計。
在數據表格中,為了便于班主任統計學生的排名,是否能夠評為三好學生等,設置了VBA程序,利用按鈕進行觸發。
為了便于工作人員打印時將數據導入到打印工具,設置了數據拷貝程序,利用按鈕進行觸發,程序如下。
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 根據成績報告單、三好學生呈報表等表格的格式在工作表中進行設置
需要指出的是,在EXCEL2010軟件中,需要將度量單位設置為CM或MM。首先要對成績報告單等表格進行測量,標記行、列和頁邊距的實際尺寸,然后再到EXCEL中進行相應尺寸設置,最終要實現電子表格和紙質表單的尺寸、行、列、邊距一致,這個環節關系到最終打印的質量,每個數據項目是否能準確的打印在對應位置。如圖1所示。

圖1 打印工具設計
4.2 成績報告單VBA程序設置
首先確定打印程序的功能,在成績報告單電子表格中切換學生姓名時,程序能夠在數據表中搜索該學生的信息,即該學生所有科目的成績和評語等信息,搜索到之后將這些數據顯示在成績單電子表格對應的位置,最終實現打印。
(1)需要在成績報告單電子表格姓名單元格中產生學生姓名的下拉列表,使用了單元格數據有效性功能,將數據表中的姓名列作為數據源。
(2)切換姓名觸發搜索程序的事件,使用了Worksheet_Change事件,當sheet中指定位置單元格數據發生變化時即觸發程序。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column=26 And Target.Row=20 Then
Call Sou
End If
End Sub
(3)當發生Worksheet_Change事件時,需要在數據表格中搜索該單元格中姓名學生,使用FOR循環進行搜索,之后再次通過循環將學生成績、評語等信息拷貝至成績單對應單元格內,部分程序如下:
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模塊中,由工作表中的過程進行調用。
其余的三好學生呈報表等表格程序的設計亦是如此,不再贅述,打印工具能夠實現以蘇州高等職業技術學校為例的期末一系列表格的打印。
本文從實用的角度對EXCEL VBA在成績報告單打印中的應用進行了詳細的說明,程序的難度并不大,無論是設計人員還是使用人員都非常容易上手。在實際使用中,能夠有效減輕班主期末的工作壓力,提高效率。當然,VBA的應用不限于此,對于學校而言,無論是教務、財務、行政都能夠以此為例,開發出適合本部門的各種應用,優化提高工作效率,提升學校工作的信息化程度。
[1]周興裔.面向職業技術學院的考試系統的設計與實現[D].沈陽:東北大學,2010.
[2]向蘭宣.VBA在學生成績單打印中的應用[J].消費電子,2013(12).
[3]莊嚴.學生成績錄入系統中自動填表功能的設計與實現[J].考試周刊,2014(67).
[4]鄧滿英.基于Excel班級學生成績查詢功能的設計與實現[J].牡丹江師范學院學報,2012(4).
[5]錢平生.基于Excel函數實現學生成績有效管理[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