קוד לקבלת שער יציג מבנק ישראל באקסס

ari rm

משתמש פעיל
תודה למוישי שהשאיר כאן בעבר קוד לקבלת שער היציג של המטבעות חו"ץ מבנק ישראל הובא כאן,
רק רציתי לבקש ממי שיודע למה בתאריכים שונים ובמטבעות שונים הוא מחזיר לי שגיאה "13".
והאם אפשר להוסיף בקוד הזה שבמקום שגיאה יעשה "0" או כיתוב מסוים כגון: "אין מידע" וכדו' או פשוט לתקן את זה,
תודה רבה!!!
 

קבצים מצורפים

  • 1.png
    1.png
    KB 53.1 · צפיות: 79
  • 2.png
    2.png
    KB 3.8 · צפיות: 77
  • 3.png
    3.png
    KB 2.3 · צפיות: 76

FullTime

משתמש מקצוען
יכול להיות שהוא קורא לתאריך 12/13 ואין לו כזה חודש במלאי.

לפעמים קורה כזה דבר, אולי מוישי יביא פתרון לנושא, חוץ מformat
 

ari rm

משתמש פעיל
בס"ד
א. מה הפתרון של format, איך? ומה?
ב. שחכתי לציין שניסיתי גם לעשות עוד שדה בתבנית של מספר רגיל שמקבל את הער של השדה [תאריך] ואז יוצא בעצם שיש לו את הקוד של התאריך ולהפנות את התאריך בפונקציה לשדה של הקוד, ובכ"ז הוא עבד את אותו דבר, ובתאריך הנ"ל אותו שגיאה.
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
תוכל לקשר אותי לקוד?
 

ari rm

משתמש פעיל
איזה קוד?
[אם אתה מתכוון ל "קוד של התאריך" שכתבתי למעלה. הכוונה מספר ש microsoft קוראת לתאריך, דוגמא: אם אתה עושה תאריך באקסל התבנית של השדה נהיית "תאריך", אם תשנה ל"כללי" תקבל את המספר].
ומה אם האות א.
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
לא.
כוונתי לקוד שכתבתי שנתקל בשגיאה.
 

ari rm

משתמש פעיל
סליחה ממש הבאתי את זה כבר בהתחלה במילה "כאן" ושכחתי לעשות סימן קישור

אני העתיק...

קבלת שער הדולר מבנק ישראל באמצעות פונקציה

אודות למוישי.
This user does not have permission to use the HTML BB code.

הפונקציה לשער הדולר היא: =GetNISExchangeRate(Date(),"01")
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
יש טעות בקוד.
בשורה זו:
GetNISExchangeRate = Mid(strResult, pos + Len(strSearch), 5)
צריך להיות
GetNISExchangeRate = Mid(strResult, pos + Len(strSearch), 4)
 

יאיר משה

משתמש פעיל
מנוי פרימיום
בוגר/תלמיד פרוג
מושי שלום וברכה, אני משתמש הרבה בקוד לקבלת שער, השבוע הוא הפסיק לעבוד, תוכל בבקשה לראות למה, ומה השתנה בבנק ישראל?
תודה מראש.
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
תחליף את הפונקציה בשם הזה: GetHTML
בקוד הזה:
קוד:
Function GetHTML(strURL As String) As String
    Dim HTML As String
    With CreateObject("MSXML2.ServerXMLHTTP.6.0")
        .Open "GET", strURL, False
        .Send
        GetHTML = .ResponseText
    End With
End Function
 

יאיר משה

משתמש פעיל
מנוי פרימיום
בוגר/תלמיד פרוג
בוקר טוב, שוב הפונקציה לא עובדת, בדקתי וזה בגלל ששער הדולר היום הוא 3.7 עגול, והפונקציה צריכה 3 ספרות. מה עושים?
תודה רבה
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
מקוה שבזה אוכל לסיים את ההתעסקות בפונקציה הזו :)
קוד:
Option Explicit

Public Declare Function InternetGetConnectedState Lib "wininet.dll" (lpdwFlags As Long, ByVal dwReserved As Long) As Boolean

