VBA – jak wysyłać automatycznie maile ze skrzynki innej niż domyślna ?

HintMine

Witam :)

 

Ostatnio na prowadzonym przeze mnie szkoleniu VBA pojawił się ciekawy temat. Kursanci, chcieli zautomatyzować wysyłanie wiadomości mailowych za pomocą VBA ale nie ze skrzynki domyślnej. Problem sam w sobie case nie jest skomplikowany, tylko ten wybór konta z którego ma nastąpić wysyłka wymagało od nas kilku dodatkowych linijek kodu i je właśnie chciałem tu opisać :)

 

Najpierw standardowe kroki potrzebne do napisania makra które wysyła emaile. Żeby ten post nie rozrósł się do rozmiarów scenariusza „Gry o tron” na razie zajmę się jedynie najprostszą wersją programu czyli wysyłaniem wiadomości w postaci czystego tekstu i bez stopki.

Bardziej rozbudowane makro czyli np.:
– wysyłające wiadomości w postaci ładnie sformatowanego tekstu z kolorkami, wcięciami obrazkami itd.
– zamieniające fragment arkusza Excela (np. tabelkę) na kod HTML i wrzucające go do wiadomości
– dołączające automatycznie sygnaturkę/podpis, który mamy zdefiniowany w Outlooku
omówię w osobnym poście :)

 

No to jedziemy:
1. Otwieramy Excela, przechodzimy do edytora VBA i dodajemy nowy moduł
2. Żeby nie było problemów z wersjami Outlooka nie będę dodawał referencji z menu tools–>references, tylko skorzystam z późnego wiązania (czym się różni późne od wczesnego również opiszę w odrębnym poście :)

 

3. Piszemy więc taką procedurkę

Powyższy kod wyśle wiadomość z adresu, który jest ustawiony jako domyślny w naszym Outlooku. Żeby móc skorzystać z innych adresów trzeba użyć .SendUsingAccount. Właściwość ta pojawiła się w Office 2007 :)

 

Używamy jej następująco:

 

Bardzo ciekawe jest użycie SET przed .SendUsingAccount (żeby było śmieszniej SET jest konieczny w Office 2016 a w 2013 działa bez seta… :)

 

Ok a skąd mamy wiedzieć które konto ma jaki numer ? Co mamy wpisać w nawiasie po słowie Item w linii

 

Najprościej będzie przejść w pętli przez wszystkie po kolei konta i wypisać je np. w oknie immediate window :) czyli np. tak:

 

Po wykonaniu powyższego kodu wystarczy że zerkniemy do okna immediate (skrót ctrl+g) i odczytamy które konto ma jaki numer :)

Załóżmy że chcemy wysyłać emaile z konta które określone jest numerem 3, kod wysyłania będzie wyglądał tak:

Mam nadzieję, że wam się przyda ten case :)

Pozdrawiam
Michał Dąbrowski

Powrót do:
Blog VBA | VBA dla trochę bardziej zaawansowanych |


Zobacz też: