איתור מיקוד מקוון

אפקטיביות

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

מעלות: מעודכן און-ליין, ניתן לשילוב באקסל!
חסרונות: דרוש חיבור לאינטרנט, בעלי סינון למיניהם - בדקו שאתר דואר ישראל פתוח לכם.

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

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

  • מיקוד מקוון.zip
    KB 34.5 · צפיות: 318

moishy

משתמש סופר מקצוען
מנוי פרימיום
תודה על השיתוף.
וכעת להערות :)

ראשית כמה הערות כלליות שלא קשורות דוקא (אבל בהחלט גם) לקובץ המוכחי שהעלת:

1. כדאי מאוד מאוד מאוד (ושוב פעם מאוד) להקפיד על הזחה (indentation בלע"ז) מתאימה לקוד. ההזחה מקילה על הקריאה וההבנה ומונעת הרבה מאוד שגיאות תחביר ובאגים.יש כלי נפלא להזחה אוטומטית, ניתן להוריד אותו כאן. בגירסאות האחרונות ההתקנה שלו טיפה מסובכת (תשאל כאן בפורום אם צריך :D ) אבל הוא שוה את זה. כשתתרגל לא תבין איך הסתדרת בלעדיו.

2. כדאי מאוד לשמור על מוסכמות למתן שמות לאובייקטים ופקדים. לא חשוב כ"כ מה הסגנון, אתה יכול אפי' לפתח סגנון משלך (אם כי לדעתי מומלץ להיצמד לקיים כדי האחרים יבינו את הקוד שלך) אבל חשוב שהוא יהיה עקבי. דבר זה עוזר לקורא להבין את הלוגיקה והזרימה של האלגוריתם, וגם מונע טעויות טפשיות רבות. הנה כמה קישורים העוסקים בנושא:
https://msdn.microsoft.com/en-us/library/aa263493(v=vs.60).aspx
https://en.wikipedia.org/wiki/Leszynski_naming_convention
http://ss64.com/access/syntax-naming-variables.html
http://www.xoc.net/standards/rvbanc.asp#Access

3. יש להקפיד על הצהרת משתנים. זה טוב לביצועים (משתנה שלא הוצהר הוא מסוג variant) שצורך יותר זכרון ואיטי יותר בביצועים, וגם מונע טעויות טפשיות רבות. ע"מ להכריח הצהרת משתנים (מומלץ בחום), בראש כל מודול יש להוסיף את צמד המילים Option Explicit. ניתן לשנות הגדרה בVBE כדי שזה יקרה אוטומטית (בתוך הVBE מתפריט tools>>options לוודא ש require variable declaration מסומן).

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

5. את השמות לפקדים ואובייקטים רצוי לכתוב באותיות לועזיות, מאוד קשה לקרוא קוד ארוך שמשולב באנגלית ועברית (במיוחד בשאילתות או בקבוצות קוד ארוכות).

6. הזכרון למשתנים מוקצה לפני שהקוד עצמו רץ, כך שאין הגיון להצהיר על משתנה באמצע הקוד. הצהרת משתנים בתחילת הקוד בלבד, לביצועים טובים יותר ולמעם הסדר הטוב.

וכעת לכמה הערות ספציפיות לקובץ שהעלת (אני לא מדבר על החסרונות שבודאי שמת לב אליהן והחלטת להתעלם, לדוגמא שאין לך שדה כניסה (יש מקומות בארץ שלכל בנין יש מיקוד שונה), או שאתה לא מחזיר תשובה מדוייקת במקרה של שגיאה מלבד התשובה הלאקונית לא אותר מיקוד לכתובת הנוכחית):

1. עובדתית, ברוב המקרים שניסיתי את הדוגמא שלך, המיקוד לא הוחזר נכון, השורה mikud = Mid(mikud, 49, 8) לא עושה את מה שציפית. (מה עוד שהמיקוד אמור להיות 7 ספרות ואילו כאן אתה מחזיר 8 תוים). לדעתי הפונקציה הבאה היא הדרך הכי קלה ונקיה להוציא את המיקוד מהHTML:
קוד:
Function fGetZip(strResponse As String) As String
    With CreateObject("VBScript.RegExp")
        .Pattern = "RES[0-9]+"
        If .Test(strResponse) Then
            fGetZip = Right(.Execute(strResponse)(0), 7)
        End If
    End With
End Function

2. לאיחזור הHTML בחרת להשתמש עם האינטרנט אקספלורר (MSXML2.XMLHTTP), החסרונות בזה הם כדלהלן:
א. לא לכל מחשב יש אינטרנט אקספלורר
ב. הקוד צריך להמתין לטעינת הדף ולאחר מכן לבדוק את הסטטוס.
הייתי ממליץ במקום זה להשתמש עם האפשרות המובנה בתוך וינדוס, הנה דוגמא:
קוד:
    Dim objHttpRequest As Object
    Dim strResponse As String

    Set objHttpRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
    
    objHttpRequest.Open "GET", strUrl
    objHttpRequest.Send
    
    strResponse = oHttpRequest.responseText

    Set objHttpRequest = Nothing
אגב, שים לב למרווחים בין השורות, הם לא מקריים, הם מחלקים בין קבוצות הפעולות.

ושוב לסיום, תודה על השיתוף.
 

אפקטיביות

משתמש צעיר
1. תודה רבה לmoishy על ההערות! ההערות שלך בונות את כולנו!!
2. לגבי הערה 6, שאלה: בקוד ארוך, שמשתמשים בו עם עשרות משתנים, ובתחילת הקוד יש תנאי שברוב המקרים משמש ליציאה מהקוד. האם כדאי להצהיר על המשתנים רק אחרי התנאי? או שעדיין הכלל הוא "הצהרה בראש הקוד".
3. לגבי השדה כניסה: בניסיונות שעשיתי הוא החזיר מיקוד לא נכון, ולכן השמטתי אותו.
4. הפונקציה fGetZip שהבאת ממש מדהימה. היכן ניתן לקרוא על הפונקציות השונות של VBScript.RegExp?
5. את כולנו מעניין ללמוד יותר, למשל בפונקציה CreateObject בתגובה שלך יצרת שני אובייקטים מעניינים. האם יש למישהו חומר למידה על הפונקציות השונות, בעיקר הנעלמות? כמו"כ, יש הרבה קודים שמשתמשים עם הספריות kernel32 ו- user32, היכן ניתן ללמוד על הפונקציות שבהם?

ושוב תודה רבה על ההערות ועל העזרה הרבה.

אההםםם, עוד משהו, אולי מתאים לפתוח בשבילו אשכול חדש... האם יש דרך לשלוח פקודות API בטכנולוגיית POST ע"י VBA?
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
נכתב ע"י סבתא111;2057876:
2. לגבי הערה 6, שאלה: בקוד ארוך, שמשתמשים בו עם עשרות משתנים, ובתחילת הקוד יש תנאי שברוב המקרים משמש ליציאה מהקוד. האם כדאי להצהיר על המשתנים רק אחרי התנאי? או שעדיין הכלל הוא "הצהרה בראש הקוד"?
חד משמעית, כן. מהסיבות שכתבתי.

נכתב ע"י סבתא111;2057876:
3. לגבי השדה כניסה: בניסיונות שעשיתי הוא החזיר מיקוד לא נכון, ולכן השמטתי אותו.
זה רק הוכחה שהקוד שלך לא פועל כראוי ;)

