解明才
(云南省通??h教師進(jìn)修學(xué)校 云南玉溪 652799)
基于Execl VBA的一個(gè)企業(yè)工藝通知單程序設(shè)計(jì)
解明才
(云南省通??h教師進(jìn)修學(xué)校 云南玉溪 652799)
隨著各行各業(yè)的管理數(shù)字化,對數(shù)據(jù)的處理能力要求也越來越高,明顯Excel力不從心,VBA的出現(xiàn)使得Excel重新強(qiáng)大起來。學(xué)習(xí)一定的VBA語言以后,可以為平時(shí)的數(shù)據(jù)處理提供一個(gè)良好的開發(fā)環(huán)境,也可以自己進(jìn)行程序設(shè)計(jì)。
Excel;VBA;數(shù)據(jù)處理;印刷企業(yè);程序設(shè)計(jì)
VBA是什么呢?VBA的全稱是Visual Basic for Application。VBA是Microsoft Visual Basic的應(yīng)用程序版本,它集成在office組件之中。由于VBA的出現(xiàn),使Office形成了獨(dú)立的編程環(huán)境。
VBA最簡單的應(yīng)用就是自動(dòng)執(zhí)行重復(fù)的操作。比如在Excel中,我們要格式化月報(bào)表,格式化表格,設(shè)置字體、添加邊框等等,這些重復(fù)的操作,如果使用VBA代碼的話,我們可以讓過程自動(dòng)化,為我們節(jié)省很多時(shí)間。VBA還可以進(jìn)行復(fù)雜的數(shù)據(jù)分析對比,以及使用VBA生成一些非常漂亮的、復(fù)雜的報(bào)表和圖表;除了這些,VBA還可以定制個(gè)性化用戶界面。
作為Excel來說,提供了一個(gè)固定的用戶界面,我們也可以借助VBA定制用戶界面。VBA并不是孤立的存在于Excel等某個(gè)軟件之中。VBA是集成在offic組件之中,在VBA中可以使office組件協(xié)同工作。VBA雖然不是專業(yè)的程序開發(fā)語言,但它也可以應(yīng)用于Excel的二次開發(fā),市面上也有不少商用的Excel應(yīng)用程序就是使用VBA開發(fā)出來的。
該企業(yè)工藝通知單一年大概1000張左右,對于專業(yè)的數(shù)據(jù)庫來說,這樣的數(shù)據(jù)量算非常小,沒必要選用專業(yè)數(shù)據(jù)庫,又考慮到這張通知單樣式企業(yè)已經(jīng)用了好幾年了,是用Excel2003做的,不想改變原來的樣式,所以索性決定用原來的樣式進(jìn)行加工設(shè)計(jì),讓操作者用起來不至于感到陌生,而且Excel的單張電子表格可以保存255×65536個(gè)單元格的數(shù)據(jù),完全可以滿足企業(yè)的需要,而且考慮到后期的數(shù)據(jù)維護(hù),Excel用戶操作很熟悉,數(shù)據(jù)備份也很簡單,直接拷貝一個(gè)文件就是備份,并且只要電腦里裝有微軟的OFFICE套裝軟件,程序就能運(yùn)行,方便攜帶和傳遞使用,可以說,基本的小型軟件開發(fā)選用EXCEL+VBA是非常不錯(cuò)的方案。
為了提高數(shù)據(jù)錄入的速度和有效性,針對通知單的各項(xiàng)數(shù)據(jù)進(jìn)行進(jìn)一步分析,制定完成任務(wù)的方法。
(1)產(chǎn)品編號。由于原來企業(yè)就有自己的產(chǎn)品編號規(guī)則:年+月+編號,如:201404001,這規(guī)則是當(dāng)年+當(dāng)月+當(dāng)月編號,這個(gè)編號是通知單的唯一編號,不允許重復(fù),如果是手工錄入的話很簡單,但會出現(xiàn)重復(fù)的情況,而且進(jìn)行數(shù)據(jù)查詢的時(shí)候也是要對這個(gè)數(shù)據(jù)進(jìn)行唯一檢索,為了提高錄入的效率和唯一性,決定進(jìn)行程序自動(dòng)編號。
(2)產(chǎn)品名稱。不是唯一性,用戶自由錄入。
(3)用戶單位。用戶可以自行錄入,但考慮到錄入的速度和名稱的一致性,決定設(shè)計(jì)程序?qū)σ郧颁浫氲挠脩裘Q進(jìn)行不重復(fù)模糊查詢供用戶選擇后快速錄入,也就是智能匹配。
(4)交貨時(shí)間、開單時(shí)間:利用Excel自帶的日歷控件供用戶選擇,但交貨這個(gè)時(shí)間只需要月和日,所以必須對日歷進(jìn)行格式化,去掉年,格式化程序代碼為:Format(Calendar1.Value,“m月d日”)。
(5)薄膜種類、類型、制表人、接件、審核。這幾個(gè)項(xiàng)目會根據(jù)企業(yè)調(diào)整進(jìn)行增減,考慮制作一個(gè)字典表格,供操作者自己進(jìn)行維護(hù),然后用Excel自帶的有效性進(jìn)行匹配選擇。
(6)印刷色系和工藝流程。這兩個(gè)項(xiàng)目的內(nèi)容是固定的,不同的是每個(gè)產(chǎn)品的項(xiàng)目有多有少,所以考慮設(shè)計(jì)窗體供用戶根據(jù)實(shí)際情況進(jìn)行選擇。這樣的好處是用戶可以快速的進(jìn)行錄入,而且保持內(nèi)容的一致性。
(7)其他項(xiàng)目。其他項(xiàng)目基本都是由用戶自行根據(jù)情況錄入。
(8)查詢。數(shù)據(jù)管理最重要的一個(gè)環(huán)節(jié)就是可以進(jìn)行數(shù)據(jù)的查詢,對以前的數(shù)據(jù)進(jìn)行快速的數(shù)據(jù)檢索,把用戶需要的數(shù)據(jù)查詢并顯示出來。在本程序中,設(shè)計(jì)了一個(gè)單獨(dú)的查詢窗體,用戶可以選擇查詢的項(xiàng)目,并錄入查詢的關(guān)鍵字就可以以列表的方式把需要的記錄顯示出來,然后在列表數(shù)據(jù)中雙擊任意一條記錄,就可以把數(shù)據(jù)完整的顯示在通知單中,供用戶進(jìn)行再次使用。
(9)打印。通知單數(shù)據(jù)錄入好以后或者需要的數(shù)據(jù)查找出來以后,就可以進(jìn)行打印區(qū)域的設(shè)置并打印輸出了。
要進(jìn)行VBA代碼的編寫,首先要進(jìn)入代碼編寫平臺,這個(gè)平臺是Excel自帶的,進(jìn)入的方法是單擊“工具”→“宏”→“Visual Basic編輯器”,這個(gè)平臺俗稱VBE編輯平臺。
由于篇幅原因,代碼省略。
程序調(diào)試完成后,最后的工作是進(jìn)行數(shù)據(jù)的保護(hù)。為了不讓用戶對表格和一些數(shù)據(jù)進(jìn)行更改,需要對程序進(jìn)行一些基本的保護(hù)。比如單元格的鎖定,能否選定,能否編輯等等,還有一些表格是不需要用戶看見的,可以隱藏等設(shè)置都需要開發(fā)者進(jìn)行設(shè)置。另外,為防止用戶對代碼進(jìn)行改動(dòng),需要對代碼也進(jìn)行密碼保護(hù),只有提供密碼,才能對VBA代碼進(jìn)行編輯。
Excel的確是一個(gè)數(shù)據(jù)處理的好工具,但隨著數(shù)據(jù)需求的不斷變化,簡單的單元格、函數(shù)處理根本不能滿足需求,對于一般的小型管理軟件,不編寫程序是達(dá)不到要求的,幸好微軟的開發(fā)人員考慮到了這個(gè)問題,捆綁了VBE平臺,只要肯學(xué)習(xí),多做實(shí)例,很快就能駕馭這個(gè)工具,為我們的工作需要服務(wù)。筆者就是通過網(wǎng)上的論壇進(jìn)行學(xué)習(xí)的,搞不通的地方就發(fā)個(gè)貼,很多高手會很熱情的幫助解決。通過這個(gè)程序的設(shè)計(jì),學(xué)到了很多知識,也對EXCEL下VBA代碼有了更深一步的掌握。但是程序設(shè)計(jì)的過程當(dāng)中也發(fā)現(xiàn)了一些用Excel進(jìn)行程序開發(fā)的不足,例如:沒有控件數(shù)組,在有多個(gè)相同控件的時(shí)候代碼很多,不能用數(shù)組處理;文件的保存問題,由于代碼和數(shù)據(jù)庫是在同一個(gè)文件中,如果程序非正常關(guān)閉,一切數(shù)據(jù)都會丟失等問題,但總的來說,Excel+VBA的方式已經(jīng)可以幫助我們進(jìn)行簡單的程序設(shè)計(jì)和開放,對于一般用戶已經(jīng)足夠了。
[1]網(wǎng)絡(luò)論壇www.excelhome.net.
[2]Excelhome團(tuán)隊(duì).《Excel應(yīng)用大全》.人民郵電出版社,2012,02.
[3]Excelhome團(tuán)隊(duì).ExcelVBA實(shí)戰(zhàn)技巧精粹(修訂版).人民郵電出版社,2013,01.
[4]羅剛君.ExcelVBA程序開發(fā)自學(xué)寶典(第2版).電子工業(yè)出版社,2011,08.
TP311.5
A
1004-7344(2016)08-0278-01
2016-2-22