יום שני, 24 בספטמבר 2012

אי-מייל אוטומטי מתוך "אקסל" - חלק א'

אי-מייל אוטומטי מתוך "אקסל" - חלק א'


מנהל מחסן במפעל גדול פנה אלי בבקשת עזרה:

הוא בודק מדי יום קובץ "אקסל" ובו הנתונים הבאים:
א. תאריך נוכחי (בתא D2)
ב. תאריך קודם (בתא E2)
ג. רמת המלאי (בתא F2)


הבקשה: אם בפתיחת הקובץ מתקיימים התנאים:
1. תאריך נוכחי > תאריך קודם
2. רמת המלאי = 0

אזי יש לבצע שליחת אי-מייל אוטומטית - מתוך גליון ה"אקסל".

הפתרון: 
באמצעות רוטינה (SUB) ופונקציה ב- VBA

א. הרוטינה: workbook_open
זוהי רוטינה מובנֵית (built-in) ב"אקסל". היא מתבצעת באופן אוטומטי בכל פעם שנפתחת חוברת העבודה שבה נמצאת הרוטינה.
א.1. הסבר על הרוטינה:
הרוטינה מקבלת  4 פרמטרים:


1. כתובת הנמען: בתא C5
2. תוכן ההודעה: בתא C6
3. כותרת ההודעה ("נושא"): בתא C7
4. קובץ צרופה (Attachment): בתא C8. פרמטר זה הוא אופציונלי, כלומר: אפשר לשלוח את האי-מייל גם ללא צרופה.

פרמטרים 1,2,3 - לא נבדקים. אפשר כמובן לשלוח הודעת אי-מייל ללא תוכן (פרמטר 2) וגם ללא כותרת (פרמטר 3).
אבל, אם לא מופיעה כתובת הנמען (פרמטר 1) - הפונקציה שאליה פונה הרוטינה, לא תשלח את האי-מייל.

פרמטר 4:
אם מצוין שם קובץ בתא C8 -
א. יש לציין את המסלול המלא של הקובץ (full path), כולל כונן (drive), ספריה (folder) וסיומת הקובץ (suffix). למשל:
D:\Test\רשימת תקלות.xlsx
ב. התכנית בודקת את קיום הקובץ ואם שם הקובץ איננו תקין/לא נמצא במסלול המצוין - האי-מייל לא יישלח ותופיע על כך גם הודעה.

אם כל הפרמטרים תקינים, הרוטינה פונה לפונקציה ומעבירה לה את ארבעת הפרמטרים.



ב. הפונקציה: sendAutoMail
הפונקציה מקבלת את 4 הפרמטרים, מציבה את ערכי הפרמטרים בשדות המתאימים ושולחת את האי-מייל.
אם משלוח האי-מייל הצליח, מוצגת ההודעה: "האי-מייל נשלח בהצלחה"



וכך נראית הודעת האי-מייל לאחר שנשלחה:



µµµ

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

שם הקובץ:
SendAutoMail -with attachment - Hebrew Version.xlsm

µµµ


תגובה 1:

  1. שלום מני
    אשמח אם תוכל לעזור למה זה לא עובד?

    השבמחק