資源描述:
《在EXCEL使用CODE128宋體實(shí)現(xiàn)掃描》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、在EXCEL使用CODE128宋體實(shí)現(xiàn)可掃描在公司設(shè)計(jì)一個(gè)標(biāo)簽中,有點(diǎn)復(fù)雜,需要用到數(shù)據(jù)庫(kù)中的數(shù)據(jù),還需有一些比較復(fù)雜的算法,所以就用EXCEL來(lái)實(shí)現(xiàn)打印標(biāo)簽了。開(kāi)始我們是用39碼字體來(lái)實(shí)現(xiàn)。39碼好做啊,加*號(hào)就行了,可是后來(lái)我們的號(hào)有了空格,39碼就做不了啦。只能換CODE128碼來(lái)做。于是就用了BarCode控件來(lái)實(shí)現(xiàn)。我們的標(biāo)簽上有8個(gè)不同的條碼,于是加控件,改控件,開(kāi)始打印。好吧,問(wèn)題來(lái)了,條碼不能刷新啊,每次打印都是上一次的條碼。于是上了萬(wàn)能的*度(此處涉及廣告用*代替^O^),找到方法。下面是一位大師貢
2、獻(xiàn)出來(lái)的,謝謝這位大師的代碼。PrivateSubWorksheet_Change(ByValTargetAsRange)ForEachbarcodeInActiveSheet.OLEObjectsIfLCase(barcode.name)Like"barcodectrl*"ThenWithbarcodem=.Height.Height=m-1.Height=mEndWithEndIfNextEndSubOK,刷新問(wèn)題解決,感覺(jué)大功告成,于是發(fā)到現(xiàn)場(chǎng)去做了。誰(shuí)知道,這才是麻煩的開(kāi)始。因?yàn)槲覀兪谴笈康拇蛴?biāo)簽,要求速
3、度快。這個(gè)標(biāo)簽每打印一張要刷新一次,所以有些慢,再說(shuō)有8條BarCode控件要刷新,再說(shuō)EXCEL計(jì)算本來(lái)就不強(qiáng),所以每打印1張10*8cm的標(biāo)簽有時(shí)要3-4秒。這真受不了。這不行,總得想辦法啊,再上萬(wàn)能的*度,說(shuō)是用TBarCode控件,條碼能自動(dòng)刷新。于是我再改吧。試用,真的可以刷新,可是你這個(gè)是什么爛條碼,每張條碼都有Demo印,好吧,誰(shuí)讓我沒(méi)買(mǎi)授呢,我忍了。因?yàn)槭桥看蛴。覀冇行l碼是固定的,有些是每一張都要變化的。問(wèn)題是有些機(jī)器能每張都刷新,有些機(jī)子不能(多臺(tái)機(jī)器都需打印),查了設(shè)置都是一樣的啊,暈!甚至
4、有些改了些設(shè)置能自動(dòng)刷新了,關(guān)了文件打開(kāi)后又不能刷新了,而且打印多了也會(huì)變得很慢。這又搞大了,心里在罵“??℅????℅?”,此處省略200句。好吧,路總得走啊,因?yàn)楦袷揭汛_定了,并已讓客戶(hù)確認(rèn)了,總不能跟客戶(hù)說(shuō)“臣妾做不到啊”吧,于是想之前用39碼字體是可行的,那我們就用Code128字體吧,其實(shí)之前也用過(guò)??墒谴蠹叶贾腊?,直接用Code128字體打印出來(lái)的是掃描不出來(lái)的。于是,還是*度吧,于是就放大招了,學(xué)習(xí)Code128字體的編碼規(guī)則,Code128條形碼編碼規(guī)范。并且打了Code128字體條碼和Code12
5、8條形碼進(jìn)行了對(duì)比。發(fā)現(xiàn)了其中的奧秘。原來(lái)Code128條形碼中間部份與Code128字體條碼是一樣的。各位看官,重點(diǎn)來(lái)了,上面的嘮嘮叨叨只是為的以下的重點(diǎn)^O^.1、Code128條形碼,由開(kāi)始符(位)+數(shù)據(jù)符(位)+較驗(yàn)符(位)+結(jié)束符(位)組成。所以我們直接把數(shù)據(jù)變成Code128字體,就會(huì)少了開(kāi)始符(位)、較驗(yàn)符(位)、結(jié)束符(位),所以條碼槍當(dāng)然是讀不出的。所以我們就得用公式為數(shù)據(jù)加上這些符(位),比如你想打把123456的條碼字體打出來(lái)的條碼能掃描,就得。開(kāi)始符(位)+123456+較驗(yàn)符(位)+結(jié)束符(
6、位)。2、開(kāi)始符(位)、結(jié)束符(位)是比較好辦的,你可以到字體中去找到相應(yīng)的字符??赡茉O(shè)計(jì)的字體會(huì)有差別,我下載到的字體開(kāi)始符為“ì”,結(jié)束符為“?”。3、較驗(yàn)符(位),這個(gè)是最難搞的,需要對(duì)碼,算碼。有些說(shuō)明說(shuō)是可以自行選擇加不加較驗(yàn)符,但本人還不知道不加較驗(yàn)符是要怎么處理。找不到相應(yīng)的說(shuō)明。首先計(jì)算較驗(yàn)符的ID值,公式為:(開(kāi)始符ID值+第1位數(shù)據(jù)符*1+第2位數(shù)據(jù)符*2+……第N位數(shù)據(jù)符*N)%103,這個(gè)%是求余數(shù)。以123為例,ID=(104+1*1+2*2+3*3)%103=15用ID值查對(duì)應(yīng)表得出較驗(yàn)符
7、的值。ID15對(duì)應(yīng)的是“/”。4、組碼,數(shù)據(jù)123就應(yīng)該輸出的ì123/?。這樣的條碼掃描槍就能掃了??炜煸囈幌掳伞?、在EXCEL進(jìn)行公式運(yùn)算中,你如果用MID函數(shù)來(lái)取值,再用VLOOKUP來(lái)查找的話,就要注意了,因?yàn)橛肕ID函數(shù)取的值不是真正數(shù)據(jù)的實(shí)值,需要這樣用,如MID(G2,2,1)/1,但如果是字母的話,這個(gè)公式又得會(huì)出錯(cuò)。怎么辦,我用了IFERROR函數(shù),也就是出錯(cuò)的時(shí)候返回MID(G2,2,1)的值。另MID(G2,2,1)的值是不區(qū)分大小寫(xiě)的,這也是頭大的事,如果你要區(qū)分的話,那又得加其他的函數(shù)。C
8、ODE128編碼表ValueCodeACodeBCodeCValue0SP001!!112""223##334$$445%%556&&667''778((889))9910**101011++111112,,121213--131314..141415//151516001616171117171822181819331919204420202