Jak pobrać cenę akcji w programie Excel 2013? Czy istnieje odpowiednik funkcji arkusza kalkulacyjnego GoogleFinance w Google Doc?

8

W arkuszu kalkulacyjnym Dokumentów Google mogę użyć tej formuły komórkowej:

=GoogleFinance("GOOG", "price")

aby pobrać najnowszą cenę akcji. Czy istnieje równoważna funkcja w programie Excel 2013?

Wcześniejsze wersje programu Excel miały funkcję inteligentnego tagu, która pobierała masę danych dla każdego tikera (w rzeczywistości zbyt dużo, jeśli potrzebujesz tylko ceny), i widziałem źródła, które sugerują aplikację Bing Finance dla programu Excel 2013. Niestety zostało to przerwane.

Czy istnieje prosty sposób to zrobić? Potrzebuję dosłownie najnowszej ceny i nie dbam o to, czy jest opóźniona, pochodzi z Yahoo Finance itp. Prawdopodobnie mógłbym napisać kod VBA, aby pobrać plik CSV z YF, przeanalizować i tak dalej, ale jestem mając nadzieję, że unikniesz tworzenia skoroszytu z obsługą makr.

Michael A.
źródło
Nie jest to funkcja obsługiwana przez program Excel po wyjęciu z pudełka
Ramhound
1
Czy w programach Excel 2007/2010 data - existing connection - MSN MoneyCentral Investory Stock Quoteszostało to usunięte na 2013 rok? edycja - tak, wygląda na to, że został usunięty, a aplikacja Bing Finance to „zamiennik”. Mógłbyś ustawić data - from webzapytanie do MSN pieniędzy, ale byłoby to uciążliwe.
Raystafarian
@Raystafarian Jak skonfigurować nowe zapytanie o dane?
Michael A
Wygląda na to, że możesz potrzebować użyć zapytania o moc w źródle z
Raystafarian,
1
@harrymc Nie jestem OP, ale myślę, że najcenniejszą odpowiedzią byłoby coś, co wykorzystuje istniejącą funkcjonalność w programie Excel 2013 i / lub jest bezpłatne.
Excellll

Odpowiedzi:

5

Możesz użyć takiego 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

Teraz możesz użyć GetTickerPrice("GOOG")i uzyskać aktualną cenę.


Przeszedłem to do Codereview.SE w celu uzyskania danych wejściowych.

Raystafarian
źródło
2
Czy nie byłoby lepiej sformatować jako Double zamiast Long, aby nie stracić informacji dziesiętnych? Następnie użytkownik końcowy może zdecydować, czy chce go zaokrąglić.
Jonno
Dzięki, to działa! Ale to naprawdę powolne - około 20 sekund, aby uzyskać jedną cenę akcji. Zakładam, że otwieranie IE i ładowanie adresu URL są wąskie gardła. Czy można to obejść?
Excellll,
@Jonno tak, widzę, że Excellll dokonał zmiany
Raystafarian
@Excellll Spróbuję sprawdzić, czy jest jakiś sposób obejścia tego problemu, być może zmuszając IE do milczenia, ale jeśli nie znajdziemy bazy danych takiej jak kiedyś, możemy utknąć (przynajmniej w przypadku starszych wersji programu Excel).
Raystafarian,
1
@Excellll w CodeReview jest całkiem przyzwoita odpowiedź na moje podejście. Wygląda na to, że jest na tyle inny, że nie byłby traktowany tak samo jak moja odpowiedź.
Raystafarian
-1

Istnieje dodatek o nazwie Stock Quote Add-In dla programu Excel 2013, który to robi i ma wersję na 2013 rok. Osobiście nie mogłem go uruchomić, ale istnieje już od kilku lat, więc prawdopodobnie był to tylko ja .

Jeremy Shaw
źródło
2
Witamy w Super User. Pomaga to odpowiedzieć na pytanie, ale czy możesz dodać informacje o tym, jak należy używać tej wtyczki?
LJD200