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