【问题标题】:Import tables from a webpage to excel从网页导入表格到 Excel
【发布时间】:2014-01-16 21:28:15
【问题描述】:

我只有中高级的excel和VBA的中级背景和excel。我想要做的是从链接中出现的这样的网页导入表格:http://www.admision.unmsm.edu.pe/res20130914/A/011/0.html

该网页显示 39 个链接,每个链接包含一个表格。 所以我想知道一种将所有这些表导入到 excel 中的自动方法。

【问题讨论】:

  • 在 Excel 中查看 Get External data From Web(在 Excel 2010 中,在“数据”选项卡上)
  • 我刚刚修改过,但似乎我必须逐页手动提取表格,并且有 40 页相似,唯一的区别是表格中有不同的元素。例如,我想要一种自动方法来从 100 个具有相同结构的页面中提取表格。
  • Get External data 是一个很好的方法。您可以在工作簿中创建 40 个表(每个链接一个)或一个表,使用一些 VBA 循环链接并更新连接字符串并刷新。
  • 我明白了,我应该使用哪个代码 vba 从网页中提取表格?
  • thisthis

标签: vba excel web


【解决方案1】:

此代码从所有链接中获取数据。

Sub Extract_data()

    Dim url As String, links_count As Integer
    Dim i As Integer, j As Integer, row As Integer
    Dim XMLHTTP As Object, html As Object
    Dim tr_coll As Object, tr As Object
    Dim td_coll As Object, td As Object

    links_count = 39
    For i = 0 To links_count

        url = "http://www.admision.unmsm.edu.pe/res20130914/A/011/" & i & ".html"

        Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
        XMLHTTP.Open "GET", url, False
        XMLHTTP.send

        Set html = CreateObject("htmlfile")
        html.body.innerHTML = XMLHTTP.ResponseText

        Set tbl = html.getelementsbytagname("Table")

        Set tr_coll = tbl(0).getelementsbytagname("TR")

        For Each tr In tr_coll
            j = 1
            Set td_col = tr.getelementsbytagname("TD")

            For Each td In td_col
                Cells(row + 1, j).Value = td.innerText
                j = j + 1
            Next
            row = row + 1
        Next
    Next

    MsgBox "Done"
End Sub

【讨论】:

    猜你喜欢
    • 2019-10-10
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    相关资源
    最近更新 更多