我刚接触VBA和Internet Explorer之间的互动,但我已经在线阅读了很多内容,无法在我的代码中找出问题所在。我只是想检索用户名'网站上的框并在里面添加一个值。所以我将所有输入框检索到HTML元素的集合中,但那个集合是空的:
Dim Collect As IHTMLElementCollection
With IE
.navigate "http:xxxxxxxxxx"
.Visible = True
End With
Do While IE.Busy
Loop
Set Collect = IE.document.getElementsByTagName("input")
MsgBox Collect.Length
End Sub
这将给出一个带有" 0"的消息框。如果我在代码结束之前切换一个断点,那么我会观察"变量Collect
,我可以看到里面有17个项目,其中一个是用户名'输入框',名称' tfUserName'。你能帮帮我吗?
编辑:我发现问题来自此代码:
Do While IE.Busy
Loop
我将其替换为:
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
现在一切正常。感谢您的回复。
答案 0 :(得分:0)
验证集合是否为null,以确定它是否包含元素
If Not Collect Is Nothing Then
For Each htmlElement In Collect
If Not htmlElement.getAttribute("username") Is Nothing Then
htmlElement.setAttribute("value", "licou6")
Exit For
End If
Next
End If