滕曼葛
(昆明船舶設(shè)備試驗(yàn)研究中心人力資源處,云南昆明 650051)
隨著科技的信息化、智能化,如何提高檔案由紙質(zhì)模式向信息化模式轉(zhuǎn)變對檔案利用和檢索效率尤為重要[1]。
很多單位現(xiàn)階段的存儲方式為紙質(zhì)存儲,并將一年的所有檔案的文件名稱、文號、文件所在的卷號和件號按照其主管機(jī)關(guān)分類整理在不同的工作表內(nèi),每年的文件目錄形成一個Excel文件,在檔案利用時通過Excel電子目錄查詢檔案文件名中的關(guān)鍵字或檔案中文件的文號,得到該文件所在的卷號和件號,從而得到所查詢文件的具體位置。
因此,檢索軟件需具備以下幾個特點(diǎn)[2]:(1)不確定年份檢索。要求軟件在檢索過程中既可對某一特定年份進(jìn)行檢索,同時也可在某一具體年份范圍內(nèi)檢索,甚至在所有年份中遍歷檢索。(2)多種檢索條件結(jié)合進(jìn)行檢索。軟件使用時,可根據(jù)輸入的多個檢索條件綜合檢索,快速準(zhǔn)確確定所需文件。(3)輸出檔案文件的詳細(xì)信息,便于使用者對檔案進(jìn)行查找。(4)軟件需有較強(qiáng)的可拓展性。隨著檔案目錄的增加,軟件仍可有效地進(jìn)行檢索,且略經(jīng)修改后,還可應(yīng)用于其他類似的檢索過程。
根據(jù)上述軟件的需求分析,提出以下幾種檢索方法[3]:
(1)已知檔案所收錄的年份。1)按照確定的文號檢索。2)按照模糊的文號檢索。3)按照模糊的題名關(guān)鍵字檢索。4)按照責(zé)任者 +題名關(guān)鍵字檢索。5)按照準(zhǔn)確題名關(guān)鍵字進(jìn)行檢索。
(2)已知檔案收錄的年份范圍,按照如(1)所述組合進(jìn)行檢索。
(3)未知檔案收錄的年份和年份范圍,按照如(1)所述方法組合進(jìn)行檢索。具體檢索方式如圖1所示。
圖1 檢索軟件檢索方法流程圖
(1)VBA的內(nèi)部開發(fā)。所謂內(nèi)部開發(fā)是指使用Excel內(nèi)嵌的VBA[4]進(jìn)行開發(fā)。可以將 VBA看作是VB的一個子集,二者在數(shù)據(jù)定義、結(jié)構(gòu)設(shè)計、語法使用上均一致。
(2)COM(Component Object Model)插件開發(fā)。COM插件也叫COM加載項(xiàng),實(shí)際上是一個動態(tài)鏈接庫,可開發(fā)程序作為一個鏈接庫鏈接到一些程序中從而擴(kuò)展其功能。
(3)自動化服務(wù)開發(fā)。自動化使應(yīng)用程序能對另一個應(yīng)用程序中實(shí)現(xiàn)的對象進(jìn)行操作或是將對象公開以便可對其進(jìn)行操作。
在對檔案電子目錄檢索軟件進(jìn)行開發(fā)時,本文選用VBA內(nèi)部開發(fā)Excel,因VBA是一種面向?qū)ο蟮木幊陶Z言,Excel中的每一項(xiàng)均可被認(rèn)為是一個對象,VBA在對象操作上語法結(jié)構(gòu)具有簡潔明了的特點(diǎn),且其程序調(diào)試直觀方便,是編制檔案電子目錄檢索軟件理想的語言。
檢索軟件編制的基本元素即為Excel中的對象,通過對Excel中的對象的各類操作來完成檢索軟件的編制。Excel對象包括以下幾個方面[5]:
(1)Application對象:Application對象代表整個Microsoft Excel應(yīng)用程序本身,所有打開的工作薄都屬于一個Excel應(yīng)用程序本身,即一個Application對象。
(2)Workbook/Workbooks對象:代表一個Excel工作薄/Excel應(yīng)用程序中當(dāng)前打開的所有Workbook對象的集合,是Application對象的下一個層次。
(3)Worksheet/Worksheets對象:代表一個 Excel工作表/Excel應(yīng)用程序中當(dāng)前打開的所有Worksheet對象的集合,是 Workbook/Workbooks對象的下一個層次。
本文就未知檔案所在的年份與年份范圍一例,對軟件的實(shí)現(xiàn)流程予以說明,流程圖如圖2所示。
2.3.1 提高檢索效率
在以責(zé)任者+題名關(guān)鍵字這種方式進(jìn)行檢索時,作者采用以下方式提高檢索效率,將工作薄中責(zé)任者相同的電子目錄儲存在同一個工作表內(nèi),將工作表命名為責(zé)任者的名稱,在該條件檢索時,程序首先判斷工作表的名稱是否包含輸入的責(zé)任者的名稱,若工作表的名稱與輸入的責(zé)任者吻合,那就在該工作表內(nèi)進(jìn)行下一步搜索[6]。其核心代碼如下:
圖2 未知年份與年份范圍時軟件檢索過程流程圖
但若檢索時并未輸入責(zé)任者信息,軟件按照上述代碼運(yùn)行勢必會出現(xiàn)無法檢索的情況。因此,本文在進(jìn)行電子目錄的制作時,首先將該年份的所有目錄集中在一個工作表中,并將此工作表命名為“總的歸檔目錄”,在檢索開始時,程序首先判斷是否輸入了“責(zé)任者”這一檢索條件,若未輸入,則所有檢索工作都在“總的歸檔目錄”的工作表內(nèi)進(jìn)行。核心代碼如下所示,其中 searchword6、searchword3、searchword4 分別為題名關(guān)鍵字、責(zé)任者、文號所對應(yīng)的檢索輸入項(xiàng)。
以上方法的實(shí)施提高了檢索軟件的檢索效率,避免重復(fù)檢索。
2.3.2 跨年份搜索
從上文中可以看出,無論是已知年份范圍的檔案檢索還是未知年份和范圍地檢索,跨年份搜索是一個必須要解決的關(guān)鍵問題,在技術(shù)上體現(xiàn)為必須準(zhǔn)確快速地打開幾個或所有工作薄,并對其中某一檢索條件在打開的工作薄中實(shí)現(xiàn)遍歷檢索。
本文所采取的方法為將本單位所產(chǎn)生的所有年份電子目錄的工作薄統(tǒng)一命名為“XXXX年歸檔文件目錄.xlsx”并存儲在一個文件夾內(nèi),在檢索開始之前,程序自動打開該文件夾[7]。
在已知年份范圍時,將年份范圍的上極限所在的工作薄作為循環(huán)初值,隨著循環(huán)次數(shù)的增多,依次打開各年份范圍內(nèi)的文件進(jìn)行查找,其核心代碼如下,其中searchword2代表輸入的年份范圍例“2000~2004”。
當(dāng)未知年份和年份范圍時,需要對所有年份的工作薄進(jìn)行遍歷搜索,所以需要將目標(biāo)文件夾內(nèi)所有年份的工作薄都存儲在一個字符型數(shù)組中,每個工作薄的文件名稱即為數(shù)組中的一個元素。其核心代碼如下
針對電子目錄檢索的兩種方法對跨年份檢索采取了針對性的做法,事實(shí)證明,這兩種方法的使用可以大幅提高軟件的檢索效率。
2.3.3 全部年份檢索時分組檢索
通過前期調(diào)查可知,這種情況下檢索出的結(jié)果一般均聚集在近幾年,本文采用以每5年為一組進(jìn)行檢索,近5年的一組檢索完成后,使用者通過軟件顯示區(qū)內(nèi)容判斷是否進(jìn)行前一個5年的檢索,這一檢索過程中的難點(diǎn)和關(guān)鍵點(diǎn)在于如何實(shí)現(xiàn)人機(jī)互動。
在解決這一問題時,本文將目標(biāo)文件夾中所有電子目錄工作薄的數(shù)目整除5,得到一個整數(shù),代表這個整數(shù)循環(huán)變量的初值z設(shè)置為1,則每個工作薄在目標(biāo)文件夾中的地址就變?yōu)閕=(5×(z-1)+1)To(5×z),z值的增加即代表組數(shù)的增加,當(dāng)?shù)趜組檢索完成時,需要由使用者判斷是否進(jìn)行前一個5年的檢索[8],其核心代碼如下
在運(yùn)用上述方式解決問題時,便會出現(xiàn)一個現(xiàn)象,若使用者選擇不再進(jìn)行下一組檢索,但當(dāng)其了解顯示區(qū)的內(nèi)容后,發(fā)現(xiàn)并沒有符合條件的輸出選項(xiàng),使用者便需再次進(jìn)行檢索,但按照上述代碼可知,程序自動從第一組進(jìn)行檢索,這種情況大幅降低了軟件的智能性。因此,在程序編制時,每一組檢索完成后,將此時程序中的組號(即z值)賦值給一個中間變量h,并在程序界面上設(shè)置一個“繼續(xù)檢索”按鈕,使用者遇到上述情況時,點(diǎn)擊“繼續(xù)檢索”,此時組號z=h+1,將此組號帶入循環(huán)繼續(xù)檢索,則此時軟件便不會重復(fù)檢索,其核心代碼如下
2.3.4 軟件的可拓展性
隨著年份的增加,檔案的電子目錄也在不斷增加,并要求檢索軟件在進(jìn)行小范圍的修改后,可準(zhǔn)確有效地應(yīng)用于其他電子目錄的檢索過程。因此,軟件需要具有較強(qiáng)的可拓展性,在編制該軟件時,需盡量使程序中的變量在目標(biāo)文件夾中獲取工作薄和工作表的具體信息[9];程序中盡量弱化電子目錄本身的特征,電子目錄需運(yùn)算的內(nèi)容盡量賦值給中間變量,這樣可保證該軟件應(yīng)用于其他形式的電子表格時,只需修改程序中的少部分內(nèi)容。
為了使用便利,該軟件還包括軟件使用說明區(qū)域、保存檢索結(jié)果功能等其他部分[10],軟件界面如圖3所示。
圖3 檔案電子目錄檢索軟件界面圖
在充分考慮需求分析的基礎(chǔ)上,確定了檢索軟件的檢索流程,并在比較分析Excel開發(fā)方法的基礎(chǔ)上,選用VBA語言對檢索軟件進(jìn)行開發(fā),在開發(fā)過程中解決了多檢索條件同時檢索、跨年份檢索、全部年份檢索時的人機(jī)互動、軟件可拓展性等關(guān)鍵問題。此外,還完成了檔案電子目錄檢索軟件的編制。該目錄檢索軟件提高了檔案電子目錄檢索效率,減少了人工操作的步驟和時間,多重檢索條件同時檢索提高了檢索的準(zhǔn)確率,并可將某一項(xiàng)目在一定時間范圍內(nèi)的所有文件名稱羅列在同一顯示區(qū)上,有利于分析各項(xiàng)目的進(jìn)行情況和時間節(jié)點(diǎn),為檔案的管理與利用提供了便利。但本軟件仍有需要改進(jìn)之處,例如在保密形式嚴(yán)峻的情況下軟件的安全性問題等,是需要進(jìn)一步研究的問題。
[1]涂志蘭.企業(yè)檔案工作發(fā)展的前景[J].貴州電力技術(shù),2011,14(4):90.
[2]蒙繼承.電子檔案利用與紙質(zhì)檔案利用的需求比較探討[J].職業(yè)圈,2007(8):188 -189.
[3]周楓.論檔案檢索語言在電子檔案管理中的應(yīng)用[J].卷宗,2013(6):16-17.
[4]布倫格林.Excel專業(yè)開發(fā)[M].北京:電子工業(yè)出版社,2007.
[5]羅剛君.Excel VBA程序開發(fā)自學(xué)寶典[M].北京:電子工業(yè)出版社,2009.
[6]陳維.基于VBA的庫存管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].廣東農(nóng)工商職業(yè)技術(shù)學(xué)院學(xué)報,2010,26(2):83-85.
[7]張江,李佩.基于VBA的數(shù)據(jù)查詢優(yōu)化方案[J].數(shù)據(jù)庫與信息管理,2012(16):63-65.
[8]韓小良.最新Excel VBA使用范例大辭典[M].北京:中國鐵道出版社,2012.
[9]顧士學(xué).基于Excel2003VBA成績分析模板的設(shè)計與實(shí)現(xiàn)[J].白城師范學(xué)院學(xué)報,2011,25(3):51 -53.
[10]神龍工作室.Excel高效辦公-VBA范例應(yīng)用[M].北京:人民郵電出版社,2006.