我正在從項目中下載轉儲從網站,並保存在使用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未準備就緒時它將保持循環。我在回答中發佈了我用於此的代碼。在我經常使用的應用程序中,它適用於我。 –