【關鍵詞】辦公自動化;教學管理;VBA 宏語言
智慧校園建設為教育教學的日常管理注入了新的動能,智慧校園教學服務管理平臺(簡稱教務平臺)提供了多項教務管理功能(如教學計劃及任務安排、課表編排、調(diào)課處理、成績管理、學籍管理等),這使得教務員大大提高了辦公效率,各項資源的利用率也大大提高。但教務平臺依托網(wǎng)絡,須在聯(lián)網(wǎng)的前提下,登錄系統(tǒng)后方可查詢信息,而在實際工作中,為了及時響應工作需求,也為了有助于調(diào)課安排,往往需要匯總全院教師的課表信息,制作一張電子總表,教務員雖然可以從教學平臺中導出教師的課表信息,但導出的課表體積大、一頁上僅顯示一位教師的課表安排情況,不管是打印還是查看都不太方便,因此,教務員需要自行制作符合實際工作要求的總課表。
如果教務員采用手工錄入的方法制作總課表,不僅效率低,而且會存在錯誤,如果能根據(jù)教務系統(tǒng)中的排課情況,一鍵生成教師總課表,會極大地提高教務員的辦公效率。
教務平臺是高校在智慧校園建設環(huán)境下購買使用的一個通用型應用軟件,其功能可以滿足大部分教學管理所需,但教務平臺不具備一鍵生成符合實際需求的、有特定格式的全院教師總課表的功能,如果通過軟件定制功能來滿足要求,需要投入的資金巨大。本方案采用Office軟件自帶的VBA宏語言功能,通過編寫一些簡單的代碼,即可實現(xiàn)一鍵生成教師總課表,避免了手工錄入產(chǎn)生的錯誤,極大地提高了辦公效率。
(一) Excel VBA的介紹
Microsoft Excel是廣大辦公用戶所熟知的Microsoft Office軟件中的電子表格軟件,在計算機專業(yè)人員眼中,它也是一種操作簡便的數(shù)據(jù)庫管理工具。VBA是Visual Basic forApplications的縮寫,是微軟公司開發(fā)的宏語言,它被內(nèi)置于Microsoft Office軟件中。依靠VBA,Excel可以成為數(shù)據(jù)庫管理工具;有了VBA,可以基于Excel應用程序進行二次開發(fā);通過VBA,可以設計出與Windows窗口風格一致的交互式界面,便捷地實現(xiàn)對Excel表格的數(shù)據(jù)管理。這種基于ExcelVBA管理信息系統(tǒng)得到較為廣泛的應用[1]。
(二)選擇EXCEL VBA宏語言的原因
VBA是一種簡單且功能強大的編程語言,可用于擴展Office應用程序,VBA 腳本可用于加速執(zhí)行日常任務,為Office應用程序添加新功能,使用 Excel VBA可代替大部分格式設置、編輯或者函數(shù)調(diào)用[2]。
用于功能開發(fā)的計算機語言種類繁多,VBA不是最常使用的,甚至有人認為VBA已經(jīng)過時了,但從實際應用來看,VBA并未完全過時,目前最新的 MS Office 2021 、365 版本都還支持 VBA,因此只要微軟 Office 新版本繼續(xù)支持,VBA就不會過時、不會消失。相比Java、C#、python來看,VBA是office原生支持的,不需要部署環(huán)境,也無須安裝數(shù)據(jù)庫軟件,在使用時,如果用其他開發(fā)語言,需要先部署環(huán)境,建立數(shù)據(jù)庫,編寫代碼,設計人機交互界面(制作網(wǎng)頁等),步驟十分繁瑣,而excel就是一個整體,工作表可以作為“數(shù)據(jù)庫表”,工作表也可作為“交互界面”,相比較而言,VBA更適合用于辦公過程中實現(xiàn)某個既定流程的自動化處理,可提高辦公效率,且移植性高。因此在本方案中,選擇用Excel VBA宏語言編程實現(xiàn)教師總課表的一鍵生成。[3]
為了更快捷地生成教師總課表,也曾使用MySQL數(shù)據(jù)庫+PHP環(huán)境的方式制作教師總課表,但這個方法存在一些局限性,有以下不便之處:
(1)需要搭建環(huán)境
搭建環(huán)境,首先是下載安裝Apache HTTP服務器軟件,其次是PHP及MySQL軟件包,這些軟件都是免費的,可在官網(wǎng)上下載,同時,為了保證軟件能夠正常使用,還需配置PHP運行的環(huán)境參數(shù),過程較為復雜;
(2)需要維護數(shù)據(jù)庫
使用MySQL數(shù)據(jù)庫軟件管理數(shù)據(jù)時,首先要設計數(shù)據(jù)庫的模型、建立數(shù)據(jù)表的結構、錄入數(shù)據(jù),而為了生成教師總課表,在數(shù)據(jù)庫中至少需要建立3個工作表:教研室表、教師信息表、教師課務表,在每次生成新課表前,還需要對數(shù)據(jù)表進行更新維護,增加了工作量和復雜性;
(3)需要調(diào)整格式
PHP是一種在服務器端執(zhí)行的腳本語言,通過編寫代碼首先在網(wǎng)頁上生成教師總課表,再下載到本地計算機,保存下載的文件格式為Excel文件,這種方法得到的電子表的行列格式還存在著很大的問題,每次生成新課表后都需要花費一定的時間反復地調(diào)整格式,給工作帶來了不便。
因此,相比較而言,直接使用Excel的VBA宏語言更加簡便快捷。Excel軟件在電腦中使用非常普遍,不管是微軟還是WPS,其Excel都支持VBA,也無需再另外安裝其他軟件,不需要配置環(huán)境參數(shù),直接在Excel中編寫簡單的代碼就能實現(xiàn)目標功能。
(三)實現(xiàn)過程
1.數(shù)據(jù)準備
智慧校園教學管理服務平臺提供了課表編排的功能,每學期課表編排結束后,從教務平臺中導出全院教師課表數(shù)據(jù)文件,這份原始文件中的數(shù)據(jù)格式與實際所需的格式往往不同,因此要根據(jù)原始數(shù)據(jù)內(nèi)容來制作符合實際需要的總課表。
首先準備好一個Excel文件,在Excel文件中包含2個工作表,工作表1用于生成總表,可將其命名為教師總表,教師總表內(nèi)先預填一系列空白課表,每張空白課表的行標題為節(jié)次,列標題為星期,每橫向放置4位教師的課表,課表按教研室名稱分類,預先將全院教師名字按照其所在教研室分類后填入空白課表中;工作表2用作數(shù)據(jù)源,命名為數(shù)據(jù)庫表,每學期課表編排完成后,教務員從教務平臺中導出全院教師課表原始數(shù)據(jù),將原始數(shù)據(jù)用作數(shù)據(jù)源時,需對內(nèi)容和結構進行調(diào)整,原始數(shù)據(jù)中可能會存在合并的單元格,要取消合并的單元格,刪除不符合要求的標題,整理數(shù)據(jù),確保每個教師在數(shù)據(jù)表中僅有一條課務數(shù)據(jù)記錄。為了后續(xù)生成課表時數(shù)據(jù)能自動對應填入,數(shù)據(jù)表中每位教師的課務數(shù)據(jù)記錄采用一1、一2、一3、一4作為列標題,分別代表星期一第1-2節(jié)、3-4節(jié)、5-6節(jié)、7-8節(jié)課,后續(xù)列標題依此類推記錄每位教師每天的課務情況。
2.分析及實現(xiàn)
(1)生成課表
在Office軟件中,VBA提供了大量訪問對象(如頁面設置 PageSetup、表格設置 Tables、段落設置 Paragraph、字體設置Font等),由于它具有強大的對象控制能力、功能的擴展及定制能力,突破了Office的自身極限,因此可以完成MS Office本身無法完成的功能[4]。通過對這些對象的屬性設置、方法使用和事件驅(qū)動,實現(xiàn)對office的再次開發(fā),從而實現(xiàn)一鍵生成總課表的功能。Excel在設計模式下提供了豐富的表單控件用于交互界面的制作,要使用表單控件首先要啟用Excel的開發(fā)工具,需要進入Excel文件菜單→選項→自定義功能區(qū),將開發(fā)工具添加到主選項卡中。添加成功后,在窗口上方選項卡上點擊“開發(fā)工具”欄,在“插入”按鈕下即可找到表單控件,本方案使用了表單控件中的按鈕控件,在工作表界面的空白處插入兩個按鈕,一個用于一鍵生成總課表內(nèi)容,一個用于一鍵清除總課表課務信息內(nèi)容,通過按鈕控件的屬性對話框,可以輕松地修改按鈕文字、大小、顏色等樣式。
VBA作為一種面向?qū)ο蟮木幊谭椒?,它將代碼組織為不同的對象、類、模塊等不同的層次,這樣可以更加靈活地處理數(shù)據(jù)邏輯、提高代碼的可讀性和維護性[ 5 ]。在工作表中插入兩個窗體按鈕控件后,將其中一個按鈕(CommandButton1)的caption屬性設置為“生成”,進入代碼編輯界面,選擇代碼編輯對象為“CommandButton1”,事件為“click”。需要實現(xiàn)的功能為:當點擊該按鈕時,由Excel自動將工作表2:數(shù)據(jù)庫表中的數(shù)據(jù)內(nèi)容按教師名稱填入工作表1:教師總表的對應單元格內(nèi),生成一張適合打印、便于查看的總課表。
實現(xiàn)自動生成總課表的核心算法即為“兩個表的循環(huán)判斷”,如何實現(xiàn)這一過程呢?為了生成教師總課表,需要在工作表2:數(shù)據(jù)庫表中逐個取出每條數(shù)據(jù)記錄,將該條數(shù)據(jù)記錄中的教師姓名與工作表1:教師總表中的教師姓名進行比較,如果相同則將該條數(shù)據(jù)記錄中的課務信息填入工作表1中該教師課表的相應單元格內(nèi)。
教師總表中每橫向顯示4位教師的課務信息,因此這四位教師姓名分別位于A、I、Q、Y列,在自動匹配過程中,程序自動從工作表2:數(shù)據(jù)庫表中取出一位教師的數(shù)據(jù)記錄(即一行數(shù)據(jù)),將教師姓名與工作表1:教師總表中的第A、I、Q、Y列單元格內(nèi)教師姓名逐個比對,如果相同,則在工作表1該教師的課表內(nèi)按序?qū)⒄n務填入,填入的規(guī)則是——工作表2:數(shù)據(jù)庫表中某教師數(shù)據(jù)行中列標題為“一1”的單元格數(shù)據(jù)內(nèi)容填入工作表1:教師總表對應教師“周一”節(jié)次為“[1-2]”后的一個單元格內(nèi),其他依此類推,最后將該教師課務信息完整地填入課表中。
實現(xiàn)此過程的主要關鍵技術為:
①Excel表的實例化:通過set關鍵字創(chuàng)建數(shù)據(jù)表的實例化對象,如:Set b1 = Sheets(\"教師課表\"),后續(xù)可通過實例化對象名b1訪問Excel文件中的“教師課表”工作表。
②獲取數(shù)據(jù)表中的記錄總數(shù):VBA的Range對象提供了CurrentRegion屬性,這個屬性返回一個Range對象,該對象表示當前區(qū)域,常常用來獲取動態(tài)的單元格區(qū)域。CurrentRegion.Rows.Count可用于返回區(qū)域中行的個數(shù),是一種常用的行計數(shù)方法。
③循環(huán)判斷:為了匹配數(shù)據(jù),需采用循環(huán)嵌套,外層循環(huán)逐條獲取工作表2:數(shù)據(jù)表中每一條課務數(shù)據(jù)記錄,取出后在內(nèi)層循環(huán)遍歷工作表1:教師課表中每個教師姓名,如相同,通過Range對象獲取單元格內(nèi)數(shù)據(jù)填入教師課表中。
(2)清除教師總表中的課程內(nèi)容
每當新學期來臨,教師總課表需要清除原數(shù)據(jù),生成新數(shù)據(jù),因此清除功能也是必不可少的,清除數(shù)據(jù)時,僅需刪除課務信息,但要保留數(shù)據(jù)表的行列格式,在核對更新各教研室的教師名單后,點擊生成按鈕,即可得到新學期的教師總課表。
實現(xiàn)清除數(shù)據(jù)功能同樣采用表單控件中的按鈕控件,將之前插入的按鈕(CommandButton2)的caption屬性設置為“清除”,進入代碼編輯界面,選擇代碼編輯對象為“CommandButton2”,事件選擇為“click”。需要實現(xiàn)的功能為:僅刪除當前工作表中的課務信息。由于教師總表中每橫向顯示4位教師的課表,清除時僅去除掉課務信息,保留其他部分,每位教師的課表占5列,4位教師的課表數(shù)據(jù)分別位于C-G列、K-O列、S-W列、AA-AE列,點擊清除按鈕,即要清除這些列中的課務信息內(nèi)容。
實現(xiàn)此過程的主要關鍵技術為:
①清除信息:通過設置課表中單元格數(shù)據(jù)為空值來達到清除的目的,例如:b1.Range(\"C 4\") = \"\",即清除C4單元格中的內(nèi)容。
②保留需要的數(shù)據(jù):在清除數(shù)據(jù)時要保留部分數(shù)據(jù),如教研室名稱、教師姓名、課表中的星期和節(jié)次,需要清除的僅是教師課表中每天的課務數(shù)據(jù),因此遍歷+判斷的方法來判定實現(xiàn)哪些數(shù)據(jù)需要清除。Range(\"A1\").CurrentRegion.Rows.Count可獲取教師總表中的記錄數(shù),在遍歷過程中,如果某單元格的內(nèi)容為節(jié)次標題(如:[1-2]),即清除該單元格之后橫向5個單元格中的數(shù)據(jù)(即每天該節(jié)次的數(shù)據(jù))。
該方案在150人規(guī)模背景下已使用數(shù)個學期,每學期課表編排完成后,從智慧校園教務平臺中導出原始課表數(shù)據(jù),用該方案生成全院教師電子總課表花費時間在5秒以內(nèi),此方案快速有效、準確性高,也無須重新調(diào)整電子表格式,極大地提高了辦公效率。實踐證明方案是成功的,當然在代碼設計時還有一些不足之處,會在今后的使用過程中進一步完善和維護。
智慧校園教學服務管理平臺在日常教學管理中發(fā)揮著重要的作用,但無法滿足教務員所有的實際工作需求,教務平臺功能的升級完善需要一定的時間周期,也需要投入不菲的資金數(shù)額,而且也不是所有的需求都能實現(xiàn)升級補充,Excel的VBA功能設計實現(xiàn)自動生成教師總表,既能滿足個性化需求,又提高了辦公效率,具有一定的應用價值。
用本方案自動生成教師總課表,其實就是一個啟用了宏的Excel文件,因此操作簡便,節(jié)省資源,易于維護。實踐表明,Excel及VBA,在實現(xiàn)辦公流程的自動化處理方面具有優(yōu)勢,可開發(fā)出易維護、易操作、省資源的系統(tǒng),是實現(xiàn)辦公自動化,提高工作效率的便捷手段。
參考文獻:
[1] 劉柱鴻, 黎鑫, 彭元輝. 基于Excel VBA 的教學秩序督查報表管理系統(tǒng)設計與實現(xiàn)[J]. 軟件工程,2018,21(4):45-48.
[2] 楊明, 傅天翔. 基于VBA 的汽車零部件物流包裝方案信息管理應用[J]. 電腦編程技巧與維護,2022(12):94-96.
[3] 周德林. 運用VBA 自動生成子課程表[J]. 電子測試,2018(21):135-136.
[4] 馬寧, 鄧先瑞, 杜瑞慶. 基于VBA 和EXCEL 的學生成績排序[J]. 中國科技信息,2007(1):231-232.
[5] 王超. 基于VBA 技術的一鍵公文自動排版的實現(xiàn)[J]. 淮海工學院學報(自然科學版),2015,24(3):42-46.