【问题标题】:error parsing HTML with excel vba使用 excel vba 解析 HTML 时出错
【发布时间】:2017-09-13 15:12:08
【问题描述】:

所以由于限制,我需要用excel vba解析一些难看的html。 HTML 的问题在于它没有元素 ID。我有一个页面,其中有许多未标记的表,每个表都有几行。我唯一可以构建的是在我需要提取的一个单元格中有一个标识符。每次 ID“xtu_id”作为值出现在表格行的单元格中时,我都想从该行中提取数据。所以它看起来像这样:

<tr>



<td>

                    col1

</td>


<td>

                    col2

</td>


<td>

                    xtu_id

</td>


<td>

                    col4

</td>


</tr>  

现在我看到 xtu_id 存在于该行中,我想将该行的所有单元格转储到 Excel 表中。这是我在阅读其他 stackoverflow 帖子时使用的:

Sub CommandButton1_Click()

    Dim appIE As InternetExplorerMedium
    Set appIE = New InternetExplorerMedium

    With appIE
        .Navigate "https://my_website"
        .Visible = True
    End With

    Do While appIE.Busy Or appIE.ReadyState <> 4
        DoEvents
    Loop

    Set mydata = appIE.Document.getElementsByTagName("tr")

    For Each e In mydata
        For Each c In e
            If c.Cells().innerText Like "xtu_id" Then
                myValue = c.Cells().innerText
                MsgBox (myValue)
            End If
        Next c
    Next e
    Set appIE = Nothing

End Sub

此代码一直有效,直到我到达 [for each...] 语句,我无法循环遍历每一行的每个单元格以搜索“xtu_id”文本。关于如何做到这一点的任何想法?

【问题讨论】:

    标签: html vba excel


    【解决方案1】:

    试试这个:

    For Each c In e.Cells
        If c.innerText Like "xtu_id" Then
            myValue = e.innerText
            MsgBox (myValue)
        End If
    Next c
    

    【讨论】:

    • 感谢 Scott 的快速回复,我将其换入并没有得到值,但代码没有出错。也许我的 if 语句不正确
    • 你有没有逐行调试?我之前提供的answer 可能会有所帮助。
    • 感谢 Scott 的帮助,所以我将 e.innertext 换成 c.innertext 以提取单元格值并得到我想要的。你的回答是正确的,我的错是我不清楚我想拉什么绳子。再次感谢!
    猜你喜欢
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多