我正在重新设计excel stock portflio的风格,只是为了好玩。到目前为止,我能够从雅虎获取数据并将其置于以下格式:MsgBox Http.ResponseText
Dim URL As String: URL = "http://finance.yahoo.com/d/quotes.csv?s=" & Symbols & "&f=snpohgkj"
Dim Http As New WinHttpRequest
Http.Open "GET", URL, False
Http.Send
我正在设置它,以便这些数据(上面)自动放入每一行。第一列将由用户填写,无论他/她持有什么,只需按一下按钮即可更新价格。
目前,每当我刷新(这与一个activeX命令按钮相关联)并且实际上尝试在excel文件中输入数据时,我得到:FilledExcelExample
这部分的代码是:
Dim Resp As String: Resp = Http.ResponseText
Dim Lines As Variant: Lines = Split(Resp, vbNewLine)
Dim sLine As String
Dim Values As Variant
For i = 0 To UBound(Lines)
sLine = Lines(i)
If InStr(sLine, ",") > 0 Then
Values = Split(sLine, ",")
W.Cells(i + 2, 2).Value = Split(Split(sLine, Chr(34) & "," & Chr(34))(1), Chr(34))(0)
W.Cells(i + 2, 3).Value = Values(UBound(Values) - 5)
W.Cells(i + 2, 4).Value = Values(UBound(Values) - 4)
W.Cells(i + 2, 5).Value = Values(UBound(Values) - 3)
W.Cells(i + 2, 6).Value = Values(UBound(Values) - 2)
W.Cells(i + 2, 7).Value = Values(UBound(Values) - 1)
W.Cells(i + 2, 8).Value = Values(UBound(Values))
End If
Next i
W.Cells.Columns.AutoFit
目前似乎第一家公司需要正确的名称,但没有采取适当的价格(看起来像上一家公司的价格)。我一直盯着这个太长时间才找到错误。任何人都可以帮助将正确的数据放在正确的列中吗?
答案 0 :(得分:0)
您正在vbNewLine
(又名vbCrLf
或Chr(13) & Chr(10)
)拆分下载的CSV,但Feed仅使用换行符(又名vbLf
或Chr(10)
)作为行终止符。它类似于HTML中<p>
与<br/>
之间的差异,或 Shift + 上的Enter↵之间的区别Microsoft 在Microsoft Word中。
Dim Lines As Variant: Lines = Split(Resp, vbLf)
这应该可以帮到你。
基本上,CSV没有被分成单独的行;这只是一条长线。您从该行的开头收集了正确的名称,并从最后收集了股票价格。