因公司业务系统的切换,导致业务小伙伴原来在使用的vba一下子没数据了,好多小伙伴会找过来帮忙,总结下来其实就两个功能:一个是从数据库里获取商品图片,一个是从数据库里获取sku信息组装成特定格式,但有个比较坑的点是这些excle的宏都被加密了,当时没有windows电脑就让小伙伴网上找找破解的方法,功夫不负有心人,最后还真的破解成功了,这个方法有机会再跟大家share下,也可以网上搜索下。因新系统的图片是直接维护在共享盘上的,所以我只需要解决如何从公盘把图片下载到本地即可,接下来就分享如何解决这个问题的。
过程
因为安全问题,访问公盘是需要输入用户名和密码的,刚开始的时候主要卡在这里,如果只是单纯的从公盘copy文件也是比较容易的,直接用
FileCopy srcfile, targetfile 这个函数即可处理。在网上搜了一圈,看到也有人有这样的需求,但没人解决。还是不甘心,重新开始搜索,最终看到有人给出建议,通过命令行隐式登录,一旦如果能登录了,接下来就好办了。经过不断的尝试,终于能登录到公盘了,主要代码如下:
Sub loginShareFolder()
IPName = "192.168.133.163"
UserName = "username"
Passwd = "password"
Shell "net use * delete y", vbHide
Shell "net use \\" & IPName & " " & Passwd & " user:" & UserName, vbHide
Shell "C:\WINDOWS\explorer.exe \\" & IPName & "\", vbMaximizedFocus
End Sub
接下来就如鱼得水了,登录到公盘后,轻而易举的获取到了图片。关于图片,这里面有个小坑分享下,一般有两种方式引入图片:
ActiveSheet.Pictures.Insert(imgPath)
另外一种是:
worksheet.Shapes.AddPicture("C:\\GW93802.jpg", false, true, 1, 1, 800, 800)
前者只是引用而已,当图片被删除、移动时,excel文件中的图片将会找不到资源位置。这也是我遇到的问题,业务人员反馈,好多图片后来都没有了,只留个带有xx的图。后者会将图片作为excel的资源打包到excel文件中。使用下来也很顺畅。
最后就是使用我之前提到的FileCopy 函数把文件从公盘里copy到本地,最后插入到excel里。
总结
今天就跟大家分享这么多,也是自己工作当中遇到的一些坑,避免有相同需求的小伙伴避坑。如有疑问也欢迎一起讨论。




