1. 程式人生 > >使用Excel2010條碼控制元件碰到的問題及解決辦法

使用Excel2010條碼控制元件碰到的問題及解決辦法

iamlaosong

在使用Excel條碼過程中碰到幾個難以解決的問題,有的問題又因為沒有及時發現導致浪費了很多時間和耗材,使用者意見也很大。這些問題出現的原因是什麼,目前還不知道,所以解決辦法也只是一些變通的辦法。本文最後有條碼使用工具下載連結,可以檢視原始碼學習。現將問題及解決辦法總結如下:

1、條碼寬度和資料顯示問題

條碼下方可以顯示資料(ShowData=1),當資料字串較長時,code39條碼比較寬,顯示沒什麼問題,控制元件大小和條碼大小比較一致,就是條碼太寬了,掃描不方便。code128條碼採用壓縮編碼,寬度比較窄,掃描方便。實際使用時,控制元件佔用的寬度比較大,實際的條碼要小得多,這還沒什麼,關鍵是下方的資料寬度大於條碼寬度,而且資料顯示不全,前面給截掉了。測試發現,19位以下,顯示沒有問題。長度達到20位的時候,只能顯示19位,達到30位的時候顯示27位。在沒有找到解決辦法之前,只好不顯示資料,再在下方新增一個文字框顯示資料。如下圖,中間的數字就是條碼自帶的,code128顯示不全;code39則沒有問題:

code128

code39

2、批量列印自動更新問題

批量列印時條碼需要跟隨單元格中的資料變化才對,使用中發現單元格資料變化後條碼沒有變化,或者重新整理後(ActiveSheet.BarCodeCtrl1.Refresh)表面上看也變化了,只是列印的時候沒有變化。列印時螢幕上顯示的條碼倒是在變,但打印出來的條碼都是同一個條碼。解決辦法是改變控制元件大小,比如高度,如下:

    ActiveSheet.BarCodeCtrl1.Height = ActiveSheet.BarCodeCtrl1.Height + 1
    ActiveSheet.BarCodeCtrl1.Height = ActiveSheet.BarCodeCtrl1.Height - 1

條碼應用效果,可以自動更新。

3、條碼越來越小的問題

採用上面的方法解決了條碼不能自動更新的問題,測試也沒問題,但客戶使用的時候發現,資料量很大的時候,執行到後來發現條碼高度越來越小,最後就是0了,然後就報錯了,似乎那個高度加1沒起作用,一直在減1,同樣的資料我測試卻沒有發現問題,難道是我的電腦太老了!問題出得莫名其妙,解決辦法就是增加冗餘,每次更新高度前重新設定一下高度,這樣問題倒是沒有再出現:

    ActiveSheet.BarCodeCtrl1.Style = 7
    ActiveSheet.BarCodeCtrl1.Height = 24.75
    ActiveSheet.BarCodeCtrl1.Width = 323.25
    ActiveSheet.BarCodeCtrl1.Height = ActiveSheet.BarCodeCtrl1.Height + 1
    ActiveSheet.BarCodeCtrl1.Height = ActiveSheet.BarCodeCtrl1.Height - 1
    ActiveSheet.BarCodeCtrl1.Refresh

4、列印速度
這個問題實際上和條碼關係不大。對賬單的列印是生成一張列印一張,所以每張單據都要傳送列印命令(ActiveSheet.PrintOut),因此,電腦和印表機握手就會佔用很多時間,大批量列印時,速度就會讓人難以忍受,好在2010版Excel可以直接將列印結果輸出為PDF檔案,然後將這些單個的PDF檔案合併後列印,速度就大大提高了。參見:解決Excel中VBA批量列印速度慢的問題


本文使用的條碼列印工具下載:中行對賬單列印工具