2016-01-04 63 views
0

我能夠從yahoo.finance獲得單個選項報價,數據通過兩列(一個標題,一個數據)垂直傳遞,但所有我的試圖水平接收數據不成功。我最終試圖編寫一個命令,下載一系列選項報價,並將每行報價一次。目前,我甚至無法獲得一條水平線數據。請幫忙!Excel vba - 雅虎股票期權報價不是以csv格式下載

如果有其他免費服務(例如CBOE,Google)的方式,請告訴我。任何和所有的幫助,將不勝感激!

Sub getOption() 
    ' 
    ' Attempting to return a stock option in a csv format with all datat in either one cell or accross 5 cells in one row 
    ' data desired to Retrieve: 
    '   name = n 
    '   previous close = p 
    '   ask = a 
    '   bid = b 
    '   open interest = o1 
    ' 
    Const YAHOO_FINANCE_URL = "http://finance.yahoo.com/q/?s=SKX160122C00035000" 'retrieves option data vertically with a header, but adding &f=npbao1, /d/quotes.csv or &e=.csv makes it not work at all. 
    On Error Resume Next 
    With ActiveSheet.QueryTables.Add(Connection:="URL;" & YAHOO_FINANCE_URL, Destination:=ActiveCell) 
     .Name = "qtActiveRange" & Rnd() 
     .RefreshStyle = xlOverwriteCells 
     .AdjustColumnWidth = False 
     .BackgroundQuery = False 
     .Refresh 
    End With 

End Sub 

回答

0

我不知道的方式一氣呵成移調查詢,但你可以先放在垂直數據上的臨時範圍內,那麼它轉橫向到你的目的地範圍。

Range("D4:N5") = WorksheetFunction.Transpose(Range("A4:B14")) 

Range("A4:B14")是臨時範圍。 (我選擇單元格A1並運行您的getOption

Range("D4:N5")是我假設的目標範圍。

+0

非常感謝你的建議KS,我會嘗試,但我仍然懷疑有一些雅虎命令來做到這一點(例如,&E = .csv或.../d/quotes.csv /。 ..)。 –

0

我不知道SKX是什麼,但你可以試試這個。把你的代理人放入ColumnA,從A7開始,就像這樣。

GOOG YHOO BIDU IACI MSFT AOL YNDX INSP REDF 新浪 ADBE

然後,運行您的腳本。

Sub GetData() 


Dim yahoourl As String 
    Dim QuerySheet As Worksheet 
    Dim DataSheet As Worksheet 
    Dim qurl As String 
    Dim i As Integer 

    Set DataSheet = ActiveSheet 

    i = 7 
    yahoourl = "http://quote.yahoo.com/d/quotes.csv?s=" + Cells(i, 1) 
    i = i + 1 
    While Cells(i, 1) <> "" 
     yahoourl = yahoourl + "+" + Cells(i, 1) 
     i = i + 1 
    Wend 
    yahoourl = yahoourl + "&f=" + "l1" 

QueryQuote: 
      With ActiveSheet.QueryTables.Add(Connection:="URL;" & yahoourl, Destination:=DataSheet.Range("C7")) 
       .BackgroundQuery = True 
       .TablesOnlyFromHTML = False 
       .Refresh BackgroundQuery:=False 
       .SaveData = True 
      End With 

    Application.Calculation = xlCalculationAutomatic 
    Application.DisplayAlerts = True 
    Columns("C:C").ColumnWidth = 28# 
    Cells(2, 3).Select 
End Sub 
+0

謝謝你這個ryguy。讓我問你,是否能夠檢索選項數據:
http://quote.yahoo.com/d/quotes.csv?s=
當我嘗試它時,我收到一系列「N/A,N/A,...「表示我添加的任何&f =系列。如果您實際上獲得了選項數據,請告訴我您是如何使用該命令完成的。謝謝 –