TOP

استيراد أسعار صرف البنك الوطني الأوكراني في Excel (NBU_RATE)

وظيفة جاهزة لأولئك الذين غالبًا ما يضطرون إلى استخدام أسعار صرف البنك الوطني الأوكراني في Excel. يساعد على إدراج قيم العملة تلقائيا حسب الكود الخاص بها والتاريخ من موقع البنك الوطني الأوكراني . مخصصة لموظفي البنك في أوكرانيا.

افتح القائمة Service - Macros - Visual Basic Editor, أدخل الوحدة الجديدة (القائمة Inser - 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.

الآن، في Function wizard في الفئة User المحددة، يمكنك العثور على وظيفتنا NBU_RATE واستخدامها. بناء جملة هذه الوظيفة كما يلي:

=NBU_RATE ( رمز العملة ; تاريخ )

ستكون لدينا النتيجة التالية: