【发布时间】:2014-09-01 15:25:48
【问题描述】:
运行此代码时,我继续收到上述错误。我已经尝试了数十次网络搜索和调整来修复但不成功。代码如下,如果非常感谢任何帮助。
Public Sub Tagg()
Dim URL As String
Dim ie As SHDocVw.InternetExplorer 'MICROSOFT Internet Controls (shdocvw.dll)
Dim HTMLdoc As MSHTML.HTMLDocument 'Microsoft HTML Object Library
Dim loginFrame As HTMLIFrame
Dim usernameInput As HTMLInputElement, passwordInput As HTMLInputElement
Dim username As String, password As String
username = "MTorres" 'CHANGE THIS
password = "melissa1" 'CHANGE THIS
URL = "https://webaccess.tagglogistics.com/cadence/webaccess.net?action=203&Full=Y&args=415878"
Set ie = New SHDocVw.InternetExplorer
With ie
.Visible = True
.navigate URL
Do While .readyState <> READYSTATE_COMPLETE Or .Busy
DoEvents
Loop
Set loginFrame = .document.getElementById("loginframe") ' ****ERROR HERE****
Set HTMLdoc = loginFrame.contentWindow.document
'<input name="username" id="uname" class="ti" maxlength="32" onchange="setUserValue();"
'onkeydown="setupUserValue(event);" onmouseup="return false;" onclick="SelectAll();" onfocus="SelectAll();"
'aria-describedby="cof_username errormsg" type="text">
Set usernameInput = HTMLdoc.getElementsByName("username")(0)
usernameInput.Focus
DoEvents
usernameInput.Value = username
usernameInput.FireEvent "onkeydown"
usernameInput.FireEvent "onchange"
usernameInput.FireEvent "onmouseup"
'<input id="cofisso_ti_passw" name="password" class="ti" maxlength="32" aria-describedby="pass" type="password">
Set passwordInput = HTMLdoc.getElementsByName("password")(0)
passwordInput.Focus
passwordInput.Value = password
'HTMLdoc.forms(0).submit
'<input src="/resources/images/btn_login.gif" alt="Login" title="Login" name="cofisso_btn_login" id="cofisso_btn_login" type="image">
HTMLdoc.getElementById("cofisso_btn_login").Click
Do While .readyState <> READYSTATE_COMPLETE Or .Busy
DoEvents
Loop
'----------- NEW CODE --------------
'Might need this wait loop
While .document.readyState <> "complete"
DoEvents
Wend
'Either reload HTMLdoc from current IE.document:
Set HTMLdoc = .document
'Or if LNKLOGOUT is inside an iframe:
' Dim iframe As HTMLIFrame
' Set iframe = .document.getElementsByTagName("IFRAME")(0) '0 = 1st iframe
' Set HTMLdoc = iframe.contentWindow.document
'HTMLdoc should now be available here - display webpage TEXT TO verify
MsgBox HTMLdoc.body.innerText
'---------- END OF NEW CODE ----------
'Click "Sign Out" link
'<a id="LNKLOGOUT" class="logout" href="https://servicing.capitalone.com/C1/SelfService/CMLogoutIntercept.aspx">Sign Out</a>
HTMLdoc.getElementById("LNKLOGOUT").Click
Do While .readyState <> READYSTATE_COMPLETE Or .Busy
DoEvents
Loop
End With
End Sub
【问题讨论】:
-
你确定
.document不是nothing? -
VBA中哪一行出现错误?要查找,请单击错误消息上的“调试”,导致问题的行将突出显示。
-
代码中已经有注释指出错误发生在哪里。
-
如果
MTorres和melissa1是有效凭据,建议您立即更改。
标签: html vba excel web-scraping