VBA makronaredba za slanje e-poruka iz Excela putem Outlooka

Pojavio se problem u organizaciji distribucije pisama prema popisu korisnika e-pošte u Excelu. Štoviše, u svakom pismu morate navesti neke podatke koji su individualni za svakog korisnika. Pokušao sam implementirati ovu funkciju koristeći makro vba u Excelu, koji šalje poštu putem Outlookovog profila pošte konfiguriranog na računalu. Ispod je moja odluka.

Pretpostavimo da imamo Excel datoteku koja sadrži sljedeće stupce:

Korisnička adresa e-pošte | Puni naziv | Vrijeme zadnje promjene lozinke | Status računa

Kao dio moje zadaće, svaki korisnik s popisa mora poslati pismo obrasca:

tema: Status računa u domeni winitpro.ru
Tijelo pismo: Poštovani% puno korisničko ime%
Vaš račun u domeni winitpro.ru je% status%
Vrijeme zadnje promjene lozinke:% pwdchange%vijeće. Ako za korisničke račune trebate dobiti vrijednost jednog od korisničkih atributa u Active Directoryu, rješenjem iz članka Excel Function možete dobiti korisničke podatke iz AD-a..

Izradite novu karticu makronaredbe: pogled -> makronaredbe. Unesite ime makronaredbe send_email i pritisnite gumb stvoriti:

U VBA uređivač koji se otvori zalijepite sljedeći kôd (pružio sam mu sve potrebne komentare). Da automatiziram slanje pisama, upotrijebit ću funkciju CreateObject ("Outlook.Application") koja vam omogućuje kreiranje i korištenje objekta aplikacije Outlook u skripti.

Važno je. Na računalu koje šalje pisma mora biti instaliran i konfiguriran Outlookov profil e-pošte. Iz ovog okvira (i adrese) će biti poslan.

Sub send_email ()
Dim olapp kao objekt
Dim olMailItm Kao objekt
Dim iCounter kao cjelovit
Dim dest kao varijanta
Dim SDest kao niz
'' predmetna linija
strSubj = "Status računa u domeni winitpro.ru"
Na pogrešci GoTo dbg
'stvoriti novi objekt tipa Outlook
Postavi olApp = CreateObject ("Outlook.Application")
Za iCounter = 1 za radni listFunction.CountA (Stupci (1))
'stvorite novu stavku (pismo) u programu Outlook
Postavi olMailItm = olApp.CreateItem (0)
strBody = ""
useremail = Stanice (iCounter, 1) .Value
FullUsername = Stanice (iCounter, 2) .Value
Status = Stanice (iCounter, 4) .Value
pwdchange = Stanice (iCounter, 3) .Value
'' oblikuju tijelo pisma
strBody = "Poštovani" & Puni naziv korisnika & vbCrLf
strBody = strBody & "Vaš račun u domeni winitpro.ru" & Status & vbCrLf
strBody = strBody & "Vrijeme zadnje promjene lozinke:" & pwdchange & vbCrLf
olMailItm.To = useremail
olMailItm.Subject = strSubj
olMailItm.BodyFormat = 1
'1 - tekstualni format pisma, 2 - HTML format
olMailItm.Body = strBody
olMailItm.Send
'sljedeći redak može se koristiti za uklanjanje pogrešaka u tekstu pisma komentiranjem prethodnog
'MsgBox strBody
Postavi olMailItm = Ništa
Sljedeći iCounter
Postavite olApp = Ništa
DBG:
'prikaz pogreške, ako postoji
Ako je Err.Description "" Tada MsgBox Err.Description
Kraj pod

Ova se datoteka Excel mora spremiti s nastavkom xlsm (Format radne knjige u Excelu s makro podrškom). Za pokretanje distribucije odaberite kreirani postupak (makronaredbu) i kliknite gumb za izvršavanje.

Makronaredba će redoslijediti sve redove na Excel-ovom radnom listu, generirati i poslati jedno pismo svakom E-mailu s popisa.