如何在Excel 2013中下载股票价格?是否有与Google Doc的GoogleFinance电子表格功能等效的功能?


8

在Google文档电子表格中,我可以使用以下单元格公式:

=GoogleFinance("GOOG", "price")

下载股票的最新价格。Excel 2013中是否有等效功能?

Excel的早期版本具有智能标记功能,可以为每个股票下载大量数据(实际上,如果您只需要价格,则太多了),而且我见过一些资料表明建议使用Bing Finance应用程序来支持Excel2013。不幸的是,这已经停产了。

有没有简单的方法可以做到这一点?我实际上只是需要最新的价格,并且我不关心它是否延迟,例如Yahoo Finance等。大概我可以编写VBA代码从YF下载CSV文件,进行解析等等,但是我希望避免创建启用宏的工作簿。


Excel不能立即使用此功能
Ramhound14年

1
在Excel 2007/2010 data - existing connection - MSN MoneyCentral Investory Stock Quotes作品中,是否已在2013年删除此作品?编辑 -是的,看起来它已被删除,Bing Finance App是“替换”。您可以设置一个data - from web查询msn money的方法,但这将很乏味。
Raystafarian 2014年

@Raystafarian我将如何设置新的数据查询?
迈克尔

看来您可能需要在2013 来源中使用功率查询
Raystafarian 2014年

1
@harrymc我不是OP,但我认为最有价值的答案是使用Excel 2013中的现有功能和/或免费的。
Excellll

Answers:


5

您可以使用这样的UDF-

Option Explicit

Public Function GetTickerPrice(ByVal ticker As String) As Double

    Dim IE As Object
    Dim pageData As Object

    Set IE = CreateObject("InternetExplorer.Application")
    Dim URL As String
    URL = "http://www.msn.com/en-us/money/stockdetails/fi-126.1." & ticker & ".NAS?symbol=" & ticker & "=PRFIMQ"

    IE.Navigate URL

     Do Until IE.ReadyState >= 4
            DoEvents
     Loop

     Application.Wait Now + TimeSerial(0, 0, 5)

     Set pageData = IE.document

     GetTickerPrice = pageData.getElementsByClassName("precurrentvalue")(0).innertext

     Set IE = Nothing
     Set pageData = Nothing
End Function

现在您可以使用GetTickerPrice("GOOG")并获取当前价格。


我确实将其转移到Codereview.SE进行了一些输入。


2
最好将格式设置为Double而不是Long,这样就不会丢失小数信息吗?然后,最终用户可以决定是否要四舍五入。
Jonno

谢谢,这有效!但这确实很慢-获得股票价格大约需要20秒。我假设打开IE并加载URL,但存在瓶颈。反正有解决这个问题的方法吗?
Excellll '16

@Jonno是的,我看到Excellll做出了更改
Raystafarian

@Excellll我将尝试查看是否有解决方法,可能迫使IE保持静默,但除非我们能找到以前那样的数据库,否则我们可能会卡住(至少对于旧版本的excel)。
Raystafarian

1
@Excellll 在CodeReview上对我的方法给出了相当不错的答复。似乎已经足够不同,因此不会与我的答案相同。
Raystafarian


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.