ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] 跟条形码二维码死磕到底——VBA引用PHP开源项目批量生成条形码和二维码图文教程

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2017-9-17 13:53 | 显示全部楼层 |阅读模式
本帖最后由 huang1314wei 于 2017-9-17 14:13 编辑

前言:
     先说明一下,本贴不谈原理,仅仅是教程贴,针对小白一步一步教会你使用相关的功能,仅此而以!  如果你一定要我说一下原理,我只能概括的说:原理不变,还是通过VBA批量引用网站上生成的条形码图片,只不过这个网站不是别人的网站,而是你自己可以控制的,利用PHP环境在本地电脑上搭建的一个虚拟的网站而以。
第一步:配置PHP运行环境
       1、 要运行PHP代码,得有个服务器才行,如果你的电脑上已经有了PHP运行环境,比如你已经安装过EasyPHP、APPserv或者XAMPP等软件或者对PHP建站流程比较熟悉的,可以忽略这一步。为了简化配置流程,尽量让操作傻瓜化、简便化,今天推荐的是phpStudy这一款软件,软件大小40几MB,下载地址见图:

         1.JPG             
      
       2、下载的压缩包解压,点击 phpStudy2017Setup.exe  进行安装,安装的时候的第一个界面会让你选择软件的安装路径,默认是 C:\phpStudy 目录,我建议你把前面的C改成D,也就是把软件的安装目录改成 D:\phpStudy  改好了之后点击“是”即可,如图
        
          2.JPG
           

     3、安装完毕之后,打开界面如图:
     
         3.JPG
         
         这里非常重要,多次点击启动按钮,如果你的电脑上显示如上图那样,也就是Apache那里显示不是绿色的圆形而是红色的方形,说明你的电脑上默认端口80被占用,这个时候需要你更改phpStudy的默认端口,操作方法如下:点击界面的其它选项菜单--端口常规设置--把httpd端口由80端口改成8088端口
                    
      5.jpg       7.jpg

    4、最终改完端口之后,显示的是如下图所示,即表示phpStudy工作正常,可以运行PHP代码了,每次开启phpStudy之后,默认是非服务模式,为了保证代码顺利运行一定要把选项改成“系统服务”模式并应用
        
          8.JPG


第二步:复制PHP开源项目到www目录
      
        1、在barcode官网下载 barcodegen.1d-php5.v5.2.1.zip 版本,网址和链接见图片,嫌输入网址下载麻烦,点击此处下载=====>>点击百度盘下载
              
               9.JPG
        
        2、把下载的文件解压,把里面的文件(注意不是文件夹)解压出来,粘贴到 D:\phpStudy\PHPTutorial\WWW  目录下面,如果提示是否覆盖原文件请选择“是”替换目标当中的文件

               10.JPG
        
         3、最终  
D:\phpStudy\PHPTutorial\WWW  下面所有文件结构如图:
         
             11.JPG
      
         4、以上步骤都做完了之后,现在是检验成果的时候,打开浏览器,输入以下网址:http://localhost:8088/html/BCGcode39.php  如果能顺利打开以下页面,恭喜你,全部配置成功,网址中8088代表端口,如果你实际设置的端口不是8088改成相应的即可
               

                123.JPG


第三步:接下来就是VBA批量引用上述自建网站的条形码图片了,看代码,代码还是沿用以前贴子的模式,很简单,无非就是批量插入图片的,就不过多的说了           
        
  1. Sub 生成条码()
  2.     Dim i%, str1$, x1, x2, x3, x4
  3.     Application.ScreenUpdating = False
  4.     If Application.CountA(Range("A:A")) = 0 Then
  5.         MsgBox "A列单号为空,程序退出!"
  6.         Exit Sub
  7.     Else
  8.     i = Range("A65536").End(xlUp).Row
  9.     For j = 1 To i
  10.       If Cells(j, 1) <> "" Then
  11.           With Cells(j, 2)
  12.               x1 = .Left
  13.               x2 = .Top
  14.               x3 = .Width
  15.               x4 = .Height
  16.               str1 = "http://localhost:8088/html/image.php?filetype=PNG&dpi=72&scale=1&rotation=0&font_family=Arial.ttf&font_size=8&text=" & Cells(j, 1).Value & "&thickness=30&checksum=&code=BCGcode39"
  17.               Sheet1.Shapes.AddPicture(str1, msoTrue, msoTrue, x1, x2, x3, x4).Select
  18.           End With
  19.       End If
  20.     Next
  21.     Columns(1).HorizontalAlignment = xlCenter
  22.     Columns(1).VerticalAlignment = xlCenter
  23.     End If
  24.     Application.ScreenUpdating = True
  25. End Sub
复制代码
                  
       123.gif
         
         
         上述代码附件如下: 批量生成条形码(2017-9-17更新).rar (23.71 KB, 下载次数: 1195)


