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