vba java 网页_VBA Internet Explorer等待加载网页

本文讨论了在使用VBA通过Internet Explorer自动化网页时遇到的问题,即如何确保VBA等待网页完全加载,尤其是在页面动态加载内容的情况下。作者尝试了多种方法,包括检查`Busy`状态、`ReadyState`、`statusText`和`document.lastModified`,但仍然遇到宏在页面未完全加载时继续执行的问题。此外,代码中还出现了VBE和Excel实例在处理某些事件后变得无响应的情况。尽管找到了部分解决方案,但作者建议在某些情况下,可能需要考虑绕过IE直接进行HTTP请求以提高可靠性。
摘要由CSDN通过智能技术生成

我知道之前曾经问过这样的问题,但我的情况有点不同,而且一直很麻烦 . 我正在处理的是一个带有表单的网页,当填写输入框中的某些项目时,这些表单会加载更多页面 . 当这些事件触发页面再次加载时,但保持在具有相同nameprop的相同URL . 我一直在使用以下类型的方法单独和串联来处理等待页面加载,但有时VBA仍然设法继续执行并将HTMLDocument变量设置为页面,而没有相应的信息导致宏调试 . 以下是我到目前为止所尝试的各种事情:

While IE.Busy

DoEvents

Wend

Do Until IE.statusText = "Done"

DoEvents

Loop

Do Until IE.readyState = 4

DoEvents

Loop

我甚至试图将这些事件放入如下所示的循环中,但它并没有完全奏效,因为lastModified属性只返回一个值到第二个并且宏在字段中旋转足够快以至于它返回一个新的页面在同一秒:

Do Until IE.statusText = "Done" And IE.Busy = False And IE.ReadyState = 4 _

And IE.document.lastModified > LastModified ----or---- IE.document.nameprop = _

"some known and expected name prop here"

While IE.Busy

DoEvents

Wend

Do Until IE.statusText = "Done"

DoEvents

Loop

Do Until IE.readyState = 4

DoEvents

Loop

Loop

即使这样也无法等待足够长的时间来设置HTMLDocument对象导致调试 . 我已经考虑过设置下一个输入元素并检查无需进一步的代码,但即使这样也不会100%成功,因为通常输入元素存在于HTML中,但是在相应的事件被触发之前一直隐藏,这不会是一个问题,但他们不会加载他们可能的选择,直到事件被触发 . 这可能是一个奇怪的页面 .

无论如何......不知道还有什么要补充 . 如果有其他事情可能有助于看到问 . 我想我正在寻找的方法是让VBA等到IE知道另一个页面不在它的路上 . 它似乎在完成之前加载了几次 .

那么......任何人都有任何想法?

编辑:找到一些新的东西尝试 . 仍然没有骰子 . 有人建议我添加这些尝试 . 这是代码,由于某种原因,VBE和excel实例在触发应该填充select元素上的选项的事件后使用此方法时变得无响应...考虑尝试xml ...这里是代码:

intCounter = 0

Do until intCounter > 2

Do Until IE.Busy = False: DoEvents: Loop

Do Until IE.ReadyState = 4: DoEvents: Loop

Set HTMLDoc = IE.Document

Do Until HTMLDoc.ReadyState = "complete"

Set HTMLSelect = HTMLDoc.getElementById("ctl00$ctl00$MainContent$ChildMainContent$ddlEmployeeBranchCodes")

intCounter = 0

For each Opt in HTMLSelect

intCounter = intCounter + 1

Next Opt

Loop

根据我在网页上看到的情况,我知道在这个循环中,VBE和Excel变得无响应 .

希望有所帮助...我知道这对我没有帮助... Drats .

编辑:我想我会加上这个 . 谈到自动化网页,在大多数情况下,我不再使用IE浏览器 . 我发现它好多了,完全回避了这个异步的问题,简单地执行帖子并获得自己 . 可能不是最好的解决方案,取决于您尝试做什么,但如果您仔细查看流量并很好地参数化,它可以非常可靠地工作 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值