שלום לכם

hirshfe

New member
שלום לכם

ראשית כל הקדמה, אני לא מתכנת VB, יש לי ידע ממש מוצמצם, למדתי פעם קורס מבוא לפני חמש שנים - והזכרון כבר לא מה שהיה. עם הידע הקל מאוד שיש לי ניסתי לבנות שמהו ונכשלתי בענק. גם חיפוישם של כמה ימים באינטנרט של קוד דומה למה שרציתי נכשל. אז עכשיו, החלטתי להיות מעט חוצפן (או אולי אפילו הרבה) ואני אבין מאוד אם תתעלמו ממני- אז אם זאת חוצפה גדולה אני מתנצל מראש. אני צריך קוד, שנראה לי שלמתכנתי VB יהיה קוד פשוט, למעשה אני צריך קוד VBA, שייבצע פעולה באוטלוק. במחשב בודד - אני מקבל ושולח מיילים מכמה כתובות שונות. יצרתי לכל כותבת inbox משלה ובעזרת rules אני מעביר כל מייל למקומו המתאים. עד כאן הכל טוב, פשוט וקל. אבל, אני רוצה לבצע פעולה דומה על כל מייל שנשלח, דהיינו ליצור outbox אישי לכל כתובת וכתובת. הפעולה מתבצעת בעזרת ה-rules של אופיס רק באופן חלקי. כלומר המייל מעותק (ולא מעובר) לתיבה המתאימה ומסומן כמייל שלא נקרא. אני רוצה שהמייל יעובר לתיבה המתאימה ולא יסומן כלא נקרא ברור לי שמדובר בקוד VBA - אבל בבניה שלו אני די עובד עיצות. אודה על כל עזרה שהיא ולו הקלה ביותר גם אם תראו לי פתרון חלקי על מייל אחד אני מאמין שאני אצליח בידע המועט שיש לבצע קוד לייתרת המיילים. תודה מראש, ושוב התנצלות רבה עם אתם רואים בזה חוצפה
 

ארזירון

New member
יהיה לך מאוד קשה...

כדי לעשות את זה ב-VBS צריך לתפוס כל אימייל שנשלח ולבדוק אותו כדי להחליט מה לעשות איתו....
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)​
זה הארוע שקורה ב-VBA על כל אימייל שנשלח, מה שאומר שזו נקודת ההתחלה. הדבר הראשון שצריך לעשות זה לבדוק מה האובייקט שמסתתר מאחורי item, כיון שזה יכול להיות task, meeting request, appointment או כל סוג אחר ש-outlook יודע לייצר.... אז אחרי שאתה יודע מה יש בתוך item, וגילית שזה בעצם אכן אימייל, אז צריך לבדוק מאיזה חשבון זה נשלח, שזה יחסית פשוט על ידי בדיקה של SenderName או SenderEmailAddress, אתה יכול פשוט לקרוא ל-Move של האובייקט... או בקיצור, נקודת התחלה תהיה משהו כמו:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) Dim itm As Outlook.MailItem Dim dest As Outlook.MAPIFolder If (TypeName(Item) = "MailItem") Then Set itm = Item Select Case itm.SenderEmailAddress Case "[email protected]" Set dest = Session.Folders.Item("folder1") Case "[email protected]" Set dest = Session.Folders.Item("folder2") Case "[email protected]" Set dest = Session.Folders.Item("something") End Select itm.Move dest End If End Sub​
זה לא נבדק, זה בטח לא רץ, ופעם אחרונה שכתבתי משהו ל-outlook היה לפני כמה שנים טובות. זה רק כוון לשם המחשבה....
 
למעלה