008. Invio mail tramite VBA

Download PDF

Tramite VBA è possibile inviare email in modo automatizzato.
Di seguito trovare il codice per standard per inviare una mail con l’indicazione
del destinatario, desitinatario in CC ed in BCC, oggetto, testo della mail, allegati.
Si può inseire ad esempio in un progetto per poter inviare una mail standard ad un referente.

Nel file allegato troverete inoltre altre tre macro, commentate:
– “InviaMail_Parametrica()”, vi permette di personalizzare l’inivio appoggiandovi ad una tabella
dove potete inserire i dati a vostro piacimneto senza metterli nel codice
– “InviaMail_con_Condizione(DEBITORE as Integer)” è uno sviluppo di quella sopra e consente di lanciare l’invio di mail in base ad una condizione. Nell’esempio ho inserito un formula if nella colonna “CHECK DEBITO”
che restiuisce “INVIARE MAIL” se l’importo della colonna “DEBITO” è maggiore di zero.
In queesto caso, la macro cicla su tutta la tabella ed invia mail solo se il debito è >0
Questa macro viene lanciata dalla macro “LanciaMailconCondizione()”
-“InviaMail_con_Condizione_E_Dialog(DEBITORE as Integer)” è uno sviluppo di quella sopra e consente di selezionare il file da alligare tramite una maschera

NOTA:
Prima di lanciare le macro creare in C: i due file di test “test1.txt” e “test2txt”
SUGGERIMENTO:
è preferibile utilizzare l’istruzione “.Display” al posto di “.Send” in quanto
la prima permette di poter vedere ed eventualmente modificare la mail prima dell’invio.

Invio Mail tramite VBA.xls

Public Sub InviaMail_Predefinita()
Dim destinatario As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

With OutMail
 .to = PAPERINO@gmail.com 'inserire la mail del destinatario in TO
 .CC = inCC_PAPERINO@gmail.com 'inserire la mail del destinatario in CC
 .BCC = inBCC_PAPERINO@gmail.com 'inserire la mail del destinatario in BCC
 .Subject = "PROVA"
 .Body = "Ciao PAPERINO," & Chr(10) & _
 Chr(10) & "questa è una prova di invio" & _
 Chr(10) & _
 Chr(10) &"office-guru.com"
 .Attachments.Add ("C:\test1.txt") 'inserire il percorso ed il nome del file da allegare
 .Attachments.Add ("C:\test2.txt") 'inserire il percorso ed il nome del file da allegare
 '.Send 'per inviare subito la mail
 .Display 'per aprire e controllare la mail prima di inviarla manualmente
 End With

Set OutMail = Nothing
 Set OutApp = Nothing

End Sub

Un lettore ci chiede:
“Si può inserire nel codice un ‘IF’ per fare si che l’email venga inviata automaticamente? in pratica avrei bisogno di sapere che se in una textbox compare un numero deve partire in automatico l’email senza premere il tasto INVIO.”

Risposta:
Per ottenere il risultato voluto bisonga sostituire nella macro al codice:

'.Send 'per inviare subito la mail
 .Display 'per aprire e controllare la mail prima di inviarla manualmente

il codice:

If Me.NomeTestBoxDaModificare= MioValoreDaModificare then
        .Send
Else
       .Display
End if

Nel caso si volesse invece inviare una mail utilizzando i dati di riga attiva, selezionata,
si può modificare la macro “InviaMail_Parametrica” inserendo al posto del riferimento fisso alla riga 2, il numero della riga selezionata: Selection.Row

A voi il file con la modifica richiesta da un nostro lettore:

APRI

Riccardo Vincenti

The following two tabs change content below.