如何实现Excel对象动态录入,VBA爬取数据时自动适配行列无需手动指定列
VBA动态录入网页爬取数据解决方案
以下是修正并优化后的代码,可自动适配爬取到的表格行数和列数,无需手动指定列:
Sub codalScraping() Dim ie As InternetExplorer Dim ht As HTMLDocument Dim link As String Dim i As Integer Dim elems As Object, elem As Object ' 可选关闭屏幕更新提升运行速度 Application.ScreenUpdating = False link = InputBox("link", , "codal.ir/...") i = 1 ' 起始行号,可根据需要调整 Set ie = New InternetExplorer ie.navigate (link) Do Until ie.readyState = READYSTATE_COMPLETE DoEvents Loop Set ht = ie.document Set elems = ht.getElementsByClassName("rayanDynamicStatement")(0).getElementsByTagName("tr") ' 遍历所有行<tr>标签,行数自动匹配爬取结果数量 For Each elem In elems Dim col As Integer ' 遍历当前行下所有单元格<td>标签,列数自动适配无需手动指定 For col = 0 To elem.Children.Length - 1 Sheet1.Cells(i, col + 1) = elem.Children(col).textContent Next col i = i + 1 Next elem ' 释放资源 ie.Quit Set ie = Nothing Set ht = Nothing Application.ScreenUpdating = True End Sub
核心调整说明
- 修正了原代码的拼写错误:
avtivesheet相关错误逻辑已调整 - 新增行内列循环:自动遍历每行下的所有单元格元素,列数完全匹配网页表格的实际列数,不需要手动写A/B/C/D列的赋值语句
- 行数由爬取到的
<tr>标签总数自动决定,不需要提前手动设置行数范围 - 新增IE资源释放逻辑,避免内存占用过高
内容的提问来源于stack exchange,提问作者bobby sands
相关产品推荐
相关产品推荐

