Ecco uno snippet molto semplice adatto ad essere utilizzato in qualunque applicazione MS-Office (Word, Access, Excel ecc.) Per inviare un allegato utilizzando Outlook (già configurato e pronto per l’utilizzo), anche senza “aprirlo”
Il “trucco” consiste nel richiamare la function che trascrivo tramite una call e passando i parametri minimi necessari.
Inserite in VBA la seguente funzione:
Function SpedisciEmail(EmailAddress, PDFallegato, SoggettoEmail, Messaggio)
Dim OggOutlook As Object
Dim OggEmail As Object
Set OggOutlook = CreateObject("Outlook.Application")
Set OggEmail = OggOutlook.CreateItem(0)
On Error Resume Next
With OggEmail
.To = EmailAddress
.CC = "" 'utile per inserire un indirizzo in copia
.BCC = "" 'utile per inserire un indirizzo in copia nascosta
.Subject = SoggettoEmail
.Body = Messaggio
.Attachments.Add PDFallegato
.Send
End With
On Error GoTo 0
Set OggEmail = Nothing
Set OggOutlook = Nothing
End Function
Una volta inserita la funzione in un modulo VBA, potrete creare la vostra SUB/Macro che in sostanza avrà il compito di valorizzare almeno le 4 variabili utilizzate. Di seguito un semplice test:
Sub test()
Dim EmailAddress, PDFallegato, SoggettoEmail, Messaggio As String
EmailAddress = "This email address is being protected from spambots. You need JavaScript enabled to view it."
SoggettoEmail = "Test di soggetto email"
Messaggio = "Gentile destinatario, ecco il suo allegato"
PDFallegato = "C:\temp\PDFTest.pdf"
Call SpedisciEmail(Email, PDFallegato, SoggettoEmail, Messaggio)
End Sub
Ricordate, prima di utilizzate la function, di abilitare in VBA-Strumenti-Riferimenti il riferimento “Microsoft Outlook xx.x Object Library” e, ovviamente, anche la medesima libreria dell’applicazione chiamante (per esempio Microsoft Word xx.x Object Library).