¿Cómo descargo el precio de una acción en Excel 2013? ¿Existe un equivalente a la función de hoja de cálculo GoogleFinance de Google Doc?

8

En una hoja de cálculo de Google Docs, puedo usar esta fórmula de celda:

=GoogleFinance("GOOG", "price")

para descargar el último precio de una acción. ¿Hay una función equivalente en Excel 2013?

Las versiones anteriores de Excel tenían una función de etiqueta inteligente que descargaba una tonelada de datos para cada ticker (demasiado, de hecho, si solo necesita el precio), y he visto fuentes que sugieren la aplicación Bing Finance para Excel 2013. Desafortunadamente Esto ha sido descontinuado.

¿Hay una manera simple de hacer esto? Literalmente solo necesito el precio más reciente, y no me importa si se retrasa, proviene de Yahoo Finance, etc. Presumiblemente podría escribir el código VBA para descargar un archivo CSV de YF, analizarlo, etc., pero estoy con la esperanza de evitar crear un libro habilitado para macros.

Michael A
fuente
Esta no es una característica que Excel admite de
fábrica
1
En Excel 2007/2010 data - existing connection - MSN MoneyCentral Investory Stock Quotesfunciona, ¿se eliminó esto para 2013? editar : sí, parece que se eliminó y la aplicación Bing Finance es el "reemplazo". Puede configurar una data - from webconsulta para msn money, pero eso sería tedioso.
Raystafarian
@Raystafarian ¿Cómo configuraría una nueva consulta de datos?
Michael A
Parece que es posible que necesite usar Power
Consulta
1
@harrymc No soy el OP, pero creo que la respuesta más valiosa sería algo que use la funcionalidad existente en Excel 2013 y / o sea gratis.
Excellll

Respuestas:

5

Puede usar un UDF como este:

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

Ahora puede usar GetTickerPrice("GOOG")y obtener el precio actual.


Llevé esto a Codereview.SE para obtener información.

Raystafarian
fuente
2
¿No sería mejor formatear como Doble en lugar de Largo, para no perder la información decimal? Luego, el usuario final puede decidir si desea redondearlo.
Jonno
Gracias, esto funciona! Pero es realmente lento: unos 20 segundos para obtener el precio de una acción. Supongo que abrir IE y cargar la URL son los cuellos de botella. ¿Hay alguna forma de evitar esto?
Excellll
@ Jonon sí, veo que Excellll hizo el cambio
Raystafarian
@Excellll Intentaré ver si hay alguna forma de evitarlo, tal vez forzando a IE a permanecer en silencio, pero a menos que podamos encontrar una base de datos como solía haberla, podríamos estar atascados (al menos para versiones anteriores de Excel).
Raystafarian
1
@Excellll hay una respuesta bastante decente en CodeReview a mi enfoque. Parece que es lo suficientemente diferente como para que no se considere lo mismo que mi respuesta.
Raystafarian
-1

Hay un complemento llamado Stock Quote Add-In For Excel 2013 que hace esto y tiene una versión para 2013. Personalmente, no pude hacerlo funcionar, pero ha existido durante algunos años, así que probablemente solo fui yo .

Jeremy Shaw
fuente
2
Bienvenido a Super User. Esto ayuda a responder la pregunta, pero ¿podría agregar información sobre cómo se debe usar este complemento?
LJD200