Come faccio a scaricare un prezzo delle azioni in Excel 2013? Esiste un equivalente alla funzione di foglio di calcolo GoogleFinance di Google Doc?


8

In un foglio di calcolo di Google Documenti, posso usare questa formula di cella:

=GoogleFinance("GOOG", "price")

per scaricare l'ultimo prezzo di uno stock. Esiste una funzione equivalente in Excel 2013?

Le versioni precedenti di Excel avevano una funzionalità di smart tag che scaricava una tonnellata di dati per ogni ticker (troppo, in effetti, se hai solo bisogno del prezzo), e ho visto fonti che suggeriscono l' app Bing Finance per Excel 2013. Sfortunatamente questo è stato sospeso.

C'è un modo semplice per fare questo? Ho letteralmente solo bisogno del prezzo più recente, e non mi importa se è in ritardo, proviene da Yahoo Finance, ecc. Presumibilmente potrei scrivere il codice VBA per scaricare un file CSV da YF, analizzarlo e così via, ma sono sperando di evitare la creazione di una cartella di lavoro abilitata per le macro.


Questa non è una funzionalità che Excel supporta
immediatamente

1
In Excel 2007/2010 è data - existing connection - MSN MoneyCentral Investory Stock Quotesstato rimosso per il 2013? modifica - sì, sembra che sia stato rimosso e l'app Bing Finance è la "sostituzione". È possibile impostare una data - from webquery per inviare denaro, ma sarebbe noioso.
Raystafarian,

@Raystafarian Come impostare una nuova query di dati?
Michael,

Sembra che potresti aver bisogno di usare la power query nel 2013 fonte
Raystafarian

1
@harrymc Non sono l'OP, ma penso che la risposta più preziosa sarebbe qualcosa che utilizza la funzionalità esistente in Excel 2013 e / o è gratuita.
Eccellente

Risposte:


5

Puoi usare un UDF come questo -

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

Ora puoi utilizzare GetTickerPrice("GOOG")e ottenere il prezzo corrente.


L'ho portato su Codereview.SE per alcuni suggerimenti .


2
Non sarebbe meglio formattare come doppio anziché lungo, in modo da non perdere le informazioni decimali? Quindi l'utente finale può decidere se desidera arrotondarlo.
Jonno,

Grazie, funziona! Ma è davvero lento - circa 20 secondi per ottenere un prezzo delle azioni. Suppongo che aprendo IE e caricando l'URL ci siano i colli di bottiglia. C'è un modo per aggirarlo?
Eccellente il

@Jonno sì, vedo che Excellll ha apportato la modifica
Raystafarian

@Excellll Proverò a vedere se c'è un modo per aggirarlo, forse forzando IE a tacere, ma a meno che non riusciamo a trovare un database come prima, potremmo essere bloccati (almeno per le versioni precedenti di Excel).
Raystafarian

1
@Excellll c'è una risposta abbastanza decente a CodeReview al mio approccio. Sembra che sia abbastanza diverso da non essere considerato uguale alla mia risposta.
Raystafarian


-1

Esiste un componente aggiuntivo chiamato Componente aggiuntivo quotazioni di borsa per Excel 2013 che esegue questa operazione e ha una versione per il 2013. Personalmente non sono riuscito a farlo funzionare, ma è in circolazione da alcuni anni, quindi probabilmente ero solo io .


2
Benvenuto in Super User. Questo aiuta a rispondere alla domanda ma potresti aggiungere informazioni su come usare questo plugin?
LJD200,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.