提高IE表导入的速度

时间:2018-05-01 11:46:56

标签: excel vba performance loops

我有这个代码从已经打开的Internet Explorer文档中提取数据。问题是,表格很大(30x5000),使用For循环将所有数据移动到工作表中需要1分钟以上。如果可能的话,我希望更快地获得这种数据传输。是否可以将整个页面复制/粘贴到工作表中?还有其他解决方案吗?

 Set doc = ie.Document
 Set hTable = doc.GetElementsByTagName("table")

 For Each tb In hTable

    Set hBody = tb.GetElementsByTagName("tbody")
    For Each bb In hBody

        Set hTR = bb.GetElementsByTagName("tr")
        For Each tr In hTR

             Set hTD = tr.GetElementsByTagName("td")
             y = 1 ' Resets back to column A
             For Each td In hTD
               ws.Cells(z, y).Value = td.innertext
               y = y + 1
             Next td
             DoEvents
             z = z + 1
        Next tr
        Exit For
    Next bb
Exit For
Next tb

1 个答案:

答案 0 :(得分:0)

循环本质上很慢。您可以尝试使用宏记录器导入整个表。我不确定那会更快。您没有提供URL,因此无法测试此概念。如果您无法使用Excel加速,请考虑使用R或Python执行相同操作。我个人经历了大约10,000倍的改进,甚至在使用R或Python而不是Excel的几个进程中提高了100,000倍。