2014-12-05 160 views
0

我是新來的VBA和Internet Explorer之間的交互,但我已經在網上閱讀了很多東西,無法找出我的代碼中的問題。我只想檢索網站上的「用戶名」框並在其中添加值。所以,我檢索到的所有輸入框到HTML元素的集合,但那麼集合爲空:VBA和Internet Explorer:填寫輸入框

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個項目,其中一個是用戶名'inputbox',名稱爲'tfUserName'。你能幫我嗎?


編輯:我發現問題來源於此代碼:

Do While IE.Busy 
    Loop 

其中我替換爲:

Do Until IE.readyState = READYSTATE_COMPLETE 
     DoEvents 
    Loop 

而現在一切工作正常。謝謝你的回覆。

+0

您可以張貼在輸入框的HTML? – 2014-12-05 15:32:14

回答

0

驗證對空的集合,而不是以確定它是否包含元素

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