Как загрузить курс акций в Excel 2013? Есть ли эквивалент функции электронной таблицы GoogleFocance Google Doc?

8

В электронной таблице Документов Google я могу использовать эту формулу ячейки:

=GoogleFinance("GOOG", "price")

скачать последнюю цену акции. Есть ли эквивалентная функция в Excel 2013?

В более ранних версиях Excel была функция смарт-тегов, которая загружала тонну данных для каждого тикера (на самом деле, слишком много, если вам просто нужна цена), и я видел источники, которые предлагают приложение Bing Finance для Excel 2013. К сожалению, это было прекращено.

Есть ли простой способ сделать это? Мне буквально просто нужна самая последняя цена, и мне все равно, задержится ли она, поступит из Yahoo Finance и т. Д. Предположительно, я мог бы написать код VBA, чтобы загрузить файл CSV из YF, разобрать его и так далее, но я в надежде избежать создания книги с поддержкой макросов.

Майкл А
источник
Это не та функция, которую Excel поддерживает из коробки
Ramhound
1
В Excel 2007/2010 data - existing connection - MSN MoneyCentral Investory Stock Quotesработает, это было удалено в 2013 году? редактировать - да, похоже, он был удален, и приложение Bing Finance является «заменой». Вы можете настроить data - from webзапрос к MSN деньги, но это было бы утомительно.
Raystafarian
@Raystafarian Как бы я настроить новый запрос данных?
Майкл
Похоже, вам может понадобиться использовать мощный запрос в источнике
Raystafarian
1
@harrymc Я не OP, но я думаю, что наиболее ценным ответом будет то, что использует существующие функции в 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 для некоторого вклада.

Raystafarian
источник
2
Разве не лучше форматировать как Double вместо Long, чтобы не потерять десятичную информацию? Затем конечный пользователь может решить, хотят ли они округлить его.
Джонно
Спасибо, это работает! Но это действительно медленно - около 20 секунд, чтобы получить одну цену акций. Я предполагаю, что при открытии IE и загрузке URL возникают узкие места. Есть ли способ обойти это?
Excellll
@ Джонно да, я вижу, что Excellll внес изменения
Raystafarian
@Excellll Я постараюсь выяснить, есть ли способ обойти это, возможно, заставить IE замолчать, но если мы не сможем найти базу данных, как раньше, мы могли бы застрять (по крайней мере, для более старых версий Excel).
Raystafarian
1
@Excellll на CodeReview довольно неплохой ответ на мой подход. Кажется, что это достаточно отличается, что не будет рассматриваться как мой ответ.
Raystafarian
-1

Есть надстройка под названием Stock Quote Add-In для Excel 2013, которая делает это и имеет версию для 2013 года. Лично я не мог заставить ее работать, но она была в течение нескольких лет, так что, вероятно, это был только я ,

Джереми Шоу
источник
2
Добро пожаловать в Супер пользователя. Это помогает ответить на вопрос, но не могли бы вы добавить информацию о том, как использовать этот плагин?
LJD200