Board logo

標題: [發問] VBA 如何判斷網頁 [檔案下載] 視窗是否已彈出 [打印本頁]

作者: msmplay    時間: 2018-12-13 14:54     標題: VBA 如何判斷網頁 [檔案下載] 視窗是否已彈出

目前使用以下語法執行網頁檔案下載均正常,但目前遇到問題為:
因為[檔案下載]視窗彈出的等待時間長短不固定,有時候很快約10秒,有時候卻要等到1~5分鐘以上。
主要是因為公司的系統問題,導致每次設好延遲時間,都會因為太快或太慢向下繼續執行,而造成下載連線異常導致下載失敗。


所以想請問在以下延遲時間(回應[如何處理]視窗)反紅字那段延遲2秒的語法,是否有辦法改為判斷檔案下載視窗是否已彈出,再繼續往下執行的語法呢?有這種解決辦法嗎?

-------------------------------------------------------------
Sub 查詢每日數據並下載檔案()
Set myIE = CreateObject("InternetExplorer.Application")
With myIE
.Visible = True
.Navigate "http://xxxxxxxxxxxx/xxx.aspx" '查詢數據網址

Do While Busy Or .ReadyState <> 4: DoEvents: Loop

.Navigate "http://10.178.1.140:8023/ReportPage/ReportAgentToDay_28_tptv.aspx" '查詢數據會自動產生於此網址頁面

Do While Busy Or .ReadyState <> 4: DoEvents: Loop

.document.forms(0).all("ctl00_btnDownload").Click '點選下載按鈕
End With

' 回應[如何處理]視窗
Application.Wait Now + TimeValue("0:00:2") '延遲2秒**

Application.SendKeys "%{A}" ' 按[另存新檔]鍵

' 回應[另存新檔]視窗
Application.Wait Now + TimeValue("0:00:2") '延遲2秒
Application.SendKeys "%{N}"     ' <alt-N> 選取[檔案名稱]欄位
Application.SendKeys "{HOME}" & ThisWorkbook.Path & "\"  ' 設定存檔路徑
Application.SendKeys "%{S}"     ' <alt-S> 按[存檔]鍵

' 回應[確認另存新檔]視窗
Application.Wait Now + TimeValue("0:00:2") '延遲2秒
Application.SendKeys "%{Y}"     ' <alt-Y> 按[是]鍵 (如果同名檔已經存在)

' 回應[檢視下載]視窗
Application.Wait Now + TimeValue("0:00:5") '延遲5秒
Application.SendKeys "%{C}"     ' <alt-C> 按[關閉]鍵

myIE.Quit
Set myIE = Nothing
End Sub-------------------------------------------------------------
[attach]29803[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)