更正解释CSV数据时的错误

时间:2015-11-05 03:53:46

标签: excel vba csv

我正在重新设计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

目前似乎第一家公司需要正确的名称,但没有采取适当的价格(看起来像上一家公司的价格)。我一直盯着这个太长时间才找到错误。任何人都可以帮助将正确的数据放在正确的列中吗?

1 个答案:

答案 0 :(得分:0)

您正在vbNewLine(又名vbCrLfChr(13) & Chr(10))拆分下载的CSV,但Feed仅使用换行符(又名vbLfChr(10))作为行终止符。它类似于HTML中<p><br/>之间的差异,或 Shift + 上的Enter↵之间的区别Microsoft 在Microsoft Word中。

Dim Lines As Variant: Lines = Split(Resp, vbLf)

这应该可以帮到你。

基本上,CSV没有被分成单独的行;这只是一条长线。您从该行的开头收集了正确的名称,并从最后收集了股票价格。