基于Excel二次开发的批量文件搜索及自动下载技术的研究
2017-02-10李成华陈代鑫刘陨双周盼盼何源源
李成华,陈代鑫,刘陨双,周盼盼,何源源
(中航工业成都飞机工业(集团)有限责任公司,成都 610092)
基于Excel二次开发的批量文件搜索及自动下载技术的研究
李成华,陈代鑫,刘陨双,周盼盼,何源源
(中航工业成都飞机工业(集团)有限责任公司,成都 610092)
在航空制造行业中,零件图包通常存储在远程FTP服务器上,零件承接单位目前只能逐项搜索下载远程文件,效率低。通过对Excel进行二次开发工具软件实现依据项目清单,自动批量的从FTP服务器下载文件,并将不同图号的文件分类存储在对应图号的文件夹下,软件的使用不但大大提高了文件下载效率,而且将文件进行分类存储,方便管理。
EXCEL;二次开发;批量;自动;文件下载;超链接
0 引言
在远程传输文件中通常基于FTP协议的,将文件存储在远程FTP服务器上,客户端通过登录FTP客户程序连接远端服务器进行文件的下载或上传。在航空制造领域,很多民机项目的相关文件都以FTP的方式进行访问,承接零件制造单位通常会通过零件清单逐项从FTP服务器上搜索下载数模和相关文件,搜索方式类似于Windows资源管理器的搜索方式。零件项数通常上千项,下载文件将是人工不断的重复同一个过程,效率低。
通过对文件下载过程的分析发现,如果每次能靠计算机输入相应图号进行查找,查找到文件就进行文件的下载,那么就可以实现批量下载了。文件查找和文件下载在VBA中都有对应功能的函数,因此可以通过VBA对Excel进行二次开发实现文件的批量下载及文件的分类存储。
1 Excel二次开发简介
Excel二次开发可以通过三种方式来进行[1]。
1)VBA的内部开发
所谓内部开发,指的是使用Excel内嵌的VBA来开发。用VBA进行Excel的二次开发,简单、方便、效率高,并且用它开发的程序也可以使用自己设计的界面,把数据存放在Excel的单元格中。
2)COM插件开发
所谓的COM是Component Object Model的缩写是组件对象模型的意思,COM插件也叫COM加载项,实际上是一个动态链接库,我们可以开发程序作为一个链接库链接到一些程序中,从而扩展其功能。通常的COM插件是没有自己的界面,只是在宿主应用程序中集成一个菜单或者命令条,然后等待响应。
3)自动化应用接口(Automation API)
此种方式是通过VB,VC等高级编程语言,利用Automation技术来调用Excel,执行Excel提供的众多命令,完成需要的操作。
从需求和效率方面考虑,本文采用VBA来进行二次开发,完成文件的批量下载及文件的分类存储。
2 程序设计描述
2.1 总体思路
本程序操作对象为服务器上的文件,通过读取Excel清单中的零件图号,程序自动在服务器上面去搜索与该图号相关的文件,找到文件即进行下载,当程序循环完清单中的零件图号后整个清单中图号相关的文件也完成下载。文件下载完成后,通过程序自动将文件进行超链接,形成文件清单总报表并方便快速访问文件。
2.2 关键技术
1)基于循环嵌套的文件搜索算法
由于要下载与清单相关的所有文件,外层循环为清单中图号的循环,内嵌循环为与清单中某项图号相匹配文档文件搜索的循环,内嵌循环查找出与图号相关的所有文件。通过循环的嵌套,实现文件批量下载。程序流程图如图1所示。
图1 程序流程图
文件批量下载的核心伪代码如下:
文件下载至本机后,依据图号份文件图号存储,方便我们了解相关图号下的文件种类和数量,有助于文件的管理。文件在服务器上和本机上的存储情况对比如图2所示。
图2 文件存储方式
2)文件超链接形成文件总目录
文件下载后存放在本机,如果我们只是利用Windows系统自带的资源管理器来管理文件,那么我们访问文件必须逐级打开文件夹访问,其次从面上来讲我们不能方便的知道项目包具体都存在哪些文件。以上问题可以通过文件的超链接实现,在Excel中建立整个项目包的超链接,通过超链接可以快速打开相应文件,提高文件访问效率;超链接可以显示相应的文件名,形成了项目文件明细清单。超链接单元格与其他单元格一
【】【】样,可通过Excel自带的查找快速定位文件、利用条件格式功能可以快速的对自己关心的文件做特殊标识,优化文件管理的方式。
文件进行超链接的核心伪代码如下:
Research on batch files search and automatic download based on EXCEL re-developing technology
LI Cheng-hua, CHEN Dai-xin, LIU Yun-shuang, ZHOU Pan-pan, HE Yuan-yuan
TP311.56
:A
1009-0134(2017)01-0102-03
2016-08-12
李成华(1989 -),男,重庆人,工程师,硕士研究生,研究方向为机械制造、加工工艺、企业管理信息化、CATIA和Access二次开发等。