暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

VBA 高级编程 远程copy文件(带用户名/密码)

匠工精神 2021-09-30
1229

因公司业务系统的切换,导致业务小伙伴原来在使用的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里。


总结

今天就跟大家分享这么多,也是自己工作当中遇到的一些坑,避免有相同需求的小伙伴避坑。如有疑问也欢迎一起讨论。

文章转载自匠工精神,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论