将HTML表格数据拉入Excel表格

时间:2014-08-03 01:51:58

标签: html excel vba

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

 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%

2 个答案:

答案 0 :(得分:1)

CSS选择器:

使用"b'29.20\r\n'"的CSS选择器来获取表格

.data.data3表示课程。由于您无法在querySelector中使用复合类名,因此完整的类名已将"."替换为" "


VBA:

"."

然后可以循环遍历表格的行以及每一行中的表格单元格。您分别使用Dim hTable as HTMLTable Set hTable = objIe.document.querySelector(".data.data3") .getElementsByTagName("tr")来获取它们。使用.innerText属性可打印出表格单元格的关联值。

CSS query

答案 1 :(得分:0)

Excel可以在没有您帮助的情况下导入自己的数据。数据菜单 - 导入外部数据 - 新Web查询(Alt + D,D,W)。导入到您想要的位置(或只​​是您想要的表)。设置刷新选项。您的数据现在位于单元格中。

请记住:EXCEL是非程序员编写程序的工具。您应该在编程之前学习使用Excel。