Зараз обговорюють

"Тобто є ряд завдань, які взагалі без рекурсії не наважуються."  - це як розуміти? Перефразуй, будь ласка. 

виправив, йшлося про те що деякі завдання можна вирішити лише при використанні рекурсії

Спасибі дуже корисна стаття

А ще щось планується подібного найближчим часом?


Дякую за підтримку, радий що Вам сподобалось!

Так маю вже майже дороблений проект по управлінні Audio файлом, на заміну стандартним клавішам управління HTML5, але ще не встиг відтестувати програвання файлів з інтернету, поки лише локально працює

Надіюсь найближчим часом дороблю й закину

Рахунки

webmoneyeur - E385818210641
usd - Z304643423050
uah - U354026817492
rub - R301704373231easypay80002677bitcoin1F5HRGroUtEQW9HBNbeew8iKh5KQ8vJxzw

Зворотній зв'язок

Для покращення роботи сайту надсилайте свої зауваження:
mailЗауваження
mailПропозиція

Статистика

UkrNET - поисково-информационный ресурс

VBA : Функція (парсер) для Курсу валют НБУ

Коротка функція для тих, кому часто приходиться використовувати курси валют НБУ. Автоматично вставляє значення валюти по її абревіатурі (символьний код) та даті на яку потрібно вставити валюту з сайту НБУ. Функція буде дуже корисна банківським працівникам України.

Підключення функції:

Відкрийте Visual Basic Editor через Alt + F11 (або з верхньої панелі продуктів MS Office), вставте новий модуль (меню Insert - Module) і скопіюйте туди код цієї функції:

Після підключення функції до робочої книги Excel її можна буде використовувати на аркушах так як і інші вбудовані функції

Код функції (version 2):

Опис функції

Для відображення описів у вікні функції необхідно додати даний код у модуль книги ThisWorkbook

Private Sub Workbook_Open()
    Application.MacroOptions Macro:="NBUCURRENCY", Description:="Завантаження курс валют НБУ на дату", Category:="Моя категория", ArgumentDescriptions:=Array("Код валюти літерний", "Ключ даних які необхідно повернути", "Дата на яку необхідно отримати курс валют")
End Sub

Оновлена функція завантаження інформації про курс валют НБУ з використанням відкритого API, та отримання JSON стрічки як результат

АгрументОпис
currencyNameНазва валюти в її літерній абревіатурі (EUR, USD тощо...)
keyДані які необхідно повернути.
Можливі варіанти:
r030 - цифровий код валюти
txt - повна назва валюти
rate - гривневий еквівалент за одну одиницю валюти
cc - назва валюти в її літерній абревіатурі
exchangedate - дата вивантаження валютного курсу
currencyDateДата за яку необхідно вивантажити валютний курс
Public Function NBUCURRENCY(currencyName As String, key As String, currencyDate As Date)
Dim sURI As String, oHttp As Object
    sURI = "https:" & Chr(47) & Chr(47) & "bank.gov.ua" & Chr(47) & "NBUStatService" & Chr(47) & "v1" & Chr(47) & "statdirectory" & Chr(47) & "exchange?valcode=" & currencyName & "&date=" & Format(currencyDate, "yyyymmdd") & "&json"
    Set oHttp = CreateObject("MSXML2.XMLHTTP")
    If oHttp Is Nothing Then Exit Function
    On Error GoTo ConnectionError
    oHttp.Open "GET", sURI, False
    On Error GoTo ConnectionError
    oHttp.Send
    NBUCURRENCY = jsonParse(oHttp.responseText, key)
ConnectionError:
    Set oHttp = Nothing
End Function
Private Function jsonParse(jsonStr As String, key As String)
    arr = Split(Replace(Replace(jsonStr, "[{", ""), "}]", ""), ",")
    For Each el In arr
        arr2 = Split(el, ":")
        arr2(0) = Replace(arr2(0), Chr(34), "")
        If arr2(0) = key Then
            If arr2(0) = "rate" Then jsonParse = CDbl(Replace(arr2(1), ".", ",")) Else: jsonParse = Replace(arr2(1), Chr(34), "")
            Exit For
        End If
    Next
End Function 

Примітка: Код функції необхідно розмістити у власному модулі (VBE->Insert->Module). Інакше функцію не буде видно аркуші і відповідно не буде обчислено!

