作者Ibrahimovic (伊布)
看板Visual_Basic
标题Fw: [算表] 为何抓网路多笔资料会常常失败
时间Sun Sep 23 15:03:20 2018
※ [本文转录自 Office 看板 #1Rfpgif3 ]
作者: Ibrahimovic (伊布) 看板: Office
标题: [算表] 为何抓网路多笔资料会常常失败
时间: Sun Sep 23 15:03:06 2018
软体: Excel
版本: 2016
时常用VBA在抓网路资料,一直都有个疑惑
如果只抓少数几笔资料,例如3笔,通常VBA写完,F5按下去,都会成功
可是如果是要抓很多笔,例如100笔,通常就会在下载阶段时挂掉,出现没有反应
而在这下载失败里的几次例子里
重新在VBA里按F8逐条执行,就会成功!?
针对这种问题,做过的补救方式有
1.加回圈直到网页完全载入
Do While IE.readyState <> 4 Or IE.Busy
DoEvents
Loop
2.接上面回圈,再加等待时间
Application.wait now + timevalue("00:00:05")
以上加了,改善成功率不到5成,时好时坏
记忆体或CPU状态也有检查
试过的网站来源不只1个
但是,感觉都没有办法抓到问题重点
所以想请教诸位大德开释
为什麽按F5,一次完整跑,会失败
按F8,逐条执行,却会成功 ?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.175.126.106
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1537686188.A.A43.html
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: Ibrahimovic (1.175.126.106), 09/23/2018 15:03:20
1F:→ napyang: 建议你去girhub上找一位神人做的VBA-Web来parse, 09/24 10:07
2F:→ napyang: 不要透过IE应该就没这问题。 09/24 10:07
4F:→ peakhour: 可在F8逐条执行成功,表示你程式连线过快,必须放慢,de 09/24 16:40
5F:→ peakhour: lay长一点 09/24 16:40
感谢2位指教,我再试试
感恩
※ 编辑: Ibrahimovic (1.175.126.106), 09/25/2018 00:58:05
6F:→ waiter337: 我印象有个写法好像要等下载完成才能执行下一个步骤 10/30 09:32
7F:→ waiter337: 该不会是这个巴 10/30 09:33
8F:→ waiter337: Do While MyBrowser.busy Or _ 10/30 09:33
9F:→ waiter337: MyBrowser.readyState <> 4 10/30 09:33
10F:→ waiter337: DoEvents 10/30 09:34
11F:→ waiter337: Loop 10/30 09:34
12F:→ waiter337: do 10/30 09:34
13F:→ waiter337: Loop Until MyBrowser.readyState = READYSTATE_COMPL 10/30 09:34
14F:→ waiter337: ETE 10/30 09:35