Ежедневный курс валюты Excel (FX) - PullRequest
0 голосов
/ 21 февраля 2019

Какой самый простой бесплатный способ получить приблизительный дневной курс обмена валют в текущей версии Excel (Office 365 / февраль 2019 г.).

Меня не интересуют исторические данные, я просто хочу, чтобы последний известный дневной курс был от валюты X к валюте Y, и я могу автоматически обновлять его только один раз при открытии документа.

Раньше был какой-то VBA, который мог извлекать данные с некоторых финансовых сайтов, но я не могу найти ни одной, которая все еще работает.

Одним из возможных решений является openexchangerates.org, но как бы яиспользовать их API в Excel?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Макрос из Matteo NNZ действительно хорош:)

Как это возможно, используя Data -> From web (вставьте ссылку на сайт с таблицей и выберите таблицу).После этого Excel автоматически собирает информацию с веб-сайта.Чтобы обновить информацию, вам нужно выбрать ячейку в новой таблице и перейти на вкладку Запрос -> Обновить.

Для обновления каждый раз, когда вы открываете свою книгу, просто посмотрите на правую сторону листа и увидитеВаша таблица в списке запросов и подключений.Нажмите правильную кнопку мыши на соответствующей таблице -> свойства и выберите «Обновить данные при открытии файла».Вы можете добавить таймер для обновления данных, например, каждую минуту :)

В моем случае я использую ссылку: https://www.x -rates.com / table /? From = USD & amount = 1

Нажмите кнопку ОК, сохраните книгу и все готово.

Примеры:

1) свойства для обновления: https://i.stack.imgur.com/GRTsM.png

2) информация о таблице https://i.stack.imgur.com/7Odrh.png - здесь у вас есть валюта со всего мира:)

0 голосов
/ 21 февраля 2019

Следующая функция в настоящее время работает на одной из моих книг:

Public Function getConversionRate(ByVal ccy1 As String, ByVal ccy2 As String) As Double
    Dim htm As Object
    Set htm = CreateObject("htmlFile")
    With CreateObject("msxml2.xmlhttp")
        .Open "GET", "https://themoneyconverter.com/" & ccy1 & "/" & ccy2 & ".aspx", False
        .send
        htm.body.innerhtml = .responsetext
    End With
    With htm.getelementbyid("cc-ratebox")
        myRate = Right(.innerText, Len(.innerText) - 10)
        getConversionRate = myRate
    End With

    htm.Close
End Function

Пример использования:

enter image description here

Просто чтобы сделатьЯсно, что вышеприведенная функция использует простой XmlHttp запрос на конкретном веб-сайте (в моем случае это https://themoneyconverter.com, пример использования https://themoneyconverter.com/EUR/USD), а затем ищет цену конверсии соответственно в HTML-коде, полученном в ответезапрос (для этого конкретного сайта значение содержится в элементе с идентификатором cc-ratebox).

Конечно, вы можете сделать то же самое с любым другим сайтом, все что вам нужно сделать, этоадаптировать запрос (т. е. часть .Open "GET", "your adapted link") и поиск вашей стоимости (т. е. часть With htm.getelementbyid("cc-ratebox")) - поскольку этот веб-сайт предоставляет простой доступ к их значениям через XmlHttpRequest

...