写在前面
无论是流行的各类网盘还是网页内嵌的附件,下载的本质都是需要通过http协议对文件的信息流进行处理。
这对于普通用户来说是比较常见的下载方式,与网络爬虫解析网页元素不同,文件下载依赖定位文件的位置,当然,爬虫的内容可能也包括文件下载,从这个意义上来讲,文件下载只是网络爬虫的一个方面。
本文告诉你一种通过VBA编码实现的下载远程文件的方法,并制作成了demo,需要的朋友可以按文末的方法下载并修改使用。
设计思路
笔者(公众号:URItker)不喜欢舍近求远,不理解那些总去远方淘金而忽略脚下的金矿的行为。
urlmon.dll就是本文指的金矿,它是微软Microsoft对象链接和嵌入相关模块。
和该模块相关的方法定义如下:
※上述代码考虑了不同office版本的兼容性问题。
其它逻辑
上面提到的URLDownloadToFile函数可以从指定的地址下载文件到本地,默认会存放在VBA源文件所在的路径。
上述方法是核心方法,不宜添加太多其它无关的逻辑,可以设置入口函数调用后添加一些友好提示,这样可以降低不同方法之间的耦合性,同时提升核心方法的纯粹性,这遵循了编码规范中的单一性原则。
写在最后
该方法完全可以封装成ocx或dll插件使用,毕竟文件下载的场景还是挺普遍的。有兴趣的朋友可以自己尝试一下,封装完别忘了分享一下哟(公众号:URItker)
本文介绍的方法已经做成了demo,可以在公众号后台回复“下载文件”获取。