0

嗨,我正在将整个表格从网站导入到 excel 字符串:

Dim fST As String
fST = Doc.getElementsByTagName("table")(0).innerText

之后我想在excel单元格中拆分表格并使用<td>html表格中的标签进行拆分,或者至少这是我认为可以完成的选项,因此导入的表格在excel中将是相同的导入后,每个值都将位于单个单元格内。

让我知道谢谢。

这是我正在使用的整个 conde:

Private Sub Worksheet_Change(ByVal Target As Range)

 If Target.Row = Range("URL").Row And _
 Target.Column = Range("URL").Column Then
    Dim IE As New InternetExplorer
    IE.Visible = True
    IE.navigate Application.ActiveSheet.Range("URL")
    Do
        DoEvents
        Loop Until IE.readyState = READYSTATE_COMPLETE
    Dim Doc As HTMLDocument
    Set Doc = IE.document

    Dim tbl, trs, tr, tds, td, r, c

    Set tbl = Doc.getElementsByTagName("table")(0)
    Set trs = tbl.getElementsByTagName("tr")

    For r = 1 To trs.Count
        Set tds = trs(r).getElementsByTagName("td")
        For c = 1 To tds.Count
            ActiveSheet.Cells(r, c).Value = tds(c).innerText
        Next c
    Next r
    IE.Quit
 End If
End Sub

但它说错误:对象不支持以下行中的此属性或方法: For r = 1 To trs.Count

4

2 回答 2

6

编辑:测试示例

Sub Tester()

Dim IE As Object
Dim tbls, tbl, trs, tr, tds, td, r, c

Set IE = CreateObject("internetexplorer.application")

IE.navigate "http://www.w3schools.com/html/html_tables.asp"

Application.Wait Now + TimeSerial(0, 0, 4)

    Set tbls = IE.Document.getElementsByTagName("table")
    For r = 0 To tbls.Length - 1
        Debug.Print r, tbls(r).Rows.Length 
    Next r

    Set tbl = IE.Document.getElementsByTagName("table")(5)
    Set trs = tbl.getElementsByTagName("tr")

    For r = 0 To trs.Length - 1
        Set tds = trs(r).getElementsByTagName("td")
        'if no <td> then look for <th>
        If tds.Length = 0 Then Set tds = trs(r).getElementsByTagName("th")

        For c = 0 To tds.Length - 1
            ActiveSheet.Range("B4").Offset(r, c).Value = tds(c).innerText
        Next c
    Next r

End Sub
于 2013-06-13T22:28:42.653 回答
2

我也到处寻找这个问题的答案。我终于通过与实际上是通过录制宏的同事交谈找到了解决方案。

我知道,你们都认为你在这之上,但它实际上是最好的方法。在此处查看完整的帖子:http ://automatic-office.com/?p=344简而言之,您想要记录宏并转到数据 --> 从 web 并导航到您的网站并选择您想要的表格。告诉excell将它放在哪个单元格中,就是这样!

我过去使用过上述解决方案“通过 id 获取元素”类型的东西,它对于一些元素来说非常有用,但是如果你想要一个完整的表格,并且你不是超级经验,只需记录一个宏。不要告诉你的朋友,然后重新格式化它,让它看起来像你自己的作品,这样没人知道你使用了宏工具;)

于 2013-10-09T15:17:44.673 回答