יום שני, 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

µµµ


10 תגובות:

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

    השבמחק
  2. היי מני, נתקלתי בבלוג שלך הנוכחי בקשר לשליחת מייל אוטומטי מאקסל..
    אני אשמח מאוד אם תסביר לי איך מה שהסברת למעלה מתבצע ואם יש דוגמא עובדת בקובץ אקסל מוכן...
    אשמח לתגובה למייל של העבודה שלי- shaul.vachnun@gmail.com
    תודה , שאול וחנון.

    השבמחק
  3. שאול שלום,
    בסוף ההסבר יש קישור להורדת קובץ הדוגמא.

    בברכה,
    מני פורת

    השבמחק
  4. היי מני
    מעניין מאד ומחכים.
    האם זה עובד רק עם outlook ?

    תודה רבה ויום טוב

    השבמחק
  5. כן, לצערי רק ב- OUTLOOK
    אולי בגירסה הבאה אסביר איך עובד ב-GMAIL

    השבמחק
  6. מני שלום
    מנסה לבנות רוטינה שתשלח למספר כתובות מייל תחומים מתוך קובץ אקסל (העתקת והדבקת התחום לגוף המייל)
    אודה באם תוכל לסייע

    השבמחק
  7. לא כלכך הבנתי. אם אני רוצה לבנות את זה לבד, איך אני עושה את זה? ב VBA?

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

    השבמחק