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