VBA: Inviare allegato PDF con Outlook

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).

No thoughts on “VBA: Inviare allegato PDF con Outlook”