【发布时间】:2016-11-04 05:11:18
【问题描述】:
我正在使用 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
非常感谢您提供的任何帮助!
【问题讨论】:
-
加载新页面后再次
Set ieDoc = ie.Document。 -
@Comintern 不幸的是,这不起作用。我应该包括我已经尝试过的。
-
你确定文本框总是在新页面上有这个ID吗?
00Nj0000009FpF9。也可以在这两个地方尝试Dim ieDoc as Object,看看会发生什么。 -
@ScottHoltzman 是的,文本框总是有 id。当我直接导航到包含它的页面时,编辑它的代码可以工作 - 如果我从另一个页面导航到该页面,它就不起作用。我尝试
Dim ieDoc as Object,而不是子和函数中的HTMLdocument,但这并没有改变任何东西。 -
对不起,我帮不上忙,我做了一些非常相似的事情,并且工作非常顺利,但不幸的是我不再参与那个项目:(
标签: html vba excel internet-explorer