Як завантажити ціну акцій у Excel 2013? Чи існує еквівалент функції електронної таблиці GoogleFinance в Doc?


8

У таблиці Google Docs я можу використовувати формулу комірки:

=GoogleFinance("GOOG", "price")

завантажити останню ціну акції. Чи існує еквівалентна функція в Excel 2013?

Раніші версії Excel мали функцію розумного тегу, яка завантажувала тонну даних за кожний тикер (занадто багато, насправді, якщо вам просто потрібна ціна), і я бачив джерела, які пропонують додаток Bing Finance для Excel 2013. На жаль це було припинено.

Чи є простий спосіб це зробити? Мені буквально потрібна сама остання ціна, і мені байдуже, чи вона затримана, походить від Yahoo Finance тощо. Імовірно, я можу написати код VBA, щоб завантажити файл CSV з YF, проаналізувати його і так далі, але я сподіваючись уникнути створення робочої книги з підтримкою макросу.


Це не функція, яку підтримує Excel поза коробкою
Ramhound

1
За винятком data - existing connection - MSN MoneyCentral Investory Stock Quotesробіт 2007/2010 , це було видалено на 2013 рік? редагувати - так, схоже, це було видалено, а додаток Bing Finance - це «заміна». Ви можете налаштувати data - from webзапит на msn гроші, але це буде нудно.
Райстафаріан

@Raystafarian Як встановити новий запит даних?
Майкл А

Здається, вам може знадобитися використання запиту на потужність у 2013 році джерелом
Raystafarian

1
@harrymc Я не ОП, але думаю, що найціннішою відповіддю було б те, що використовує наявні функціональні можливості в Excel 2013 та / або є безкоштовною.
Excellll

Відповіді:


5

Ви можете використовувати такий 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

Тепер ви можете використовувати GetTickerPrice("GOOG")та отримувати поточну ціну.


Я взяв це на Codereview.SE для деякої інформації.


2
Чи не найкраще буде відформатувати як Double, а не Long, щоб ви не втратили десяткової інформації? Тоді кінцевий користувач може вирішити, чи хоче він його округлити.
Jonno

Дякую, це працює! Але це дуже повільно - близько 20 секунд, щоб отримати одну ціну акцій. Я припускаю, що я відкрию IE та завантажую URL-адресу. Чи все-таки можна обійти це?
Excellll

@Jonno так, я бачу, що Excellll вніс зміни
Raystafarian

@Excellll Я спробую побачити, чи існує спосіб її обходу, можливо, змушуючи IE мовчати, але якщо ми не зможемо знайти базу даних, як раніше, ми могли б застрягти (принаймні, для старих версій excel).
Райстафаріан

1
@Excellll в CodeReview досить пристойний відгук на мій підхід. Здається, що це досить різне, що це не вважатиметься таким же, як моя відповідь.
Райстафаріан


-1

Існує надбудова, що називається Stock Quote Add-In For Excel 2013, яка робить це, і має версію для 2013 року. Особисто я не міг змусити її працювати, але це вже кілька років, тому, ймовірно, це був я лише .


2
Ласкаво просимо до Супер Користувача. Це допомагає відповісти на питання, але чи можете ви додати інформацію про те, як слід використовувати цей плагін?
LJD200
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.