נכתב ע"י סבתא111;2057876:
4. הפונקציה fGetZip שהבאת ממש מדהימה. היכן ניתן לקרוא על הפונקציות השונות של VBScript.RegExp?
גוגל...

נכתב ע"י סבתא111;2057876:
. את כולנו מעניין ללמוד יותר, למשל בפונקציה CreateObject בתגובה שלך יצרת שני אובייקטים מעניינים. האם יש למישהו חומר למידה על הפונקציות השונות, בעיקר הנעלמות? כמו"כ, יש הרבה קודים שמשתמשים עם הספריות kernel32 ו- user32, היכן ניתן ללמוד על הפונקציות שבהם?
כנ"ל.
אגב, אפשר להשתמש עם מגוון ספריות מובנות, תיכנס לרישמת ההפניות בVBE ותראה כמה יש. CreateObject הוא פונקציה המאפשרת להשתמש בספריות הללו בלי להוסיף הפניה מראש (ההפניה נוצרת בזמן הריצה), יש בה מעלות וחסרונות, אבל ברוב המקרים המעלות גוברות.

נכתב ע"י סבתא111;2057876:
אההםםם, עוד משהו, אולי מתאים לפתוח בשבילו אשכול חדש... האם יש דרך לשלוח פקודות API בטכנולוגיית POST ע"י VBA?
בודאי!

