Excel自动生成条码工具

如果需要在Excel制作条码,大家一般会想到Microsoft Barcode控件,但是这个控件使用起来并不是很方便。其实不少网站都可以产生条码,利用Excel中的选择性粘贴可以轻松实现在工作表中插入条码图片。
示例代码如下:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim objDO As Object
    Dim objPic As Object
    Dim strHTML As String
    Application.EnableEvents = False
    With Target
        If .Count = 1 Then
            If Len(.Value) > 0 And .Column = 1 Then
                Set objDO = New MSForms.DataObject
                strHTML = "<html><img src=""http://apps.99wed.com/360app/barcode/barcode.php?codebar=BCGcode128&text="
                strHTML = strHTML & .Value & "&resolution=5&thickness=30"" > " & Chr(10)
                Debug.Print strHTML
                With .Offset(0, 1)
                    .Select
                    objDO.SetText strHTML
                    objDO.PutInClipboard
                    ActiveSheet.PasteSpecial Format:="Unicode 文本", Link:=False, DisplayAsIcon:=False
                    Set objPic = Selection
                    .ColumnWidth = objPic.Width / 6.8
                    .RowHeight = objPic.Height
                End With
            End If
        End If
    End With
    Set objDO = Nothing
    Set objPic = Nothing
    Application.EnableEvents = True
End Sub

【代码解析】
第5行代码禁止系统事件激活,避免重复激活可能引起的死循环。
第7行代码判断发现变化的单元格是否为单个单元格。
第8行代码判断如果发现变化的单元格在第一列,并且单元格内容为非空,那么执行后续操作。
第9行创建DataObject对象。
第10~11行代码创建HTML代码,调整其中的codebar、resolution和thickness参数值可以获得不同类型和风格的条码。
第14行代码选择右侧单元格。
第16行代码将HTML代码放置到剪贴板。
第17行代码进行选择性粘贴。
第19~20行代码设置行高和列宽。
第25~26行代码是否对象变量占用的系统资源。
第27行代码恢复系统事件的机制。


在示例工作表第1列输入条码数字,在第二列将自动产生条码,如下图所示。

在这里插入图片描述

发布了107 篇原创文章 · 获赞 49 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/taller_2000/article/details/104352353