Приклад:

Все тепер можна завантажувати дані на будь який аркуш в Excel як звичайною формулою

=NBUCURRENCY("USD";"r030";DATE(2017;9;6))	'Отримаємо = 840'
=NBUCURRENCY("USD";"txt";DATE(2017;9;6))	'Отримаємо = Долар США'
=NBUCURRENCY("USD";"rate";DATE(2017;9;6))	'Отримаємо = 25,954263'
=NBUCURRENCY("USD";"cc";DATE(2017;9;6))		'Отримаємо = USD'
=NBUCURRENCY("USD";"exchangedate";DATE(2017;9;6))	'Отримаємо = 06.09.2017

Код функції (version 1):

Function NBU_RATE(sCurr$, iiDate As Date)
Dim sURI, htmlcode As String
Dim oHttp As Object
Dim iP2, iP3 As Long
    Application.MacroOptions "NBU_RATE", Description:="Курс валют НБУ", Category:="Моя категорія", ArgumentDescriptions:=Array("Абревіатура валюти", "Дата валюти")
        sURI = "http:\\mjqw42y.m5xxmltvme.nblz.ru\control\uk\curmetal\currency\search?formType=searchFormDate&time_step=daily&date=" & Format(iiDate, "dd.mm.yyyy")
        Set oHttp = CreateObject("MSXML2.XMLHTTP")
        If oHttp Is Nothing Then Exit Function
        On Error GoTo ConnectionError
        oHttp.Open "GET", sURI, False
        On Error GoTo ConnectionError
        oHttp.Send
        htmlcode = oHttp.responseText
    
        iP2 = InStr(1, htmlcode, sCurr)         'знаходимо символ з якого починається обрана валюта'
        iP3 = InStr(iP2 + 21, htmlcode, Chr$(60) & "td class=" & Chr$(34) & "cell_c" & Chr$(34) & ">")        'виділяємо тег з курсом'
        Curs = Mid(htmlcode, iP3 + 19, InStr(1, Mid(htmlcode, iP3 + 19, 10), "<") - 1)      'обрізаємо зайві символи з тегу'
        NBU_RATE = Replace(Curs, ".", ",")      'замінюємо роздільник крапки на кому (в залежності від необхідних налаштувань Excel)'
        If sCurr$ = "BYR" Or sCurr$ = "RUB" Then
            NBU_RATE = NBU_RATE / 10            'ділимо на к-ть одиниць в яких вказана валюта (Білоруський рубль, Російський рубль)'
        Else
            If sCurr$ = "HUF" Or sCurr$ = "JPY" Then
                NBU_RATE = NBU_RATE / 1000      'ділимо на к-ть одиниць в яких вказана валюта (Угорський форинт, Японська єна)'
            Else
                NBU_RATE = NBU_RATE / 100       'ділимо на к-ть одиниць в яких вказана валюта (усі інші)'
            End If
        End If
        Calculate
        Set oHttp = Nothing
ConnectionError:
End Function 

view1709like1dislike0 avatard_l4w clock 2016-06-09 18:54

Коментарі:



Для даної статті відсутні коментарі

Про нас

"Programmers World" розроблено з метою полегшення в освоєнні навичок програмування, та поширення матеріалів з сфери ІТ Українською мовою.

Кожен бажаючий може безкоштовно користуватися ресурсами сайту, щоб:

- Вивчати теоретичні аспекти мов програмування

- Переглядати практичне застосування теорії при виконанні різних міні проектів з відкритим кодом

- Розміщати свої завдання на форумі для допомоги в їх реалізації, або готового коду який може бути корисний іншим користувачам

- Спілкуватись з іншими користувачами та обмінюватись досвідом

Сайт функціонує на безопланій основі та ентузіазмі розробника, якщо Ви бажаєте долучитись до розвитку даного проекту то можете пожертвувати кошти на рахунки розміщені в блоці "Допомога сайту".

Сайт

Зареєстровані користувачі можуть скористатися системою діалогів, в профілі користувача, для отримання потрібної інформації. Написати!

Також Ви можете використати форми відправки Зауважень та Пропозицій.


Електронна пошта

Ви можете звертатись на нашу поштову скриньку site.programmersworld@gmail.com

www.000webhost.com