0

我有这个网站,我想将表中的数据获取到 Microsoft Excel。
我使用了许多 VBA 示例,但无法让它们中的任何一个工作,因为表格在表格标记(在 HTML 中)中没有名称或 ID。

这是网站:

http://www.tadawul.com.sa/wps/portal/!ut/p/c1/04_SB8K8xLLM9MSSzPy8xBz9CP0os3g_A-ewIE8TIwN3Q0tDA0_v4EDLUCNHIwMvc6B8JJK8QbCpgYGniU9YiLOPu7GBgQFJut0DwkxBuoONggO8jA08jQjo9vPIz03Vj9SPMsepyslUP0Q_0hmoKBKvooLc0IhyQ91AAJDgZts!/dl2/d1/L0lDUmlTUSEhL3dHa0FKRnNBL1lCUlp3QSEhL2Vu/?symbol=4003&tabOrder=2&chart_type=chart_oneDay&announcmentNumber=&isAnnual=

如何“抓取”表格数据并将其放入 Excel?

[编者注 11 月 13 日:验证 URL 是合法的。]

4

1 回答 1

0

您要查找的表位于文档根 ( <html>) 以下的第 21 (!!!) 级,并且其属性设置为“ Table3 ”的值

<table width="100%" cellspacing="1" cellpadding="0" border="0" class="Table3">

它在整个 HTML 中只使用一次,因此提供了一个相当好的选择标准。所以我建议你做类似的事情

Dim Doc As MSHTML.HTMLDocument
Dim ECol As MSHTML.IHTMLElementCollection
Dim IFld As MSHTML.IHTMLElement

    Set ECol = Doc.getElementsByTagName("table")
    For Each IFld In ECol
        If VarType(IFld.getAttribute("class")) <> vbNull Then
            If IFld.getAttribute("class") = "Table3" Then

                ' further process the Inner HTML of IFld ...

            End If
        End If
    Next
' ...

在检查 String 值之前先检查 VarType 是为了检测并排除不包含任何类元素的表元素,在这种情况下,Ifon 类名将失败并出现错误。

VBA 调试器和F8关键是你的朋友!

于 2013-11-13T08:18:02.980 回答