Wysyłanie e-maila z VBA Excel – Instrukcja 2


1. Jak wysłać e-mail z VBA Excel?

W tym artykule dowiesz się, w jaki sposób wysyłać e-maile z użyciem VBA w Excelu. VBA ma wiele sposobów na to, wysłać e-mail z Excela przy użyciu Outlooka. W tym artykule przedstawię jeden z nich. W jaki sposób połączyć wysyłkę maili Outlook z VBA w Excelu? Możemy m.in:

  • Wysyłać zwykłe maile do odbiorców np znajdujących się w komórkach arkusza
  • Możemy wysłać aktualnie obsługiwany plik Excel
  • Możemy wysłać dowolny załącznik
  • Możemy wysłać e-mail html bezpośrednio z Excel VBA

Jeśli jesteś zainteresowany wysyłaniem e-maila z programu Access, opisywałem to w tym artykule: Mail z Access VBA. Instrukcja wysyłki wiadomości e-mail z Excel VBA opisana jest w punktach zamieszczonych poniżej.

2. Mail z Excel VBA – składnia i instrukcja

Kod służący do wysyłania e-maila z VBA Excel jest stosunkowo prosty. Jedyne, co powinniśmy zrobić, to upewnić się, że mamy prawidłowo skonfigurowany i działający program Outlook. Jeśli tak jest, VBA wyśle maila. Najprostszy kod do wysłania maila za pomocą VBA z Excel wygląda następująco:

Opis kodu, który wypełniamy w edytorze VisualBasic zamieszczam poniżej:

  •  .To – odbiorca wiadomości. Jeśli chcemy do wiadomości dodać więcej niż jednego adresata, wystarczy wprowadzić adresy e-mail oddzielone średnikiem. np .To = “example@example.com;example2@example2.com”
  • .CC  – odbiorca do wiadomości
  • .BCC – odbiorca do ukrytej wiadomości
  • .Subject – temat e-maila, który chcemy wysłać z Outlook
  • .Body – Treść e-maila, którą chcemy wysłać
  • .Attachments.Add (“C:\test.txt”)  – opcjonalna ścieżka załącznika, jeśli chcemy wysłać maila z VBA Excel z załącznikiem
  • .Send lub Display  – informacja o tym, czy chcemy obejrzeć e-mail przed wysłaniem. Send wyśle e-mail automatycznie. Display wyświetli e-mail przed wysłaniem.

3. Mail z VBA Excel – wiele linii tekstu

W jaki sposób rozwiązać problem umieszczenia wielu linii tekstu w mailu wysyłanym z VBA? Kolejne linie tekstu należy oddzielić od siebie elementem vbCrLf oraz znakiem “_”. Znak fraza vbCrLf oznacza przejście do kolejnego wiersza. Znak “_” umożliwia w VBA odczyt kodu zapisanego w wielu liniach. Umieszczanie znaku “_” nie jest konieczne, ale znacząco zwiększa nam czytelność kodu VB. Elementy we wszystkich liniach treści maila łączymy operatorem konkatenacji &. Poniżej przykład programu z takim rozwiązaniem:

Excel VBA - e-mail z Excel VBA

Excel VBA – e-mail z Excel VBA


4. Jak wysłać e-mail z Outlook automatycznie z użyciem Excel VBA?

Jeśli chcesz wysyłać takie e-maile automatycznie, warto jest do tego wykorzystać kod VBS, który prezentowałem w tym artykule: Automatyczne uruchamianie makra Excel i Access z VBA. Jedyne, co powinieneś zrobić to przygotować pusty plik tekstowy i uzupełnić go poniższym kodem. Uzupełnij w nim jedynie ścieżkę do pliku i nazwę makra. Zapisz plik np jako automat.vbs. Całość możesz podpiąć pod harmonogram zadań. W ten sposób e-maile będą wysyłane automatycznie zgodnie z ustalonym przez Ciebie harmonogramem.

Excel VBA - Wysyłanie e-maila z VBA Excel z wieloma liniami tekstu

Excel VBA – Wysyłanie e-maila z VBA Excel z wieloma liniami tekstu

W ten sposób jak widzisz możesz wysłać każdy e-mail z Excel VBA. Plik z omawianym kodem VBA przykładu zamieszczam pod tym linkiem:

excel_vba_mail_z_excel_vba.xlsm

Źródło: Microsoft

Podobne przykłady praktycznego użycia języka VBA w Excelu zamieszczam na tej stronie: VBA Przykłady. Przy okazji zapraszam do przejścia kursu VBA mojego autorstwa, znajdziesz go pod tym linkiem: VBA


Dodaj komentarz

Twój adres email nie zostanie opublikowany.

2 komentarzy do “Wysyłanie e-maila z VBA Excel – Instrukcja

  • AnOrl

    Dzień dobry Panie Tomaszu,przedstawione przez Pana VBA – permutacje elementów bez powtórzeń, https://tomaszkenig.pl/…/jak-zwrocic-w-vba-permutacje-elem…/ uwzględniają 100% elementów zbiorów, co przy dużej ilości elementów(np.dla 6 z 49 szt.) daje przeogromną ilość rozwiązań. Mając jakąś tam “wizję” zapewne można radykalnie zmniejszyć ilość permutacji wprowadzając pewną( w dowolnej ilości) liczbę ograniczeń. Np. ograniczenie typu by w danej permutacji nie brały udziału np. elementy : n1, n7, n12,… nn by program ” widział je oznaczone np “-1” i je pomijał w tworzonej tablicy. Inne ograniczenie np. by program dobierał nie więcej jak 4 liczby parzyste(4 nieparzyste). Gdzie i jak umieścić w marko takie i podobne ograniczenia. Czy można prosić o podpowiedź? Andrzej.

  • Pitusi

    Witam,

    Wysyłanie maili z Excel jest bardzo przydatne.

    Dobrze jednak by było aby do tego maila wstawić tabelę z tego Excel’a – bo przecież po to robimy to spod Excel 🙂

    Nigdzie jednak nie mogę znaleźć jak to zrobić.

    Aby konkretną tabelę / zakres tabeli (skopiowany do schowka przykładowo) wstawić w treść maila (.Body).

    Czy może Pan Panie Tomaszu ma jakiś pomysł / wiedzę w tym temacie?

     

    Pozdrawiam,