ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何运用VBA使用XMLHTTP对象的异步访问模式

如何运用VBA使用XMLHTTP对象的异步访问模式

作者:绿色风 分类: 时间: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

代码如下:
  1. Sub test()
  2.     Dim xmlhttp, i&

  3.     Set xmlhttp = CreateObject("Microsoft.XMLHTTP") '建立对象
  4. line:
  5.     With xmlhttp
  6.     '最后一个参数,设置为TRUE,即异步模式访问。
  7.         .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
  8.         .send '发包
  9.         Do Until .ReadyState = 4 '判断页面是否加载完毕
  10.             DoEvents
  11.         Loop
  12.         If .Status <> 200 Then '如果非200,即没有加载成功
  13.             i = i + 1 '记录错误次数
  14.             Debug.Print "错误第" & i & "次" '输出
  15.             GoTo line '然后再次调用访问程序
  16.         End If
  17.         Debug.Print .responsetext '如果成功,输出源代码
  18.     End With
  19. 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总版主之一

评论列表
sitemap