ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 638|回复: 21

[求助] vba实现二维码code-128码和code-39码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-12-8 11:27 | 显示全部楼层 |阅读模式
本帖最后由 林程乐 于 2024-12-10 15:50 编辑

这是从网上搜索来的放在一起。vba实现二维码code-128码和code-39码,里面没有api函数所以兼容64位和32位excel。代码简洁,清楚。运行速度快。就是生成的不是图片格式的。那位高手有能力将其转生成成图片。也改成批量生成。分享给大家。

改好了。安照高手liu0wei2008的思路加入了字典收集线条。后复制成图片。失去了X.Y坐标。用选择单元格来实现批量生成。等下上传附件。各位看看有什么要改进的地方,耗时一天半。本人vba只学了一点点。上传了附件,在17楼。
微信图片_20241208111625.png

code-128和code-39.zip

38.41 KB, 下载次数: 34

TA的精华主题

TA的得分主题

发表于 2024-12-8 19:05 | 显示全部楼层
循环给你调试好了
Sub test128()
    Set ws = ThisWorkbook.ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    Call 清除
    For i = 1 To lastRow
    Call Code128Generate(52, 18 * (i - 1) + 2, 14, 2, ThisWorkbook.Sheets(1), Range("a" & i).Text)
    Next i
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-9 09:09 | 显示全部楼层
wcj6376tcp 发表于 2024-12-8 19:05
循环给你调试好了
Sub test128()
    Set ws = ThisWorkbook.ActiveSheet

感谢wcj6376tcp老师的代码,批量生成可以了,成生的不是一张图片的格式,生成的是一条一条的线条。我找到了不少api函数,改成图片没有成功。等下我上传一些api函数附件。请请参考一下,看看有什么办法。改成整张图片。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-9 09:18 | 显示全部楼层
各位老师。这是收集的一些api函数。兼容64位和32位提供参考。

一些api函数提供参考.zip

1.59 KB, 下载次数: 7

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-9 11:27 | 显示全部楼层
林程乐 发表于 2024-12-9 09:18
各位老师。这是收集的一些api函数。兼容64位和32位提供参考。

我试过将这几句代码加到最后,但不知道如何加,没有加成功。
微信图片_20241209112451.png

TA的精华主题

TA的得分主题

发表于 2024-12-9 12:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
林程乐 发表于 2024-12-9 11:27
我试过将这几句代码加到最后,但不知道如何加,没有加成功。

条形码是很多线条组合成的,无法复制图形

TA的精华主题

TA的得分主题

发表于 2024-12-9 12:07 | 显示全部楼层
只能看哪位大师能否采取截图区域另存为图片看看得行不

TA的精华主题

TA的得分主题

发表于 2024-12-9 15:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Dim arr As Object
  2. Set arr = CreateObject("scripting.dictionary")
  3. For i = 1 To Len(ContentString)
  4.     Select Case Mid(ContentString, i, 1)
  5.     Case 0
  6.         CurBar = CurBar + 1
  7.     Case 1
  8.         CurBar = CurBar + 1
  9. ' (CurBar * LineWeight) * [B]0.9[/B] -  here is 10% overlapping :-)
  10.         With TargetSheet.Shapes.AddLine(X + (CurBar * LineWeight) * 0.9, Y, X + (CurBar * LineWeight) * 0.9, (Y + Height)).Line
  11.         .Weight = LineWeight
  12.         .ForeColor.RGB = vbBlack ' my Excel writes light-blue lines by default, so the color is forcibly switched
  13.         arr(.Parent.Name) = .Parent.Name
  14.         End With
  15.     End Select
  16. Next i
  17. all = arr.items
  18. For i = 0 To arr.Count - 1
  19.     ActiveSheet.Shapes(all(i)).Select Replace:=False
  20. Next
  21. With Selection.ShapeRange.Group
  22.     .Select
  23.     ActiveSheet.Shapes(Selection.Name).SaveAsPicture "D:\\桌面\" + Selection.Name + ".png"
  24. End With
复制代码

循环什么的你来加吧,路径自己改下,代码放到CurBar = 0这句后面,这是Code128的

TA的精华主题

TA的得分主题

发表于 2024-12-9 19:19 | 显示全部楼层
liu0wei2008 发表于 2024-12-9 15:02
循环什么的你来加吧,路径自己改下,代码放到CurBar = 0这句后面,这是Code128的

现在 pic.tpye=6  是msoGroup了  ActiveSheet.Shapes(Selection.Name).SaveAsPicture "D:\\桌面\" + Selection.Name + ".png" 这句无法执行SaveAsPicture

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-9 22:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
liu0wei2008 发表于 2024-12-9 15:02
循环什么的你来加吧,路径自己改下,代码放到CurBar = 0这句后面,这是Code128的

您好,卡在这一句ActiveSheet.Shapes(Selection.Name).SaveAsPicture "D:\\桌面\" + Selection.Name + ".png"
没有运行下去。看网上代码他们的思路是Dim grp As Variant   Set grp = ActiveSheet.Shapes.Range(shapeArr).Group将所有形状分组到一个单元中然后,grp.copy复制。然后选择活动工作表Worksheet.Select用这句复制成矢量图到单元格中Worksheet.PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False然后再删除grp.Delete。但是shapeArr需要生成各条形状的名称,不知道如何搞了。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-25 15:27 , Processed in 0.035210 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表