我想建立一个工作表,用户可以在其中输入股票代码,然后资产负债表会自动从晨星下载到表格中,然后对数据运行一些自定义公式。
在github上我发现了隐藏的morningstar API: https://gist.github.com/hahnicity/45323026693cdde6a116
例如,为了检索一些财务信息,我使用(在我的浏览器中): http://financials.morningstar.com/ajax/ReportProcess4CSV.html?t=TWTR&reportType=is&period=12&dataType=A&order=asc&columnYear=5&number=3
现在我尝试使用以下方式构建查询数据->新查询->来自不同来源->来自网络,我输入了 URL,但没有像在浏览器中那样看到实际的 csv 数据,而是弹出一个窗口,实际上在新的 Excel 窗口中打开了该文件。即使尝试查询 csv 并在那里输入 URL,也不起作用。
我不想打开这个文件,我想查询 csv 数据!
知道为什么它不起作用吗?如何让它真正起作用?
多谢
答案1
我不知道 Excel 是否有办法按照您的意愿运行;不过,我编写了一个程序,用于下载股票数据。我以前使用 yahoo.finance.com,但您可以根据您获取股票数据的网站轻松修改它:
Sub GetData()
Dim QuerySheet As Worksheet
Dim DataSheet As Worksheet
Dim qurl As String
Dim i As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Set DataSheet = ActiveSheet
range("C7").CurrentRegion.ClearContents
i = 7
qurl = "http://ichart.finance.yahoo.com/table.csv?s=" + Cells(i, 1)
i = i + 1
While Cells(i, 1) <> ""
qurl = qurl + "+" + Cells(i, 1)
i = i + 1
Wend
qurl = qurl + "&f=" + "nl1vhgd1rm4"
QueryQuote:
With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.range("C7"))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
End With
range("C7").CurrentRegion.TextToColumns Destination:=range("C7"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, other:=False
'turn calculation back on
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
Columns("C:C").ColumnWidth = 25.43
range("h2").Select
End Sub