【发布时间】:2018-05-01 11:46:55
【问题描述】:
我有这段代码可以从已打开的 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
【问题讨论】:
-
欢迎来到本站!查看tour 和how-to-ask page 了解更多关于提出问题以吸引高质量答案的信息。您可以edit your question 包含更多信息。如果您的问题被转移到Code Review,请不要感到惊讶——通常需要改进的工作代码在那里得到更好的处理。至于这一点,您也许可以使用 XSLT 呈现表格的 CSV,然后导入该文件。
-
将所有数据写入数组,然后写入 Excel 工作表一次。
-
1) 是否有 url 可以分享 2) 如果此代码按原样工作,那么如上所述,可能更适合作为优化问题进行代码审查的候选者?
标签: excel vba performance loops