html - 导航到 VBA 中的页面后无法重置 HTML 文档

标签 html vba excel internet-explorer

我正在使用 VBA 浏览 IE,但在重置文档对象以便浏览多个页面时遇到了问题。我使用了 this 的答案帮助创建原始脚本的问题,但遇到了海报遇到的非常相似的问题。不幸的是,列出的答案没有帮助或引导我找到解决方案。

我正在使用以下代码来拉取页面和导航。

Sub UpdatesalesNotes()

Dim ie As Object, ieDoc As HTMLDocument

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True

strHTML = ActiveSheet.Range("A31").Value

ie.navigate strHTML

'wait for browser
While ie.ReadyState <> READYSTATE_COMPLETE
    DoEvents
Wend


Set ieDoc = ie.Document

Call ClickButton(ieDoc, "New Service Note")

'wait for browser
While ie.ReadyState <> READYSTATE_COMPLETE
    DoEvents
Wend


ieDoc.getElementById("00Nj0000009FpF9").Value = "Placeholder Text"


Call ClickButton(ieDoc, "Save")

End Sub

我在第二页上与之交互的元素是一个文本框。下面列出了调用的函数(工作正常)。

Function ClickButton(ieDoc As HTMLDocument, ByVal strButtonName As String)
Dim objInputs As Object, ele As Variant
Set objInputs = ieDoc.getElementsByTagName("input")

For Each ele In objInputs
    If ele.Title = strButtonName Then
        ele.Click
    End If
Next
End Function

如何将 ieDoc 重置为等于当前页面,以便我能够与新页面上的文本框进行交互?在与文本框交互之前插入以下内容不起作用(我不知道为什么)。

set ieDoc = ie.document

非常感谢您提供的任何帮助!

最佳答案

@dee 你已经竭尽全力回答这个问题。非常感谢!

您的回答并没有为我解决问题,但这是我能够解决问题的原因。您提到它可能是一个框架让我们(我和一个同事)意识到 IE 可能会在框架完成加载之前完成一个过程。

修复就像添加一样简单

Application.wait DateAdd("s", 5, Now)

之后

While ie.busy Or ie.ReadyState<> Readystate_complete: DoEvents: Wend

代码的最后一位现在是

While ie.Busy Or ie.ReadyState <> READYSTATE_COMPLETE: DoEvents: Wend

Application.Wait DateAdd("s", 5, Now)

iedoc.getElementById("00Nj0000009FpF9").Value = "Place holder Text"

Call ClickButton(ieDoc, "Save")

这是一个不优雅的解决方案,但它可以完成工作。

再次感谢您的帮助。我将实现您所做的一些其他更改,以使我的代码更明确、更易于阅读。

关于html - 导航到 VBA 中的页面后无法重置 HTML 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40388599/

相关文章:

vba - 如何在 VBA(Excel)中使用 UTF-8 保存没有 BOM 编码的文本文件(CSV)?

excel - COUNTIF 无法计算非空白公式结果?

PHP/CSS : Fix the table, td 大小,虽然 td 处的文本太长

javascript - 在用户请求后加载 Ember.JS 模板(即单击提供该模板的链接)?

html - 如何使用 HTML 表示二叉树(从上到下)?

excel - 表格背景色灰度排序

excel - 从 MS Excel 访问 Redis?

php - {textarea} 聪明的 php

vba - 将所有 excel 插件模块导出到 .bas 文件的最快方法是什么?

excel - 使用 selenium 将文件下载到特定目录