我的代码很简单。它导航不同工作表的不同URL,并从每个URL导入两个数据。
Public Sub import_Data()
Dim ie As InternetExplorer, htmlDoc As HTMLDocument
Dim price As String, volume As String
Dim sheet As Integer
Dim link(14), URL As String
'URL to navigate
link(1) = "https://hk.finance.yahoo.com/q?s=0017.HK&ql=0"
link(2) = "https://hk.finance.yahoo.com/q?s=0151.HK&ql=0"
link(3) = "https://hk.finance.yahoo.com/q?s=0267.HK&ql=0"
link(4) = "https://hk.finance.yahoo.com/q?s=0494.HK&ql=0"
link(5) = "https://hk.finance.yahoo.com/q?s=0700.HK&ql=0"
link(6) = "https://hk.finance.yahoo.com/q?s=0857.HK&ql=0"
link(7) = "https://hk.finance.yahoo.com/q?s=0883.HK&ql=0"
link(8) = "https://hk.finance.yahoo.com/q?s=0939.HK&ql=0"
link(9) = "https://hk.finance.yahoo.com/q?s=0992.HK&ql=0"
link(10) = "https://hk.finance.yahoo.com/q?s=1088.HK&ql=0"
link(11) = "https://hk.finance.yahoo.com/q?s=1398.HK&ql=0"
link(12) = "https://hk.finance.yahoo.com/q?s=1880.HK&ql=0"
link(13) = "https://hk.finance.yahoo.com/q?s=3328.HK&ql=0"
link(14) = "https://hk.finance.yahoo.com/q?s=3988.HK&ql=0"
Set ie = New InternetExplorer
ie.Visible = True
For sheet = 1 To 14
Worksheets(sheet).Activate
'Go to different URL for different worksheets
URL = link(sheet)
ie.navigate URL
Do Until ie.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set htmlDoc = ie.document
'pull two data from url
price = htmlDoc.getElementsByClassName("time_rtq_ticker")(0).innerText
volume = htmlDoc.getElementsByClassName("yfnc_tabledata1")(9).innerText
Cells(22, 2) = price
Cells(22, 3) = volume
Next sheet
End Sub
奇怪的是,对于每个URL,它有时可以成功导入2个数据,但有时它会卡在" DoEvents"线。
代码有什么问题?为什么它有时有效,但没有完全失败?有人可以帮我这个吗?
答案 0 :(得分:1)
我运行了你的代码,它工作正常............只是非常慢......问题是代码重新导航和到finance.yahoo
.......网站(广告等)中有很多垃圾必须反复重新加载。
加快速度: