2016-01-04 46 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 =系列。如果您实际上获得了选项数据,请告诉我您是如何使用该命令完成的。谢谢 –