加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

基于VBA for Excel批量下载图片教程系列(一)——前言

(2017-02-09 22:20:13)
分类: EXCEL

关于VBA

VBA是Visual Basic for Applications的简称,本质上是一种基于VB的自动化语言,主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。

虽然VBA继承自VB,但二者之间存在着以下差异:

  • VB主要用于创建标准的应用程序,而VBA是寄生于已有的应用程序,并使其自动化。

  • 正如第一点区别所述,VB具有独立的开发环境,而VBA必须寄生于已有的应用程序。

  • VB开发的应用程序可以作为一个可执行程序独立的运行,不需要单独配置其运行环境;相反,VBA开发的程序必须依赖于其父应用程序,例如EXCEL、WORD、ACCESS甚至ArcGIS等集成VBA的应用程序。

  • VBA继承于VB,是VB的一个子集,因此,VBA也集成了VB的绝大多数函数和语法规则。

我对VBA的一些认识

我一直认为MS OFFICE是迄今为止世界上最强大的生产力工具,没有之一!同样地,我也认为MS EXCEL是MS OFFICE能最强大的工具,没有之一!

我的理由就是MS OFFICE集成了VBA,利用VBA可以极大提高OFFICE的效率;至于VBA for EXCEL,在已有的OFFICE软件套装中,这是世界上的独一份!

VBA可以做很多工作,受限于我的水平和使用经历,我认为包括但不限于以下方面:

  • WORD批量化、自动化排版,例如大纲索引、段落缩进、字体设置等等,甚至在毕业论文的写作过程中,ENDNOTE的功能也可以使用VBA来替代!
  • WORD自动化纠错;

当然,我更倾向于在EXCEL中使用VBA,在EXCEL中,VBA可以干太多的事情了:

  • EXCEL中几乎所有的函数均可以用VBA来实现;

  • VBA可以自定义EXCEL中不存在的函数和功能模块;

  • VBA可以自动化、批量化甚至定时获数据、处理数据、计算数据、输出结果,结果可以输出至简单的文本中,也可以输出至数据库中,亦可以通过VBA生成可视化的结果。

  • VBA获取数据来源包括但不限于:

    • 本地数据:VBA可以索引本地所有目录,列出目录结构,获取特定类型文件的内容;

    • 远程数据:VBA可以获取局域网和外网服务器上的数据,并与远程服务器进行连接和数据交互;

  • 得益于VB的窗体模块,VBA可以开发出良好的交互式工具。

本文将以基于VBA for EXCEL的【图片批量下载工具】为例,由浅入深的讲解EXCEL中VBA的基本用法,当然我的水平相当有限,其中肯定有一些错误和缺点,请大家批评指正!

【批量下载工具】说明

我不会将VBA的基本用法作为这个教程系列的开始,我更喜欢以每一个【模块】为单元进行讲解。所以,我将【批量下载图片工具】分解为几个功能【模块】,每一个【模块】包含一个或多个【自定义函数】,每一个【模块】实现一个功能。

流程图

http://upload-images.jianshu.io/upload_images/4290551-875b53190f9409ec.png?imageMogr2/auto-orient/stripfor Excel批量下载图片教程系列(一)——前言" TITLE="基于VBA for Excel批量下载图片教程系列(一)——前言" />
流程图

上面这张流程图基本上反映了该工具的工作原理和逻辑关系,该工具的使用方法如下图:

http://upload-images.jianshu.io/upload_images/4290551-56fc92795b00540c.gif?imageMogr2/auto-orient/stripfor Excel批量下载图片教程系列(一)——前言" TITLE="基于VBA for Excel批量下载图片教程系列(一)——前言" />
使用过程

据此,我将该工具分解为如下几个模块:

功能模块

制作【交互式界面】

主要用于定义运行参数和填写原始的网页地址。

http://upload-images.jianshu.io/upload_images/4290551-e1a9987d56500558.png?imageMogr2/auto-orient/stripfor Excel批量下载图片教程系列(一)——前言" TITLE="基于VBA for Excel批量下载图片教程系列(一)——前言" />
交互界面
生成【目标网页地址数组】

获取用户在单元格中输入的网页地址链接,并将其存储在数组中,然后对该数组进行排序,最后删除其中的重复项,获得最终的【网页地址数组】。

生成【图片链接数组】和【网页

向服务器请求目标网页的源代码,获取网页为名称的文件夹中;通过一系列的规则,获取目标网页中的图片链接,并将其存放在数组中。

【目录索引模块】

查询根目录中是否存在文件夹;若存在,则询问是否重新下载。在这个过程中,程序将获取根目录下所有的文件夹以及文件的信息,包括文件/文件夹名称、路径、数量、类型等等。

【图片下载模块】

利用VBA的URLDownloadToFile函数批量下载图片,并将其保存在根目录的

创建【第三方下载工具批处理文件】(可选)

生成IDM批处理文件,利用IDM批处理功能,可以使用socks5代理更加快速、高效的下载图片,实际体验过程中,IDM的下载速度和容错率远远超过URLDownloadToFile函数。

创建【本地HTML文件】

将目标网页的源代码保存在本地,并自动链接本地相应的图片,可以在断网的情况下进行网页浏览,特别适合于目标网页中有重要文字信息的情景。

【结果输出、统计模块】

将以下信息追加保存在EXCEL的某一个Sheet中:

  • 文件夹名称
  • 标识码
  • 创建时间
  • IDM批处理路径,同时创建超链接
  • 来源网址,同时创建超链接
  • 图片数量
  • 实际下载数量
  • 保存目录,同时创建超链接
  • 本地HTML网页,同时创建超链接
【文件管理模块】
  • 整理全部功能:将根目录下所有的图片文件夹进行整理;

  • 整理新增功能:只整理结果Sheet中没有显示的文件夹;

至于VBA的基本用法,如数据类型、变量定义、数组、常用语法、函数定义和调用等,我会在函数的定义中穿插讲解。

好了,本篇作为前言就讲这么多,从下一篇开始,将详细讲解如何一步步的搭建起这个工具。

最后,给出本文的材料:

最后给出本文的材料:

https://pan.baidu.com/s/1pLQ3RZX

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有