2017-08-28 107 views
-1

我想從網站下載一些數據,點擊後開始下載。 但此代碼無法正常工作,任何人都可以幫忙。使用VBA的數據報廢從網站

Dim ie As InternetExplorer 
Dim htmldoc As MSHTML.IHTMLDocument 
Dim HTMLInput As MSHTML.IHTMLElementCollection 
Dim HTMLAs As MSHTML.IHTMLElementCollection 
Dim HTMLA As MSHTML.IHTMLElement 

Set ie = CreateObject("InternetExplorer.Application") 
ie.Visible = True  

'Navigate to webpage 
Dim ieURL As String: ieURL = "http://erldc.org/final-schedule.aspx" 
ie.navigate ieURL   
Do While ie.readyState <> READYSTATE_COMPLETE 

Loop 

Set htmldoc = ie.document 
Set HTMLInput = htmldoc.getElementsByTagName("a") 

For Each HTMLA In HTMLAs 

Debug.Print HTMLA.getAttribute( 「類名」),HTMLA.getAttribute(的 「href」),HTMLA.getAttribute( 「相對」)

If HTMLA.getAttribute("href") = "javascript:__doPostBack('ctl00$ContentPlaceHolder1$Calendar1','6420')" Then 

HTMLA.Click 

Exit For 
End If 

Next HTMLA 

結束子

+0

非常感謝讓論壇知道這一點。 – cyboashu

+0

@cyboashu你能幫我下載1個月的數據嗎?我沒有得到合適的結果。 –

回答

0

嘗試暫停宏幾秒鐘,也許5秒,即檢查該ReadyStateDo While/Loop後...

Dim sngFinish As Single 
Dim intPauseTime As Integer 

intPauseTime = 5 'in seconds 
sngFinish = timer + intPauseTime 
Do While timer < sngFinish 
    DoEvents 
Loop 

另外,我建議你檢查的Internet Explorer Busy狀態,除了ReadyState,並添加DoEvents ...

Do While ie.Busy Or ie.readyState <> READYSTATE_COMPLETE 
    DoEvents 
Loop 

希望這有助於!

+0

感謝您的幫助。對於每個HtmlA行都會引發運行時錯誤。 –

+0

對於每個HtmlA行拋出運行時錯誤'424'我的大多數程序引發此錯誤。你可以訪問鏈接,因爲它沒有按要求點擊日期,或者VBA受限制,我無法執行此功能,我需要使用其他語言。 –

+0

看起來應該將您的元素集合分配給HTMLAs而不是HTMLInput - >'設置HTMLAs = htmldoc.getElementsByTagName(「a」)'。 – Domenic