VBA将HTML导入表的结果拆分为excel

您好,我从一个网站导入整个表excelstring:

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

之后,我想分割Excel表格里面的Excel单元格和拆分使用HTML表中的<td>标签,或者至less这是我认为可以做到的选项,所以导入的表将是同样在excel里面,一旦导入,每个值都会在个别单元格内。

让我知道谢谢。

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

 Private Sub Worksheet_Change(ByVal Target As Range) 

如果Target.Row = Range(“URL”)。Row和_ Target.Column = Range(“URL”)。然后Dim IE作为新的InternetExplorer IE.Visible = True IE.navigate Application.ActiveSheet.Range(“URL” )DoEvents循环直到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 

万一

结束小组

但它说错误:对象不支持此属性或方法在以下行:对于r = 1到trs.Count

编辑 :testing的例子

 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 

我也仔细查看了这个问题的答案。 我终于find了一个解决scheme,通过与一个同事通话,而这个同事实际上是通过录制一个macros。

我知道,你们都认为你们高于此,但实际上这是最好的办法。 看到完整的post在这里: http : //automatic-office.com/?p=344总之,你想loggingmacros,并从数据 – >从网页导航到您的网站,并select你想要的表。 告诉excell哪个单元格放在里面,多数民众赞成它!

我已经使用了上面的解决scheme,“过去一个一个的获取ID”types的东西,这对于一些元素来说是好的,但是如果你想要一个整个表,而且你不是超级有经验的人,那么只需要logging一个macros。 不要告诉你的朋友,然后重新格式化它看起来像你自己的工作,所以没有人知道你使用macros工具;)