我正在从项目中下载转储从网站,并保存在使用Excel vba指定的路径。网页登录不起作用使用excel VBA
当您执行调试或按“F8”逐行执行时,代码正常工作。
但是当你通过按“F5”或者在分配宏之后点击按钮来执行整个程序。它不工作。
需要您宝贵的建议来解决此问题。
由于事先 人员Prasanna
VBA代码用于登录。网页的登录
Sub Login()
Dim MyHTML_Element As IHTMLElement
Dim MyURL As String
Dim HTMLDoc As HTMLDocument
Dim MyBrowser As InternetExplorer
MyURL = "URL"
Set MyBrowser = New InternetExplorer
MyBrowser.Silent = True
MyBrowser.Navigate MyURL
MyBrowser.Visible = True
Do
Application.Wait DateAdd("s", 5, Now)
Loop Until MyBrowser.READYSTATE = READYSTATE_COMPLETE
Application.Wait DateAdd("s", 5, Now)
Set HTMLDoc = MyBrowser.document
HTMLDoc.all.Country_Code.Value = "Country_Code"
HTMLDoc.all.Login.Value = "UserName"
HTMLDoc.all.passwd.Value = "Password"
HTMLDoc.all.Item("B1").Click
For Each MyHTML_Element In HTMLDoc.getElementsByName("B1")
If MyHTML_Element.Type = "button" Then MyHTML_Element.Click: Exit For
Next
End sub
的HTML代码示例。
<table border=0>
<tr>
<td>Country:</td>
<td>
<input type="text" name="country_code" maxlength=2
onblur="this.value=this.value.toUpperCase();Form1_action(this.value)">
</td>
</tr>
<tr>
<td>Language:</td>
<td>
<select name="idioma" disabled >
<option value="uk|es" onblur="document.Form1.login.focus()">ENGLISH</option>
<option value="sp|es" onblur="document.Form1.login.focus()">SPANISH</option>
<option value="fr|en-us" onblur="document.Form1.login.focus()">FRENCH</option>
<option value="it|en-us" onblur="document.Form1.login.focus()">ITALIAN</option>
<option value="de|de" onblur="document.Form1.login.focus()">GERMAN</option>
</select>
</td>
</tr>
<tr>
<td>Login:</td>
<td>
<input type="text" name="login" maxlength=10 value="" disabled >
</td>
</tr>
<tr>
<td>Password:</td>
<td>
<input type="password" autocomplete="off" name="passwd" maxlength=10 value="" disabled onkeypress="var okp=(event.which)?event.which:event.keyCode; if(okp==13) SiteRedirect(this.form)">
</td>
</tr>
</table>
<br>
<center>
<input type="button" name="B1" value="Sign In"
onclick="SiteRedirect()"
disabled
style="width:80pt"
>
</center>
改变你做的循环,你让代码等待IE加载到'循环,当MyBrowser.ReadyState <> 4或MyBrowser.Busy' –
嗨斯科特感谢你的回复...我试过上面的代码,但仍然没有工作......我猜测是VB代码执行速度比IE网页加载时间更快......我是否需要增加等待函数的时间跨度...... ???它会帮助...? – Prasanna
是的,代码执行在VBA中是*独立*的浏览器加载时间,所以你必须对此作出说明,就像你已经是这样了。增加循环内的等待时间无关紧要,因为在IE未准备就绪时它将保持循环。我在回答中发布了我用于此的代码。在我经常使用的应用程序中,它适用于我。 –