【问题标题】:Pull HTML Table Data into Excel Sheet将 HTML 表格数据拉入 Excel 工作表
【发布时间】:2018-06-29 23:34:09
【问题描述】:

需要帮助。已经能够使用下面的代码打开并从网页中获取我需要的所有数据,但是它将它们全部放入一个单元格中,我似乎无法将数据分开。我希望能够将所有表格数据放入 excel 中,就好像它基本上是复制和粘贴的一样,或者将几个关键部分提取到特定的单元格中。

 Dim objIe As Object


        Set objIe = CreateObject("InternetExplorer.Application")
    objIe.Visible = True


    objIe.navigate "http://cctools/reports2/main.php"

    While (objIe.Busy Or objIe.readyState <> 4): DoEvents: Wend

     objIe.document.getElementById("submit").Click

    Set xobj = objIe.document.getElementById("reportOut")
             Sheet2.Range("A1") = xobj.innerText



    Set xobj = Nothing

    objIe.Quit
    Set objIe = Nothing
End Sub

我试过了:

 Sub Sample()
    Dim objIe As Object
    Dim TDelements As IHTMLElementCollection
Dim TDelement As HTMLTableCell

        Set objIe = CreateObject("InternetExplorer.Application")
    objIe.Visible = True

    objIe.navigate "http://cctools/reports2/main.php"

    While (objIe.Busy Or objIe.readyState <> 4): DoEvents: Wend

     objIe.document.getElementById("submit").Click

    Set xobj = objIe.document.getElementById("reportOut")
             Sheet2.Range("A1") = xobj.innerText



      r = 0
        For Each TDelement In TDelements
             'Look for required TD elements - this check is specific to VBA Express forum - modify as required
            If TDelement.className = "data data3" Then
            Sheet2.Range("A1").Offset(r, 0).Value = TDelement.innerText
            r = r + 1
            End If
        Next

    Set xobj = Nothing

    objIe.Quit
    Set objIe = Nothing
End Sub

然后得到一个

    Run Time error '424' object required 

我添加了:

Set TDelements = xobj.innerText

仍然得到相同的 424 错误。

这是我试图提取的数据中的 HTML 代码

<div id="reportOut">

    <script type="text/javascript"></script>
    <h2></h2>
    <div class="bold font_2 large black"></div>
    <table class="data data3" cellspacing="0">
        <tbody>
            <tr class="altrow"></tr>
            <tr>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td>

                    81.52%

我正在尝试提取所有表数据或仅提取 81.52%

【问题讨论】:

  • 对编码的任何帮助将不胜感激。已经尝试并知道各种其他方法来从网站获取数据以使其表现出色,但我很确定这是减少错误的最佳方法,也是我想为这个特定网页采用的方法。

标签: html excel vba


【解决方案1】:

CSS 选择器:

使用 CSS 选择器 .data.data3 抓取表格

"." 表示类。由于您不能在 querySelector 中使用复合类名,因此完整的类名将 " " 替换为 "."


VBA:

Dim hTable as HTMLTable
Set hTable = objIe.document.querySelector(".data.data3")

然后您可以循环表格的行和每行中的表格单元格。您使用.getElementsByTagName("tr").getElementsByTagName("td") 分别获得这些。使用 .innerText 属性打印出表格单元格的相关值。

【讨论】:

    【解决方案2】:

    Excel 无需您的帮助即可导入自己的数据。数据菜单 - 导入外部数据 - 新建 Web 查询(Alt + D、D、W)。导入您想要的位置(或只​​是您想要的表格)。设置刷新选项。您的数据现在位于单元格中。

    记住:EXCEL 是一个供非程序员从事编程工作的工具。在编程之前你应该学会使用 Excel。

    【讨论】:

    • 谢谢,但我完全了解该选项,它在本网站上不起作用。如果通过网络查询导入是一个选项,则 url 不会直接转到。我在其他各种网站上使用该选项,但这个选项不适用于该方法。任何有关编码的帮助将不胜感激
    • 工作的内部网站。在内网外不可用。
    • 那么你如何访问它,有哪些步骤。
    • stackoverflow.com/questions/24275797/…这说明错误是什么(服务器和对象)?
    • 网页加载您选择的选项点击提交并生成表格。当表格出现时,url 不会改变,因此无法进行 webquery。
    猜你喜欢
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多