2015-08-08 76 views
0
Option Explicit 

Sub Sample() 
    Dim objIe As InternetExplorerMedium 
    Dim xobj As Variant 
    Dim links As Variant 
    Dim link As String 
    Dim lnk As Variant 
    Dim rc As Integer 
    Set objIe = New InternetExplorerMedium 
    objIe.Visible = True 
    objIe.navigate "C:\Users\SOURABH\Desktop\test.html" 
    Do While objIe.Busy And Not objIe.readyState = 4 
     Application.StatusBar = "Loading.." 
     DoEvents 
    Loop 
    MsgBox objIe.document.body.innerHTML 
    Set xobj = objIe.document.getElementByTagName("myDiv") 
    Set xobj = xobj.getElementsByClassName("myTable").Item(0) 
    Set xobj = xobj.getElementsByClassName("data")(0) 
    For Each lnk In links 
     MsgBox "lnk got accessed" 
     If lnk.className = "myTable" Then 
      Sheets("Sheet1").Cells(3, 1).Value = lnk(0).innerText 
      Exit For 
     End If 
    Next 
    MsgBox xobj.innerText 
    Set xobj = Nothing 

    objIe.Quit 
    Set objIe = Nothing 
End Sub 

而我的HTML:VBA的html頁面訪問宏的innerText

<div id="myDiv">  
<table class="myTable"> 
     <tbody> 
      <tr> 
       <td>Text1:</td> 
       <td class="data"><strong>0.51</strong></td> 
      </tr> 
      <tr> 
       <td>Text2:</td> 
       <td class="data"><strong>2199</strong></td> 
      </tr> 
     </tbody> 
    </table> 
</div> 

我可以使用MSGBOX命令看到的innerText,但同時在innerText屬性獲取類名我得到一個錯誤:

object doesn't support this property in set xobj = objIe.document.getElementByTagName("myDiv") line

請幫我找到一種方式來獲得類的innerText「數據」

+0

我對象好奇你爲什麼使用vba訪問html dom? –

+0

其實我試圖做一些自動化,以在沒有手動簽入郵件服務器的情況下獲得新的郵件提醒的通知。請建議更好的選項來訪問html源代碼。你的建議總是值得讚賞的。 –

回答

1

您正在嘗試通過標記名來訪問它,這是我MyDiv的案例是DIV。

我想你想要的是:

Set xobj = objIe.document.getElementById("myDiv") 

編輯其他問題
我試着這樣做,但我在Mac上:(如果我猜,我會說你應該嘗試是這樣的:

For Each obj In xobj.getElementsByClassName("data") 
    MsgBox obj 
Next 

還可以使用調試器的MSGBOX打破,你可以看到什麼是

+0

非常感謝。我犯了一個非常愚蠢的錯誤... –

+0

不用擔心,謝謝StackOverflow :) –

+0

嗨,你能幫我取得字符串「Text1:」和「Text2:」以及。提前致謝。 –