使用Excel2010条码控件碰到的问题及解决办法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iamlaosong/article/details/83861725

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批量打印速度慢的问题


本文使用的条码打印工具下载:中行对账单打印工具

猜你喜欢

转载自blog.csdn.net/iamlaosong/article/details/83861725