• Scegliere il mittente di un’email inviata con VBA

    maildaoutlook.jpg

    Una novità interessante introdotta con il VBA di Office 2007, e mantenuta in Office 2010, è la possibilità di inviare email attraverso VBA utilizzando Outlook e specificando l’account da cui si vuole inviare la email.

    Anche con Office 2003 si potevano inviare email comandando Outlook tramite VBA, ma senza specificare l’account dal quale le email dovevano partire. L’email veniva inviata sempre e comunque dall’account principale. Ora, grazie alla introduzione della proprietà SendUsingAccount dell’oggetto email le cose sono cambiate.

    Prima di proporre il codice che esegue questa operazione, ricordiamo che si possono inviare email tramite Outlook da tutte le applicazioni Office, non solo da Outlook stesso. Basta aggiungere, nell’editor di VBA del file da cui si vuole inviare l’email la libreria Microsoft Outlook. Per aggiungere la libreria, nell’editor di VBA, basta scegliere Strumenti > Riferimenti e selezionare la libreria necessaria dalla finestra che si presenta.

    Una volta individuato l’evento che avvierà l’invio dell’email, basta completare come segue la routine che gestisce questo evento (noi immaginiamo di rispondere all’evento click su un pulsante).

    Private Sub InviaMail_Click()
    Dim bStarted As Boolean
    Dim oOutlookApp As Outlook.Application
    Dim oItem As Outlook.MailItem
    On Error Resume Next
    Set oOutlookApp = GetObject(, "Outlook.Application")
    If Err 0 Then
    Set oOutlookApp = CreateObject("Outlook.Application")
    bStarted = True
    End If
    'Crea un nuovo oggetto email
    Set oItem = oOutlookApp.CreateItem(olMailItem)
    With oItem
    'Imposta il destinatario
    .To = "nome@server.it"
    'Imposta il destinatario in copia
    '.CC = "nome@server.it"
    'Definisce l'oggetto della email
    .Subject = "E-mail da VBA"
    'Definisce il contenuto della email
    .Body = "Ciao da VBA"
    ' Definisce l'accont da usare per l'invio
    .SendUsingAccount = oOutlookApp.Session.Accounts.Item(2)
    'invia effettivamente l'email
    .Send
    End With
    If bStarted Then
    'Chiude Outlook se è stato aperto via codice
    oOutlookApp.Quit
    End If
    'Pulizia
    Set oItem = Nothing
    Set oOutlookApp = Nothing
    End Sub

    Si noti che che l’account da usare va indicato con un numero. A questo proposito bisogna sapere che gli account sono numerati nell’ordine in cui compaiono nella finestra degli account di Outlook. La numerazione parte da 1 che è l’account predefinito.

    Tags:

    Se vuoi aggiornamenti su Scegliere il mittente di un’email inviata con VBA inserisci la tua e-mail nel box qui sotto:


    Ho letto e acconsento l'informativa sulla privacy

    Si No

    Acconsento al trattamento dei dati personali di cui al punto 3 dell'informativa sulla privacy

    Si No

    Commenti

    1. omar dice:

      ricevo un errore nella riga di codice 7

      quote:
      If Err 0 Then

    2. Alessandra Salvaggio dice:

      Effettivamente mi è “saltato” un diverso .
      La riga corretta è

      If Err 0 Then

    3. omar dice:

      Grazie Alessandra!
      Funziona!
      Posso aggiungere lo stesso file dove inserisco la ruotine in allegato ?

    4. Alessandra Salvaggio dice:

      Scusa Omar, ma non ho capito la domanda.

    5. Omar dice:

      Mi sono spiegato male.
      Posso personalizzare l’email in modo tale che in allegato inserisca il file excel con la tua routine ?
      Grazie ancora

    6. Alessandra Salvaggio dice:

      Per inserire un allegato via VBA prova ad usare questa sintassi

      oItem.Attachments.Add “percorsoNomefile.xls”

    Commenta

    Your email address will not be published. Required fields are marked *