2017-09-01 41 views
0

我正在使用VBA導航到IE中的網頁。幾秒鐘後,網頁的元素會動態加載。 我正在嘗試使用該網頁中的鏈接的樹結構。所以我試着用下面的代碼來查看內部HTML,在即時窗口中在IE中顯示元素的innerHTML

Sub treemenutest() 

    Dim ie As SHDocVw.InternetExplorerMedium 
    Dim doc As MSHTML.HTMLDocument 
    Dim elements3 As MSHTML.IHTMLElementCollection 
    Dim nameValueInput3 As MSHTML.HTMLInputElement 
    Dim LIS As IHTMLElementCollection 
    Dim LI As IHTMLElement 

    Set ie = New SHDocVw.InternetExplorerMedium 
    ie.Visible = True 
    ie.navigate Sheet1.TextBox1.Value 'web page URL 

    Do Until Not ie.Busy And ie.readyState = 4 
     DoEvents 
    Loop 

    Set doc = ie.document 

    Set elements3 = doc.getElementsByName("OK") 
    If Not elements3 Is Nothing Then 
     Set nameValueInput3 = elements3(1) 
      If Not nameValueInput3 Is Nothing And nameValueInput3.Type = "submit" Then _ 
        nameValueInput3.Click 
      End If 

    Set LIS = ie.document.getElementsByTagName("a") 
    For i = 0 To LIS.Length - 1 
    Debug.Print LI.innerHTML 
    Next 

    End Sub 

Debug.Print不顯示在即時窗口中的任何信息。編碼有問題還是因爲網頁的某些內容是動態的?

任何信息將會有所幫助。

+0

是否有可能爲你揭示該網頁的鏈接,以獲得更快解? – SIM

+0

這是一個官方網站,所以我不能透露它。 – Aprnaa

+0

您會發現使用瀏覽器的開發工具更容易(按F12打開) - 只需點擊感興趣的元素即可顯示當前的HTML。 –

回答

0

我會用一個foreach循環

For each LI in LIS 
    Debug.Print LI.innerHTML 
Next 

但你還可以重複這樣的標籤:

For i = 0 To LIS.Length - 1 
    Debug.Print LIS.item(i).innerHTML 
Next 
+0

我曾嘗試使用每個循環..但我的直接窗口仍然是空的。 – Aprnaa

+0

我會在循環前鍵入'Stop',然後執行代碼。從那裏,我會直接從立即窗口工作代碼。在設置變量時,請檢查本地窗口並查看變量屬性,直到它開始工作。 – 2017-09-01 15:25:23

+0

由於您點擊了提交按鈕,您可能應該等待新文檔加載'直到不是ie.Busy和ie.readyState = 4:DoEvents:Loop'。 – 2017-09-01 15:26:44