Come inviare una email con VBA

Come inviare una email con VBA è una delle tipiche operazioni che possiamo compiere sia in un database Access sia in un foglio Excel. Effettivamente mi è stato chiesto recentemente da due diverse persone, una che crea un database Access con cui gestisce eventi e vuole inviare email tipo “Save the date”; un altro che sta usando un file Excel e vuole inviare email come promemoria per una scadenza. Insomma, qualunque sia la vostra esigenza, inviare una email con VBA, tutto sommato, è molto facile! Come uso dire… poche righe di VBA e il gioco è presto fatto.

sending_email

Il codice che vedremo è utilizzabile sia in Access sia in Excel (o in Powerpoint ovvero in Word). Naturalmente, se usiamo Access faremo riferimento a una tabella che contiene gli indirizzi email, se useremo Excel, faremo riferimento a una cella che contiene l’indirizzo email e così via.

Vediamo un esempio con Excel. Supponiamo di avere un foglio che si chiama Elenco. In A” ho il cognome, in B2 il nome, in C2 l’indirizzo email. Il procedimento è il seguente:

1) Apro Visual Basic Editor (scorciatoia: ALT+F11)
2) Inserisco un modulo (Inserisci – Modulo)
3) aggiungo un riferimento ad Outlook
3.1) Strumenti-Riferimenti e poi spuntate Microsoft Outlook 14.0 Object Model (troverete 12.0 se avete Outlook 2007, 14.0 per Outlook 2010, 15.0 per Outlook 2013: il codice comunque non cambia)
4) Scrivo il codice per creare la email

Sub sInviaEmail()

End Sub

Prima della riga End Sub devo dichiarare una variabile di tipo Object, che userò per creare una istanza di un oggetto email.

Dim NewMail as Object

Poi assegno alla variabile l’oggetto email (creo appunto l’istanza)

Set NewMail = CreateObject("Outlook.Application").CreateItem(oMailItem)

Infine imposto i parametri della email:

With NewMail
  .To = Worksheets("Elenco").Range("C2")
  .Subject = "Invio di prova"
  .Body = "Potrebbe essere il riferimento a una cella, così sarebbe un testo variabile"
 '  .CC =  indirizzo in copia per conoscenza, se mi serve. qui è commentato
  .Send
End With

Le varie impostazioni, naturalmente, potrebbero fare riferimento a una tabella, se fossimo in Access, o ai controlli presenti su una maschera.

Dopo aver eseguito il codice, vi troverete in Outlook una email pronta nella posta in uscita. Ancora una volta, se impariamo a scrivere codice VBA il nostro lavoro diventa meno pesante. O no?