第四步:引用PHP二维码开源项目,批量在excel添加二维码
            1、前面那些步骤都学会了,利用PHP二维码开源项目,在excel批量引用就会变得跟喝水一样简单,首先下载PHP二维码开源项目,下载地址===》》PHP二维码开源项目
                 把开源项目下载下来之后,把压缩包解压出来,复制到  D:\phpStudy\PHPTutorial\WWW   下面,最终 D:\phpStudy\PHPTutorial\WWW  显示的目录如图:
               
                   3333333.JPG

          2、 复制好了之后,然后在浏览器输入以下网址 http://localhost:8088/phpqrcode/index.php  如果显示以下页面,说明你的路径没有问题

                123444.JPG

        3、接下来的事情就相当简单了,利用VBA批量向自己的的搭的网站目录无限制post数据,然后get数据了,具体代码如下:      

   
  1. Sub 生成二维码()
  2.         Dim i%, URL$, postData$, getData$, Picture_Address$
  3.         Dim x1, x2, x3, x4
  4.         Application.ScreenUpdating = False
  5.         If Application.CountA(Range("A:A")) = 0 Then
  6.             MsgBox "A列单号为空,程序退出!"
  7.             Exit Sub
  8.         Else
  9.         i = Range("A65536").End(xlUp).Row
  10.         URL = "http://localhost:8088/phpqrcode/index.php "
  11.         With CreateObject("msxml2.xmlhttp")
  12.             For j = 1 To i
  13.               If Cells(j, 1) <> "" Then
  14.                   postData = "data=" & Cells(j, 1).Value & "&level=L&size=6"   '此处的level和size是纠错级别和图片大小,可以自己修改
  15.                   .Open "POST", URL, False
  16.                   .setrequestheader "Content-Type", "application/x-www-form-urlencoded"
  17.                   .setrequestheader "Connection", "keep-alive"
  18.                   .send postData
  19.                   getData = .responsetext
  20.                   Picture_Address = Split(Split(getData, "img src=""")(1), """ />")(0)
  21.                   With Cells(j, 2)
  22.                       x1 = .Left
  23.                       x2 = .Top
  24.                       x3 = .Width
  25.                       x4 = .Height
  26.                   End With
  27.                   Sheet1.Shapes.AddPicture("http://localhost:8088/phpqrcode/" & Picture_Address, msoTrue, msoTrue, x1, x2, x3, x4).Select
  28.               End If
  29.             Next
  30.         End With
  31.         Columns(1).HorizontalAlignment = xlLeft
  32.         Columns(1).VerticalAlignment = xlCenter
  33.         End If
  34.         Application.ScreenUpdating = True
  35.     End Sub
复制代码

123.gif    


附件下载地址:
      批量生成二维码(2017-9-17更新).rar (27.57 KB, 下载次数: 1017)
   
         





            

评分

26

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-9-26 20:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 huang1314wei 于 2017-9-30 11:23 编辑
lujkhua 发表于 2017-9-26 19:31
感谢 huang1314wei 大神教程,膜拜一下先。
但我一切就绪,条码完全正确,就二维码出现如下错 ...

感谢坛友yzyyyyyyy提供XP电脑供我调试代码,目前XP系统下也能正常使用二维码生成,请下载XP系统专用附件,下载如下:
(注意,win7及win10不用下载,这个附件专供winxp的,其它系统版本会报错!)

批量生成二维码(2017-9-30更新).rar (26.96 KB, 下载次数: 482)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-9-17 16:25 | 显示全部楼层
补充一下,上述post方法生成的二维码图片都保存在 D:\phpStudy\PHPTutorial\WWW\phpqrcode\temp  下面,如下图:

123.JPG
因此使用时间长了之后,可以手动清空该目录生成的二维码图片,以免占用过多的硬盘空间。这也是为什么一些二维码生成网站拼了命的抵制代码批量生成二维码,因为你不加节制的生成图片,这个生成的图片保留在人家网站空间上,会占用空间。人家目的是希望你正常浏览网站看广告赚流量然后生成你要的二维码,而不是希望你批量免费抓图片,所以当然加一些手段限制你批量获取

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-9-17 19:36 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-9-18 10:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-9-18 11:37 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-9-18 12:54 | 显示全部楼层
shen6017 发表于 2017-9-18 11:37
大神遇到点问题  帮帮忙

出现这个错误一般有以下几个原因:
1、运行VBA代码的时候,phpStudy软件没有开启
2、phpStudy端口不是8088,但是我代码是设置的是8088,请把8088设置成你的实际端口
3、phpStudy没有处于系统服务器模式,请选中系统服务,然后点击应用
4、复制开源项目文件到WWW目录的时候,没有按贴子指定的路径,请确保路径正确或者把VBA代码改成你的实际路径

TA的精华主题

TA的得分主题

发表于 2017-9-18 13:16 | 显示全部楼层
哈哈,还真死磕到底啦,从通过网络,把一些免费的在线条码生成网站上的图片通过VBA抓取到表格,到VBA调用bartender软件实现批量生成条形码,如今引用PHP开源项目批量生成条形码。huang1314wei老师的技术提高太快了,向您学习。收藏了。

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-9-18 13:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
CC例例 发表于 2017-9-18 13:16
哈哈,还真死磕到底啦,从通过网络,把一些免费的在线条码生成网站上的图片通过VBA抓取到表格,到VBA调用ba ...

感谢支持,确实是这样的,现在一些在线条码生成网站要么改用了MD5验证,要么你虽然可以用,但是条码上带了可恶的logo广告,想找一个长期可用的太难了,毕竟网站控制权不在自己手里 。
用VBA调用bartender也不太好,因为正式版bartender软件还是挺贵的,用XX版又有时间限制,只能使用一个月,一个月之后又要重新激活,否则用不了,所以前面两个生成方法我都不太满意,
现在这个基本是可以无限制长期使用了

TA的精华主题

TA的得分主题

发表于 2017-9-18 14:15 | 显示全部楼层
这个思路确实不错,操作简单。而且自己用本地服务器速度和可靠性都有保证了。

TA的精华主题

TA的得分主题

发表于 2017-9-18 14:42 | 显示全部楼层
已经按照大神的改好了,可是运行VBA代码情况还是一样,不知道什么原因。真的很需要,求助
QQ截图20170918143602.jpg
QQ截图20170918143615.jpg
QQ截图20170918143643.jpg
QQ截图20170918143954.jpg
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 23:31 , Processed in 0.044430 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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