▎具體需求
根據A列信息,批量生成二維碼或者條形碼。
▎思路分析
我們這里使用Excel自帶的二維碼條形碼控件搭配VBA,實(shí)現批量生成的效果。
▎具體步驟
①由于二維碼控件不是默認控件,需要單獨找到添加。我們在開(kāi)發(fā)工具中,找插入控件,選擇【其他控件】 。
②找到我們需要的二維碼條形碼控件。點(diǎn)擊,添加到表格中。繪制控件的時(shí)候,位置可以隨意放置,因為后面批量生成的時(shí)候,代碼還會(huì )對控件的位置重新布置。
③將以下代碼放到模塊中。
注意:生成二維碼和條形碼使用的都是這一個(gè)控件,只是通過(guò)其中一個(gè)參數Object.Style ,來(lái)控制生成的樣式。
Sub 批量生成二維碼() Dim k As Long, i As Long Call 清除 k = ActiveSheet.Range("A65536").End(xlUp).Row For i = 1 To k With ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1") '新增控件 '控件的屬性 .Left = ActiveSheet.Cells(i, 1).Width + 2 .Top = ActiveSheet.Cells(i, 1).Top + 2 .Width = 50 .Height = 50 '鏈接的參數單元格 .Object.Style = 11 '二維碼 .Object.ShowData = 1 .LinkedCell = "A" & i End With NextEnd Sub
Sub 批量生成條形碼() Dim k As Long, i As Long Call 清除 k = ActiveSheet.Range("A65536").End(xlUp).Row For i = 1 To k With ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1") '新增控件 '控件的屬性 .Left = ActiveSheet.Cells(i, 1).Width + 2 .Top = ActiveSheet.Cells(i, 1).Top + 2 .Width = 150 .Height = 50 '鏈接的參數單元格 .Object.Style = 7 '條碼 .Object.ShowData = 1 .LinkedCell = "A" & i End With NextEnd SubSub 清除() Dim pic As Shape With Sheet1 For Each pic In .Shapes If pic.Type = 12 Then pic.Delete '刪除sheet1中所有二維碼圖片 Next pic End WithEnd SubSub 導出二維碼條形碼() Dim ad$, m&, mc$, shp As Shape Dim nm$, n&, myFolder$ n = 0 myFolder = ThisWorkbook.Path & "\二維碼圖片\" '指定文件夾名稱(chēng) For Each shp In ActiveSheet.Shapes If shp.Type = 12 Then If Len(Dir(myFolder, vbDirectory)) = 0 Then MkDir myFolder End If n = n + 1 m = shp.TopLeftCell.Row mc = Cells(m, 1)' If code_name = "" Then nm = mc & ".jpg" '圖形對象的名字' Else' nm = ActiveSheet.Cells(m, code_name) & ".jpg"' End If shp.CopyPicture '將圖形對象復制到剪切板 With ActiveSheet.ChartObjects.Add(0, 0, shp.Width, shp.Height).Chart '在工作表中添加一個(gè)圖表對象 .Parent.Select .Paste '代碼將剪切板中的圖形對象以圖片的格式粘貼到新添加的圖表中 .Export myFolder & nm .Parent.Delete '刪除工作表中添加的圖表對象 End With End If NextEnd Sub▎效果
批量生成二維碼或條形碼
導出二維碼或條形碼

聯(lián)系客服