黃紹龍 蔣維
摘要:該文介紹了在Excel中使用身份證讀卡器連續(xù)讀人多個身份證號碼并舉例說明利用VBA查詢對應(yīng)的數(shù)據(jù)記錄后寫入信息的方法。
關(guān)鍵詞:身份證號;ActiveX控件;數(shù)組;讀卡器;VBA
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)14-0094-03
1背景
在日常生活中,凡是需要進(jìn)行身份驗證的場合大都需要使用公民的身份證,例如,出行乘坐交通工具需要實名制購票,居民每年繳納社保金等,辦理這些業(yè)務(wù)都需要提供身份證號。身份證號包含18位數(shù)字,位數(shù)較多,手工錄入效率較低且容易出錯。身份證讀卡器可快速、準(zhǔn)確地提取身份證的相關(guān)信息。讀取身份證號碼后可以實現(xiàn)查詢和寫入等多種操作,這樣就大大提高了工作效率,特別是在1人為其他多人代購車票或代繳費時效果更加明顯。本文模擬居民到銀行根據(jù)身份證號繳納社保金為例進(jìn)行說明。
2適用環(huán)境
2.1硬件環(huán)境
“華視CVR-100UC”身份證讀卡器,可實現(xiàn)信息的快速識別,支持XP-win7/8/10系統(tǒng)。
2.2軟件環(huán)境
Microsoft Excel 2016內(nèi)置的VBA(Visual Basic for Applica-tions),它是Visual Basic的一種宏語言,VBA專門用于Office的各應(yīng)用程序中,可以通過VBA編寫模塊來滿足特定的需要。
3身份證信息提取過程
3.1身份證讀卡器對于讀取信息的存儲
“華視CVR-100UC”身份證讀卡器每次成功讀取一個身份證就會發(fā)出提示音,并在本主機(jī)的“C:\IDCardPhoto”目錄下生成兩個文件,存儲當(dāng)前讀取的身份證信息,包括bmp格式照片文件和txt格式的身份證文本信息文件。讀取下一張身份證信息時,覆蓋之前存儲的bmp文件和txt文件。其中的txt文件的文件名是wz.txt,信息在一行上顯示,各個字段依次是:姓名,性別,名字,出生年月日,籍貫,身份證號碼。例如:張三,男,漢,19800810,河南省洛陽市,411023199005035548。
3.2身份證號的提取
現(xiàn)在需要把wz.txt中的身份證號提取出來。首先讀取文件中的全部信息到一個字符串變量中,由于不同的字段之間使用逗號間隔,可使用VBA中的Splitf)函數(shù)返回一個數(shù)組,其中包含基于逗號分隔符分割的各個字段的值。然后就可以讀取該數(shù)組身份證號字段值。SplitO函數(shù)語法是:split(expression,delim-iterl,其中,Expression是包含帶分隔符的字符串表達(dá)式,Delim-iter是字符串轉(zhuǎn)換為數(shù)組時使用的分隔符。
連續(xù)讀入的多個身份證號通過字符串連接符連接起來,中間用逗號分隔,以備將來依次寫入“客戶身份證號”對話框的文本框中。
3.3向文本框依次寫入身份證號信息
可接收的身份證號個數(shù)可以根據(jù)需要設(shè)定。插入用戶窗體,布局標(biāo)簽和文本框如圖1所示。先使用Split(1函數(shù)將存儲多個身份證號并以逗號分隔的字符串用數(shù)組進(jìn)行存儲。然后遍歷表單上的控件,若控件類型名是“TextBox”則依次向這些文本框中寫入各個身份證號。最后顯示用戶窗體和讀入的所有身份證號碼。
4應(yīng)用舉例
以模擬居民通過銀行繳納社保為例。在啟用宏的工作簿中,工作表Sheetl中包含身份證號、姓名和繳納金額3列,另外包含“接受讀卡器信息”和“寫入查詢表單”兩個ActiveX按鈕控件。如圖1所示,初始時“寫入查詢表單”按鈕未激活,只有點擊“接受讀卡器信息”按鈕后,即至少讀人1個身份證號碼后,“寫入查詢表單”按鈕才被激活,以免產(chǎn)生誤操作。身份證讀卡器每次成功讀取身份證信息后(也就是聽到“滴”的一聲提示音后),點擊“接受讀卡器信息”按鈕讀入下一個身份證號碼。這里設(shè)置最多讀取5個身份證號碼。點擊“寫入查詢表單”按鈕后,彈出如圖2所示的“客戶身份證號”對話框。點擊對話框中的“查詢”按鈕可對Sheetl中的記錄進(jìn)行檢索。若查詢項被命中,若繳費金額列不為空則提示已繳費,否則在圖3所示的繳費對話框中錄入繳費金額,并將繳費金額寫入Sheetl對應(yīng)列。
5結(jié)束語
本文介紹的vBA利用讀卡器連續(xù)讀取身份證號的查詢系統(tǒng)界面簡潔,操作簡單,可以方便地移植到其他相關(guān)系統(tǒng)應(yīng)用上。這種技術(shù)可以減輕操作人員的負(fù)擔(dān)并大幅度地提高工作效率,具有非常好的實踐意義。