VBA研究操作InternetExplorer控件取数据
Posted 宋哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA研究操作InternetExplorer控件取数据相关的知识,希望对你有一定的参考价值。
作者:iamlaosong
因业务需要需要从SF网站上查询快件轨迹。虽然可以一次查询多个快件,但每个快件数据要逐个复制下来,还是很麻烦的。查询是需要图片验证的,我没有什么办法绕过这个验证(也许有人有办法),只能手工完成。那么如何实现手工和自动的配合呢?
InternetExplorer控件可以解决这个问题,因为这个控件打开一个连接时,会自动启动默认浏览器并打开这个网页,只需要在浏览器上做完验证,然后利用这个控件的属性,将网页上的数据取出来,然后进行内容分拣,保存到Excel工作表中即可。
需要等这个验证通过后,才能得到所需的内容,所以在此之前,VBA程序需要等待:
另外,还需要对网页内容进行判断,因为验证前后网页内容是不同的,查找图片验证通过后出现的特征字符,如果没有,提示用户继续验证,或者退出。
官网查询快件轨迹的地址是一个固定地址,后面跟上运单号,多个号码用“,”分隔,创建和打开连接的代码如下:
其中http变量保存的是固定网址,http1变量中保存的则是用逗号分隔的运单号。网页的内容可以用下面两个属性提取:
rspText = ie1.Document.body.innertext
rsphtml = ie1.Document.body.innerhtml
因为我们只需抓取快件轨迹数据,所以只需要用innertext属性即可。如果需要对网页进一步操作,可以分析innerhtml,然后进行自动化提交,如以前曾做过打开网页自动提交用户名和密码,然后抓取数据,这需要对网页元素比较熟才行,代码如下(这个代码与本文关系不大):
提取内容前,还需要判断一下,网页内容是否通过验证并更新内容:
要提取内容,需要对内容进行分析,找出固定的特征字符进行定位分拣。如找到运单轨迹开始处,轨迹信息如何排列等等。对轨迹内容的分拣,用下面自定义函数完成:
保存轨迹数据到工作表中:
以上是关于VBA研究操作InternetExplorer控件取数据的主要内容,如果未能解决你的问题,请参考以下文章
VBA研究64位系统下无法用ScriptControl控件解析JSon数据