Public Function GetNISExchangeRate(Optional dtDate As Date = #1/1/1900#, Optional strCurr As String = "01") As Double

    Dim strURL As String
    Dim strResult As String
    Dim lngStartPosition As Long
    Dim lngEndPosition As Long
    Dim strFirstSearch As String
    Dim strLastSearch As String
    Dim dtPreviousDate As Date
    Dim i As Integer

    strFirstSearch = "<RATE>"
    strLastSearch = "</RATE>"

    If dtDate = #1/1/1900# Then
        dtDate = Date
    End If

    Select Case strCurr
        Case "01", "02", "03", "05", "06", "12", "17", "18", "27", "28", "31", "69", "70", "79"
        Case Else
            MsgBox "קוד מטבע לא חוקי!", vbCritical + vbMsgBoxRtlReading + vbMsgBoxRight
            Exit Function
    End Select

    If IsConnected Then
        strURL = "http://www.boi.org.il/currency.xml?rdate=" & Format(IIf(dtPreviousDate > 1, dtPreviousDate, dtDate), "YYYYMMDD") & "&curr=" & strCurr
        strResult = GetHTML(strURL)
        If InStr(1, strResult, strFirstSearch) < 1 Then
            For i = 1 To 6
                dtPreviousDate = dtDate - i
                strURL = "http://www.boi.org.il/currency.xml?rdate=" & Format(dtPreviousDate, "YYYYMMDD") & "&curr=" & strCurr
                strResult = GetHTML(strURL)
                If InStr(1, strResult, strFirstSearch) > 0 Then Exit For
            Next i
        End If
    Else
        MsgBox "לא זוהה חיבור לאינטרנט!", vbCritical + vbMsgBoxRtlReading + vbMsgBoxRight
    End If

    If Len(strResult) > 0 Then
        lngStartPosition = InStr(1, strResult, strFirstSearch, vbTextCompare)
        lngEndPosition = CLng(InStr(1, strResult, strLastSearch, vbTextCompare))
        If lngStartPosition > -1 Then
            GetNISExchangeRate = Mid(strResult, lngStartPosition + Len(strFirstSearch), lngEndPosition - CLng(lngStartPosition + Len(strFirstSearch)))
        End If
    End If
   
End Function

Function IsConnected() As Boolean
    Dim Stat As Long
    IsConnected = (InternetGetConnectedState(Stat, 0&) <> 0)
End Function

Function GetHTML(strURL As String) As String
    Dim HTML As String
    With CreateObject("MSXML2.ServerXMLHTTP.6.0")
        .Open "GET", strURL, False
        .Send
        GetHTML = .ResponseText
    End With
End Function
 
נערך לאחרונה ב:

יאיר משה

משתמש פעיל
מנוי פרימיום
בוגר/תלמיד פרוג
תודה רבה מאוד,מקווה שלא אטריד אותך יותר.
 

רושם

משתמש מקצוען
עיצוב גרפי
הקוד לא מתאים ל64 BIT.
מתקבלת הודעת שגיאה שצריך להתאים את ההכרזות ל64BIT ולהשתמש PtrSafe.

לכידה.PNG


מה צריך לעשות?

תודה!
 
נערך לאחרונה ב:

אולי מעניין אותך גם...

הפרק היומי

הפרק היומי! כל ערב פרק תהילים חדש. הצטרפו אלינו לקריאת תהילים משותפת!


תהילים פרק קיט א'

א אַשְׁרֵי תְמִימֵי דָרֶךְ הַהֹלְכִים בְּתוֹרַת יְהוָה:ב אַשְׁרֵי נֹצְרֵי עֵדֹתָיו בְּכָל לֵב יִדְרְשׁוּהוּ:ג אַף לֹא פָעֲלוּ עַוְלָה בִּדְרָכָיו הָלָכוּ:ד אַתָּה צִוִּיתָה פִקֻּדֶיךָ לִשְׁמֹר מְאֹד:ה אַחֲלַי יִכֹּנוּ דְרָכָי לִשְׁמֹר חֻקֶּיךָ:ו אָז לֹא אֵבוֹשׁ בְּהַבִּיטִי אֶל כָּל מִצְוֹתֶיךָ:ז אוֹדְךָ בְּיֹשֶׁר לֵבָב בְּלָמְדִי מִשְׁפְּטֵי צִדְקֶךָ:ח אֶת חֻקֶּיךָ אֶשְׁמֹר אַל תַּעַזְבֵנִי עַד מְאֹד:
נקרא  34  פעמים

לוח מודעות

למעלה