ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ivccav

[原创] VBA 二维码、条形码的批量生成与识别技术

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2021-3-19 09:45 | 显示全部楼层
zpy2 发表于 2021-3-18 14:01
解码效果如何?都能借出来吗?

您好!
针对您提出来的问题,经我再进一步测试后,结果如下:
1、对于标准的QRCode、DATA_MATRIX、Code128等图像文件,100%识别。这里说的标准图像,是指除了纯黑色的二维码图像外,图像里没有其它多余的东西;
2、对于用ZXing制作的EAN条码,无法识别,可能是制作的参数有误;
3、对于从网上下载的QRCode、DATA_MATRIX、Code128、EAN等二维码图片,图片中除了二维码外还有其它图形干扰的,还有些二维码是歪的,识别率都很高(这一点出乎我的意料),只有少数无法识别。
4、至于其它类型的编码(二维码),我知道的不多,就无法一一测试了。

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-19 20:10 | 显示全部楼层
本帖最后由 ivccav 于 2021-3-19 20:15 编辑
wodewan 发表于 2021-3-18 21:32
ZXING  没问题的。。。。

WPS2019和Excel2007没有出现你动图中的Excel-T选项卡?是不支持Office 2007吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-19 20:41 | 显示全部楼层
vitrel 发表于 2021-3-19 09:34
朋友,您好!首先非常感谢您的帮忙!
其实应该算是老朋友了,上次的二维码DLL控件也是您帮忙制作的,
...


我对图片文件的各种格式都是小白,没有这方面的需求,也缺乏时间研究。

读取二进制文件用Open不清楚是否可行:
  1. Dim fn As Integer '文件号
  2.     Dim rawRGB() As Byte
  3.     fn = FreeFile
  4.     Open ThisWorkbook.path & "\test.png" For Binary As #fn
  5.     ReDim rawRGB(LOF(fn) - 1)
  6.     Get #fn, , rawRGB
  7.     Close #fn
复制代码


GetClipBoardData是API函数:
Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
可以参考剪贴板操作的帖子:http://club.excelhome.net/thread-1057488-1-1.html

Ado.Stream我也没有使用过,看到别人用于字符集转换或数据库图片存取的中介工具:
可参考:http://club.excelhome.net/thread-868093-1-1.html

  1. '读取

  2. ……
  3. stm.Open
  4. stm.Type = adTypeBinary
  5. stm.Write rs.Fields("照片")   '写进stream对象中
  6. stm.SaveToFile ThisWorkbook.path & "\test.png", adSaveCreateOverWrite  '由stream导出成文件
  7. Image1.Picture = LoadPicture(ThisWorkbook.path & "\test.png")
  8. stm.Close

  9. '写入

  10. Image1.Picture = LoadPicture("")
  11. stm.Open
  12. stm.Type = adTypeBinary
  13. stm.LoadFromFile ThisWorkbook.path & "\test.png" '文件写进stream
  14. rs.Fields(1).Value = stm.Read '写入数据库字段
  15. rs.Update
  16. stm.Close
复制代码



评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-3-19 22:30 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-3-20 01:55 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-3-20 14:32 | 显示全部楼层
ivccav 发表于 2021-3-19 20:10
WPS2019和Excel2007没有出现你动图中的Excel-T选项卡?是不支持Office 2007吗?

是的,EXCEL2007和2010之后的版本对Ribbon的功能区架构定义是不一样的,不过这个应该好解决判断版本导入不同的架构定义应该就行。更新了一个版本,你可以试试看(13楼),因为没有2007也没测试。
WPS我就不清楚了。。。
http://club.excelhome.net/forum. ... ;extra=#pid10635873

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-21 14:11 | 显示全部楼层
wodewan 发表于 2021-3-20 14:32
是的,EXCEL2007和2010之后的版本对Ribbon的功能区架构定义是不一样的,不过这个应该好解决判断版本导入 ...


感谢分享。你封装了之后,可以提供VBA调用的接口吗?

TA的精华主题

TA的得分主题

发表于 2021-6-9 11:52 | 显示全部楼层
楼主好和各位高手:
      我下载后,按使用说明第1,2步完成了
第3步:在Excel VBE界面引用zxing.interop.tlb
这一步怎么操作,请各位抽空帮指点一下(我的是win10操作系统,office2010)。
诚挚感谢您的帮助!!!

TA的精华主题

TA的得分主题

发表于 2021-6-9 11:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 bbs392003 于 2021-6-9 13:57 编辑


运行提示是这样的
1.jpg

TA的精华主题

TA的得分主题

发表于 2021-6-9 13:58 | 显示全部楼层
本帖最后由 vitrel 于 2021-6-9 17:06 编辑
bbs392003 发表于 2021-6-9 11:57
感觉很实用,感谢分享!!!
我在下载后,按操作说明,正确执行了第1,2步
第3步:在Excel VBE界面引用zx ...


VBE编辑器→工具→引用→勾选“port of the java based barcode scanning library for .net (java ZXing 29.07.2019 21:30:35)”
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-2 00:37 , Processed in 0.048409 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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