我有这个代码从已经打开的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
答案 0 :(得分:0)
循环本质上很慢。您可以尝试使用宏记录器导入整个表。我不确定那会更快。您没有提供URL,因此无法测试此概念。如果您无法使用Excel加速,请考虑使用R或Python执行相同操作。我个人经历了大约10,000倍的改进,甚至在使用R或Python而不是Excel的几个进程中提高了100,000倍。