vba html 页面访问的宏内部文本

vba macro innertext of html page access

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:

<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 命令查看内部文本,但是在内部文本中获取 classname 时出现错误:

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

请帮我想办法获取class"data"

的内文

您正在尝试通过 TAGNAME 访问它,在 MyDiv 的情况下,它是 DIV。

我想你想要的是:

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

编辑附加问题
我试过这样做,但我在 Mac :( 如果我猜的话,我会说你应该尝试这样的事情:

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

同样用调试器在MsgBox上打断,可以看到对象里面有什么