我正在使我使用 Excel VBA 编写的程序更快。
该程序从 asx 下载股票市场数据。
我想从 2 个 url 获取数据:
我的代码
url2 = "http://ichart.finance.yahoo.com/table.txt?s=bhp.ax"
Set XMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
XMLHTTP.Open "GET", url2, False
XMLHTTP.send
result = XMLHTTP.responseText
ActiveCell.Value = result
Set XMLHTTP = Nothing
URL 1. http://ichart.finance.yahoo.com/table.txt?s=bhp.ax
我的问题。
这个文件非常大。我想我可以简单地存储这些 http 请求的结果并将其打印到调试窗口或直接打印到单元格。然而这些方法似乎切断了部分数据?
如果我在notepad++中从url 2下载txt文件,它有将近200 000个字符 但它的数量在 3 -5 000 之间。处理这些请求的最佳方法是什么,以便捕获所有数据并且我可以稍后解析它们?
URL 2. 从第一个 URL 开始,我只需要 YQL 查询产生的 JSON 数据。
我的问题
当您点击下面的链接时,我不确定如何仅获取 json 数据,或者如何存储它,以便不会出现 URL 1 遇到的问题(丢失数据)。
http://developer.yahoo.com/yql/console/?q=select%20symbol%2C%20ChangeRealtime%20from%20yahoo.finance.quotes%20where%20symbol%20in%20%28%22YHOO%22%2C%22AAPL%22%2C%22GOOG%22%2C%22MSFT%22%29%20|%20sort%28field%3D%22ChangeRealtime%22%2C%20descending%3D%22true%22%29%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env#h=select%20 *%20from%20yahoo.finance.quotes%20where%20symbol%20in%20%28%22bhp.ax%22%29
非常感谢,乔什。
最佳答案
尝试修改后的代码
Sub GetYahooFinanceTable()
Dim sURL As String, sResult As String
Dim oResult As Variant, oData As Variant, R As Long, C As Long
sURL = "http://ichart.finance.yahoo.com/table.txt?s=bhp.ax"
Debug.Print "URL: " & sURL
sResult = GetHTTPResult(sURL)
oResult = Split(sResult, vbLf)
Debug.Print "Lines of result: " & UBound(oResult)
For R = 0 To UBound(oResult)
oData = Split(oResult(R), ",")
For C = 0 To UBound(oData)
ActiveSheet.Cells(R + 1, C + 1) = oData(C)
Next
Next
Set oResult = Nothing
End Sub
Function GetHTTPResult(sURL As String) As String
Dim XMLHTTP As Variant, sResult As String
Set XMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
XMLHTTP.Open "GET", sURL, False
XMLHTTP.Send
Debug.Print "Status: " & XMLHTTP.Status & " - " & XMLHTTP.StatusText
sResult = XMLHTTP.ResponseText
Debug.Print "Length of response: " & Len(sResult)
Set XMLHTTP = Nothing
GetHTTPResult = sResult
End Function
这会将数据分成行,因此单元格中不会达到最大文本长度。此外,这还用逗号将数据进一步分割到相应的列中。
关于excel vba http请求从雅虎财经下载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18163560/