如果表没有ID,我怎样才能将网站中的表格内容导入Microsoft Excel?

时间:2013-11-13 06:37:11

标签: html excel parsing vba excel-vba

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

这是网站:

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日:证实该网址是合法的。]

1 个答案:

答案 0 :(得分:0)

您要搜索的表位于文档根目录(<html>)下方的第21(!!!)级,并且属性设置为“表3

<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是检测&amp;排除不包含任何类元素的表元素,在这种情况下,类名上的If将失败并显示错误。

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