VBA Tools

Wybór konta przy nadaniu wiadomości w Outlooku

napisane przez Oskar w dniu piątek, 8 Październik, 2010, w kategorii Porady - Outlook

Porada dotyczy: MS Outlook 2007/10

Ze względu na powszechną możliwość korzystania z darmowych kont pocztowych, wiele osób decyduje się na utrzymywanie i synchronizacje wiadomości z wielu skrzynek pocztowych. W Outlooku 2007/10 mamy możliwość wyboru konta przed wysłaniem wiadomości (rys1).

Rys 1. Wybór konta podczas edycji wiadomości pocztowej.

Niestety często zdarza się iż w czasie pracy z aplikacją zapominamy ustawić odpowiednie konto dla nadawanej wiadomości i orientujemy się o błędzie już po fakcie. Można zapobiec temu opóźniając nadanie wiadomości stosowną regułą (proces opisany w innym artykule) i wyedytować ją zanim zostanie wysłana.

Poniższa procedura przedstawia alternatywny sposób odpytujący użytkownika co do wyboru konta.

Rys 2. Wybór konta podczas po wysłaniu wiadomości.

W przypadku kiedy użytkownik wpisze w przedstawione pow okno (rys2) wartość błędną, wiadomość nie zostanie wysłana czym zostanie poinformowany stosownym komunikatem.

Poniżej przestawiony kod realizuje opisane założenie:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
'MVP Shon Oskar - VBATools.pl
 If Item.Class = 43 Then
 Dim objMailItem As MailItem, ChangeMail As MailItem
 Dim olNS As Outlook.Namespace
 SET olNS = Application.GetNamespace("MAPI")
 Dim choose$, list$, x&

 For x = 1 To olNS.Accounts.Count
 list = list & x & " -" & olNS.Accounts.Item(x).DisplayName & vbCr
 Next x
 choose = InputBox("Wybierz numer konta z poniższej listy:" & vbCr & list, _
 "Nadawanie z wybranego konta VBATools.pl", 1)

 If Len(choose) = 0 Then Cancel = True
 If IsNumeric(choose) = True Then
 If choose > x Then GoTo error
 Set objMailItem = Item
 With objMailItem
 Set ChangeMail = .Copy
 .Delete
 Cancel = True
 End With
 With ChangeMail
 .SendUsingAccount = olNS.Accounts.Item(choose)
 .Save
 .Send
 End With
 Else
error:
 Cancel = True
 MsgBox "Nie wybrano prawidłowo numeru konta", vbExclamation, _
 "Nadawanie z wybranego konta VBATools.pl"
 End If
 Set ChangeMail = Nothing
 Set objMailItem = Nothing
 Set olNS = Nothing
 End If
End Sub

Powyżej przedstawioną procedurę umieszczamy w klasie „ThisOutlookSesion”.

Po wstawieniu kodu należy zapisać repozytorium oraz zresetować aplikacje sprawdzając czy procedura zadziała.

Można też przypisać nr konta na stałe zamiast zmiennej (choose) wstawiając cyfrę konta blokując tym sposobem możliwość wysyłania innym kontem (np nowo skonfigurowanym).

Sub lista_kont()
 Dim olNS As Outlook.NameSpace
 Set olNS = Application.GetNamespace("MAPI")

 Dim x&
 For x = 1 To olNS.Accounts.Count
 Debug.Print x & " - " & olNS.Accounts.Item(x).DisplayName
 Next x
End Sub

Pow lista kont jaką można uzyskać w oknie immediate [Ctrl+g]

2012-03-09 Zmodyfikowałem kod ponieważ okazało się że poprzednio przedstawiony zmieniał nazwę konta i tak przedstawiał w folderze elementy wysłane, jednakże poczta zostawała wysłana z pierwotnego konta. Nie jest wykluczone ze to niedopatrzenie zostanie poprawione w następnych wersjach Outlooka.

(c) Shon Oskar – www.VBATools.pl

Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.

Podziel się ze znajomymi:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Blip
  • Grono
  • Gwar
  • Kciuk.pl
  • LinkedIn
  • MySpace
  • OSnews.pl
  • Śledzik
  • Spis.pl
  • Technorati
  • Twitter
  • Vala.pl
  • Wahacz.pl
  • Wykop

Wpisz swój komentarz:

Comment Spam Protection by WP-SpamFree