過去發問文章https://ithelp.ithome.com.tw/questions/10188801
目前使用以下語法執行網頁檔案下載均正常,但目前遇到問題為:
因為[檔案下載]視窗彈出的等待時間長短不固定,有時候很快約10秒,有時候卻要等到1分鐘以上。
主要是因為公司的系統問題,導致每次設好延遲時間,都會因為太快或太慢向下繼續執行,而造成下載連線異常導致下載失敗。
所以想請問在以下延遲時間(回應[如何處理]視窗)那段延遲2秒的語法,是否有辦法改為判斷檔案下載視窗是否已彈出,再繼續往下執行的語法呢?有這種解決辦法嗎?
Sub 查詢每日數據並下載檔案()
Set myIE = CreateObject("InternetExplorer.Application")
With myIE
.Visible = True
.Navigate "http://xxxxxxxxxxxx/xxx.aspx" '查詢數據網址
Do Until .ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
.Navigate "http://10.178.1.140:8023/ReportPage/ReportAgentToDay_28_tptv.aspx" '查詢數據會自動產生於此網址頁面
Do Until .ReadyState = READYSTATE_COMPLETE
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