וכעת לקינוח, גירסה משופרת הכוללת השלמה אוטומטית לשדות עיר ורחוב. הרבה מהקוד כאן מגיע מהפורום קוד613 ונכתב ע"י רב המתכנתים דוד ל.ט., אמן הכתיבה הטכני-הומוריסטי ארכיטכקט, ורב הפעלים ClickOne.
 

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

  • מיקוד מקוון.rar
    KB 41.6 · צפיות: 209

957

משתמש פעיל
דיון פורה ומענין moishy התגובות שלך בהחלט מעשירות תודה רבה אין עליך תותח,

גם הנושא שסבתא111 העלה בעניין פקודות API בטכנולוגיית POST ע"י VBA נשמע מעניין לגמרי.
תותחים
 

אפקטיביות

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

1. את האמן גוגל אני מכיר... הוא מגלה לי הרבה סודות, אם כי אפשר לטבוע בים החומר שיש בו, וכן לפעמים חסום לי :eek:... אם יש לינקים מפורשים, אפשר לארגן פתרון...
2. לגבי הAPI, תוכל להעלות דוגמא? כשיתאפשר לך.
 

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

  • חישוב מיקוד משודרג.zip
    KB 89.1 · צפיות: 225

moishy

משתמש סופר מקצוען
מנוי פרימיום
נכתב ע"י סבתא111;2058282:
2. לגבי הAPI, תוכל להעלות דוגמא? כשיתאפשר לך.
נושא חדש, אשכול חדש...
תכתוב גם לאיזה API אתה מתכוון.
 

מורדי

משתמש רשום
כדאי מאוד מאוד מאוד (ושוב פעם מאוד) להקפיד על הזחה (indentation בלע"ז) מתאימה לקוד. ההזחה מקילה על הקריאה וההבנה ומונעת הרבה מאוד שגיאות תחביר ובאגים.יש כלי נפלא להזחה אוטומטית, ניתן להוריד אותו כאן. בגירסאות האחרונות ההתקנה שלו טיפה מסובכת (תשאל כאן בפורום אם צריך :D ) אבל הוא שוה את זה. כשתתרגל לא תבין איך הסתדרת בלעדיו.

לא הצלחתי להבין איך מתקינים את זה (אופיס 2010), והאם זה מתלבש על האופיס, ומזיח תוך כדי כתיבה, או שצריך להעתיק לזה את הקוד שכתבתי וזה מסדר אותו.
 

moishy

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

tkh

משתמש מקצוען
עימוד ספרים
עריכה תורנית
האם יש מישהו שיש לו את הקובץ של הדואר, ואפשר לקבלו (אפי' בתשלום?)
 

moishy

משתמש סופר מקצוען
מנוי פרימיום

Avshalom05

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

יאיר משה

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

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

הפרק היומי

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


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

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

לוח מודעות

למעלה