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.


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.


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 .


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.