VBA和Internet Explorer:填写输入框

时间:2014-12-05 14:06:49

标签: vba internet-explorer

我刚接触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

现在一切正常。感谢您的回复。

1 个答案:

答案 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