Comment télécharger un cours boursier dans Excel 2013? Existe-t-il un équivalent de la fonction de feuille de calcul GoogleFinance de Google Doc?

8

Dans une feuille de calcul Google Documents, je peux utiliser cette formule de cellule:

=GoogleFinance("GOOG", "price")

pour télécharger le dernier prix d'un stock. Existe-t-il une fonction équivalente dans Excel 2013?

Les versions antérieures d'Excel comportaient une fonctionnalité de balise active qui permettait de télécharger une tonne de données pour chaque ticker (trop, en fait, si vous aviez juste besoin du prix), et j'ai vu des sources suggérer l' application Bing Finance pour Excel 2013. Malheureusement cela a été abandonné.

Y a-t-il un moyen simple de faire cela? J'ai littéralement besoin du prix le plus récent, et je me fous de savoir s'il est retardé, vient de Yahoo Finance, etc. Je suppose que je pourrais écrire du code VBA pour télécharger un fichier CSV à partir de YF, le parser, etc. en espérant éviter de créer un classeur prenant en charge les macros.

Michael A
la source
Ce n’est pas une fonctionnalité prise en charge par Excel
prête à l'emploi
1
Dans Excel 2007/2010 Works data - existing connection - MSN MoneyCentral Investory Stock Quotes, cela at -il été supprimé pour 2013? modifier - ouais, on dirait qu’il a été supprimé et que Bing Finance App est le "remplaçant". Vous pouvez configurer une data - from webrequête sur msn money, mais ce serait fastidieux.
Raystafarian
@Raystafarian Comment définir une nouvelle requête de données?
Michael A
Il semble que vous ayez peut-être besoin d'utiliser Power Query en 2013 source
Raystafarian le
1
@harrymc Je ne suis pas l'OP, mais je pense que la réponse la plus utile serait d'utiliser les fonctionnalités existantes d'Excel 2013 et / ou d'être gratuites.
Excellll

Réponses:

4

Vous pouvez utiliser un fichier UDF comme celui-ci -

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

Maintenant, vous pouvez utiliser GetTickerPrice("GOOG")et obtenir le prix actuel.


J'ai pris ceci à Codereview.SE pour une entrée.

Raystafarian
la source
2
Ne serait-il pas préférable de formater en tant que Double au lieu de Long pour ne pas perdre les informations décimales? Ensuite, l'utilisateur final peut décider s'il veut l'arrondir.
Jonno
Merci, ça marche! Mais c'est vraiment lent - environ 20 secondes pour obtenir un cours de bourse. Je suppose que si vous ouvrez IE et que vous chargez l'URL, il existe des goulots d'étranglement. Est-il possible de contourner ce problème?
Excellll
@ Jonno oui, je vois que l'excellent a fait le changement
Raystafarian
@Excellll Je vais essayer de voir s'il existe un moyen de contourner le problème, en forçant peut-être IE à rester silencieux, mais si nous ne pouvons pas trouver une base de données comme avant, nous risquons de rester bloqués (du moins pour les anciennes versions d'Excel).
Raystafarian
1
@ Excellent, il y a une réponse assez décente chez CodeReview à mon approche. Il semble que ce soit suffisamment différent pour que cela ne soit pas considéré comme identique à ma réponse.
Raystafarian
-1

Il existe un complément appelé Stock Quote Add-In pour Excel 2013 , doté d'une version pour 2013. Personnellement, je ne pouvais pas le faire fonctionner, mais il existe depuis quelques années, alors c'était probablement juste moi. .

Jeremy Shaw
la source
2
Bienvenue sur Super User. Cela aide à répondre à la question mais pourriez-vous éventuellement ajouter des informations sur la manière dont ce plugin devrait être utilisé?
LJD200