为什么使用VBA将数据从html表格写入excel表格时速度较慢?
VBA代码工作正常,但写入数据需要很长时间,是否有其他方法从html表/url获取数据为什么使用VBA将数据从html表格写入excel表格时速度较慢?,html,excel,vba,Html,Excel,Vba,VBA代码工作正常,但写入数据需要很长时间,是否有其他方法从html表/url获取数据 Sub pull_option_data() Dim tod As String, UnderLay As String, exp As String Dim IE As Object Dim doc As HTMLDocument Dim Tbl As HTMLTable, Cel As HTMLTableCell, Rw As HTMLTableR
Sub pull_option_data()
Dim tod As String, UnderLay As String, exp As String
Dim IE As Object
Dim doc As HTMLDocument
Dim Tbl As HTMLTable, Cel As HTMLTableCell, Rw As HTMLTableRow, Col As HTMLTableCol
Dim TrgRw As Long, TrgCol As Long
'START INTERNET EXPLORER AND NAVIGATE TO URL
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
Dim ColOff As Long
For Nurl = 2 To 151
UnderLay = ThisWorkbook.Sheets("URLList").Range("A" & Nurl).Value
ColOff = (Nurl - 2) * 23
TrgRw = 1
IE.navigate "https://nseindia.com/live_market/dynaContent/live_watch/option_chain/optionKeys.jsp?segmentLink=17&instrument=" & UnderLay & ""
Do While IE.Busy Or IE.readyState <> 4
Application.Wait DateAdd("s", 1, Now)
Loop
'GET DATA FROM TABLE AND PUT TO SHEET
Set doc = IE.document
Set Tbl = doc.getElementById("octable")
TrgRw = TrgRw
For Each Rw In Tbl.Rows
TrgCol = 1
For Each Cel In Rw.Cells
ThisWorkbook.Sheets("Sheet1").Cells(TrgRw, ColOff + TrgCol).Value = Cel.innerText
TrgCol = TrgCol + Cel.colSpan
Next Cel
TrgRw = TrgRw + 1
Next Rw
TrgRw = TrgRw + 1
Next Nurl
End Sub
Sub-pull_选项_数据()
标注tod为字符串、参考底图为字符串、exp为字符串
模糊的物体
作为HTMLDocument的Dim doc
Dim Tbl为HTMLTable,Cel为HTMLTableCell,Rw为HTMLTableRow,Col为HTMLTableCol
变暗TrgRw为长,TrgCol为长
'启动INTERNET EXPLORER并导航到URL
设置IE=CreateObject(“InternetExplorer.Application”)
可见=真实
暗淡的科洛夫一样长
对于Nurl=2至151
参考底图=ThisWorkbook.Sheets(“URLList”).Range(“A”&Nurl).Value
科洛夫=(努尔-2)*23
TrgRw=1
即“导航”https://nseindia.com/live_market/dynaContent/live_watch/option_chain/optionKeys.jsp?segmentLink=17&instrument=“参考底图(&U)”
在忙或准备状态4时执行
Application.Wait DateAdd(“s”,1,Now)
环
'从表中获取数据并放到工作表中
Set doc=IE.document
设置Tbl=doc.getElementById(“八进制”)
TrgRw=TrgRw
对于Tbl.行中的每个Rw
TrgCol=1
对于Rw.单元格中的每个单元格
ThisWorkbook.Sheets(“Sheet1”).单元格(TrgRw、ColOff+TrgCol)。值=Cel.innerText
TrgCol=TrgCol+Cel.colSpan
下一个细胞
TrgRw=TrgRw+1
下一个Rw
TrgRw=TrgRw+1
下一个努尔
端接头
考虑任务的更具程序性的解决方案:
- 在过程顶部添加application.ScreenUpdate=False
- 以数组形式获取.Sheets(“urlist”)中的所有值李>
- 创建新的二维阵列。将工作表中的键写入第1列,查找HTML表结果(按您的操作),并将结果保存在第2列中
- 最后,只需粘贴整个数组,而不是在工作表中循环