作者:绿色风
分类:
时间:2022-08-17
浏览:129
楼主 xmyjk |
Q:原本,一直觉得XMLHTTP的异步方式,就是个鸡肋,因为,如果是非异步,程序会等到网页源代码返回才能执行下一个代码。已经很方便了。 那异步呢,因为在VBA环境下,一定要readyState属性为4才能读取里面的数据,不像FIREFOX等环境下,readyState为3的时候就可以读取数据了,就一直觉得XMLHTTP的异步方式就是个鸡肋。 最近研究了,它在错误处理还是有很大的优势的。以前,在非异步模式下,我一直在xmlhttp的访问错误是使用on error语句的,然后判断err.number。然后再重新加载页面。 现在使用异步语句,基本不需要,而且还可以马上重新调用。保证不会是因为其他错误,触发了err语句。
A:国税法规库,那个直接获取15000条目录的,非常容易出错。就用它为例子吧。 网址:http://202.108.90.171:9090/guoshui/action/InitNewArticle.do?shuizhong=%E5%85%A8%E9%83%A8%E6%B3%95%E8%A7%84&articleRole=&articleField08=&articleField09=&articleField10=&articleField11=&articleField12=&articleField13=&articleField14=&articleField18=&intvalue=1&intvalue1=1&initFlag=0&articleField01=&articleField03=&articleField04=&articleField05=&articleField06=&articleField07_s=&articleField07_d=&pageSize=15000&cPage=1
代码如下:- Sub test()
- Dim xmlhttp, i&
- Set xmlhttp = CreateObject("Microsoft.XMLHTTP") '建立对象
- line:
- With xmlhttp
- '最后一个参数,设置为TRUE,即异步模式访问。
- .Open "get", "http://202.108.90.171:9090/guoshui/action/InitNewArticle.do?shuizhong=%E5%85%A8%E9%83%A8%E6%B3%95%E8%A7%84&articleRole=&articleField08=&articleField09=&articleField10=&articleField11=&articleField12=&articleField13=&articleField14=&articleField18=&intvalue=1&intvalue1=1&initFlag=0&articleField01=&articleField03=&articleField04=&articleField05=&articleField06=&articleField07_s=&articleField07_d=&pageSize=15000&cPage=1", True
- .send '发包
- Do Until .ReadyState = 4 '判断页面是否加载完毕
- DoEvents
- Loop
- If .Status <> 200 Then '如果非200,即没有加载成功
- i = i + 1 '记录错误次数
- Debug.Print "错误第" & i & "次" '输出
- GoTo line '然后再次调用访问程序
- End If
- Debug.Print .responsetext '如果成功,输出源代码
- End With
- End Sub
xmlhttp异步.zip |
2楼 い卋玑┾宝珼 |
VBA在批处理这件事情上,确实比较 |
3楼 亡者天下 |
弦月的VBA越来越深奥了 |
4楼 后知 |
VBA真是很强大啊 |
5楼 老糊涂 |
学习 |
6楼 keven |
赞一个! |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一