Excel で NBU 為替レートを頻繁に使用する必要がある人向けの既製の関数。 コードと日付によって通貨値を自動的に挿入するのに役立ちます。 NBUウェブサイト 。 ウクライナの銀行員に捧げます。
メニュー Service - Macros - Visual Basic Editor を開きます。 新しいモジュールを挿入します (menu Insert - Module) を選択し、この関数のテキストをそこにコピーします。
Function NBU_RATE(sCurr$, iiDate As Date) 'moonexcel.com.ua Dim sURI As String Dim oHttp As Object Dim htmlcode As String Dim C As Range Dim Q As Long Dim iP As Long, z As Long Dim S As String, S1 As String, iOnlyTable As String Dim b As Object Dim massive(30, 5) Dim iDatas As Date sURI = "http://bank.gov.ua/control/uk/curmetal/currency/search?formType=searchFormDate&time_step=daily&date=" & iiDate & "&execute" On Error Resume Next Set oHttp = CreateObject("MSXML2.XMLHTTP") If Err.Number <> 0 Then Set oHttp = CreateObject("MSXML.XMLHTTPRequest") End If 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 iP = InStr(1, htmlcode, "України<"&"br/>встановлює") htmlcode = Mid(htmlcode, iP, 10000) iP = InStr(1, htmlcode, "<"&"td class=") + 6 + 11 '"> iDatas = Mid(htmlcode, iP, 10) iOnlyTable = Mid(htmlcode, InStr(100, htmlcode, "<"&"table cellpadding="), InStr(1000, htmlcode, "<"&"/table>") - _ InStr(100, htmlcode, "<"&"table cellpadding=") + 10)'"> Set Doc = CreateObject("HTMLFile") Doc.Write iOnlyTable Set b = Doc.all.tags("TABLE") For Each uTableElement In b iRows = uTableElement.Rows.Length iCells = uTableElement.Cells.Length j = 0 For k = 1 To iRows For l = 1 To 5 j = j + 1 massive(k, l) = uTableElement.Cells(j - 1).innerHTML If j = uTableElement.Cells.Length Then GoTo 1 Next l Next k 1: Next uTableElement For k = 2 To iRows For l = 1 To 5 If massive(k, l) = sCurr Then NBU_RATE = Replace(massive(k, 5), ".", ",") NBU_RATE = NBU_RATE / massive(k, 3) End If Next l Next k Calculate NextForLoop: Set oHttp = Nothing Exit Function ConnectionError: End Function
Visual Basic Editor を閉じて、Excel に戻ります。
ここで、定義されたカテゴリ User の Function wizard で、関数 NBU_RATE を見つけて使用できます。この関数の構文は次のとおりです。
=NBU_RATE ( 通貨コード ; 日付 )
次の結果が得られます。