使用VB Macro登录网站

时间:2018-04-27 04:06:16

标签: vba excel-vba excel

我正在尝试使用Macro从网站提取数据。以下是我的代码。它填写了ID和密码,但实际上并未登录该站点。需要帮助来确定实际错误的位置。然后我可以慢慢地进入正确的位置来提取报告。

Dim HTMLDoc As HTMLDocument
Dim oBrowser As InternetExplorer
Sub HRALogin()

Dim oHTML_Element As IHTMLElement
Dim sURL As String

On Error GoTo Err_Clear
sURL = "website" 'removed actual website due to sensitivity
Set oBrowser = New InternetExplorer
oBrowser.Silent = True
oBrowser.timeout = 60
oBrowser.Navigate sURL
oBrowser.Visible = True

Do
' Wait till the Browser is loaded
Loop Until oBrowser.ReadyState = READYSTATE_COMPLETE

Set HTMLDoc = oBrowser.Document

HTMLDoc.all.UserName.Value = "abcdefg"
HTMLDoc.all.Password.Value = "1234abcd"

For Each oHTML_Element In HTMLDoc.getElementsByTagName("input")
If oHTML_Element.Type = "login" Then oHTML_Element.Click: Exit For
Next

' oBrowser.Refresh ' Refresh If Needed
Err_Clear:
If Err <> 0 Then
Err.Clear
Resume Next
End If

End Sub

2 个答案:

答案 0 :(得分:1)

For Each oHTML_Element In HTMLDoc.getElementsByTagName("input")
If oHTML_Element.Type = "login" Then
    oHTML_Element.Click
End If
Exit For
Next

Do 
'Wait till the Browser is loaded
Loop Until oBrowser.ReadyState = READYSTATE_COMPLETE

另外,在点击登录后设置延迟,以便正确加载页面,然后完成剩下的工作。

答案 1 :(得分:0)

此:

For Each oHTML_Element In HTMLDoc.getElementsByTagName("input")
    If oHTML_Element.Type = "login" Then oHTML_Element.Click: Exit For
Next

相当于:

For Each oHTML_Element In HTMLDoc.getElementsByTagName("input")
    If oHTML_Element.Type = "login" Then
        oHTML_Element.Click
    End If
    Exit For
Next

即。 Exit For不受If控制。那可能是你的问题。