Sono diversi i motivi che ti potrebbero indurre le persone a voler inviare email direttamente da Excel. Ad esempio hai dei report in excel o dei fogli excel che si aggiornano su base giornaliera o settimanale e che desideri inviare via email a te stesso o ai tuoi clienti. Esistono diverse tecniche che consentono di schedulare e inviare e-mail da Excel, e alcuni codici VBA pronti all’uso sono descritti in discussioni già aperte nel nostro forum come ad esempio:

Qui di seguito invece vediamo come sfruttare VBA e la libreria Collaboration Data Objects (CDO) per inviare email da excel

CDO è un componente di messaggistica utilizzato in Windows ed è un componente è già incluso nell’installazione VBA in Microsoft Word o Excel ed è pronto per l’uso. L’utilizzo del componente rende estremamente semplice l’invio di e-mail dai programmi Windows con VBA. In questo esempio, utilizzeremo il componente CDO in Microsoft Excel per inviare un’email con i risultati presi da una cella Excel specifica.

Creazione della VBA Macro

Per prima cosa vai nella scheda SVILUPPO di Excel. Se non vedi tale scheda potrai attivarla andando in File –> Opzioni Excel e in Personalizzazione per attivare tale scheda.

All’interno della scheda SVILUPPO clicca su  Inserisci nel box Controlli Modulo e seleziona l’icona relativa alla funzione “Pulsante di Comando”:

Disegna il pulsante nel foglio Excel e poi fai doppio click per aprire l’editor VBA:

Dopo che si apre l’editor VBA, dovrai aggiungere la referenza alla libreria CDO. Per far ciò clicca in alto su Tools > References come mostrato nella figura sotto:

Nella lista vai in basso fino a trovare Microsoft CDO for Windows 2000 Library. Seleziona il relativo box e clicca su OK.

Impostazioni CDO

Ora sei pronto per utilizzare CDO per inviare e-mail da Microsoft Excel. Per fare ciò, è innanzitutto necessario creare gli oggetti di posta e impostare tutti i campi necessari per inviare l’e-mail. Tieni presente che mentre molti campi sono facoltativi,  i valori “Da” (from) e “A” (to) sono obbligatori.

La cosa interessante di questo metodo è che puoi creare qualsiasi stringa per personalizzare il messaggio e-mail e assegnarlo alla variabile strBody. Puoi mettere insieme i componenti del messaggio utilizzando la stringa & e potrai inserire i dati da uno qualsiasi dei fogli di Microsoft Excel direttamente nel messaggio di posta elettronica, proprio come nell’esempio sopra (dove abbiamo detto di inviare via email il contenuto della cella A1 del foglio Sheet 1.

Adesso bisogna configurare CDO per utilizzare un qualsiasi server SMTP esterno per l’invio delle email. Ecco il codice con all’interno i parametri da modificare in base al SMTP che si vuole utilizzare (es. quello di Gmail):

Ora che hai configurato la connessione al server SMTP per l’invio dell’email, bisogna compilare i campi appropriati per l’oggetto CDO_Mail e cliccare sul comando Invia. Ecco il codice da aggiungere a quanto già visto sopra:

Tutto qui. Adesso puoi testare l’intero codice VBA ed eseguirlo.

Quando clicchi sul pulsante di Invio, non ci saranno finestre a comparsa o messaggi di avviso di sicurezza che possono verificarsi quando si ricorre all’utilizzo dell’oggetto di posta di Outlook. In questo script ci siamo svincolati totalmente da Outlook.

CDO mette semplicemente insieme l’e-mail e utilizza i dettagli della connessione al server SMTP per inviare il messaggio. Probabilmente è il modo più semplice per incorporare e inviare email tramite script VBA Excel.

NB: Se dutante l’invio dell’email si ottiene un errore del tipo “The transport failed to connect to the server” allora molto probabilmente hai inserito dati non corretti del SMTP o nome utente e password errata. Ricontrolla tutti questi dati e riprova

Tutto questo può essere facilmente automatizzato senza dover cliccare il pulsante di invio. Per fare questa automatizzazione bisogna andare nell’editor VBA e copiare e incollare tutto il codice visto sopra. Poi seleziona l’opzione ThisWorkbook sotto VBAProject

Copia e incolla il codice in ThisWorkbook. Poi sostituisci la prima riga con Sub Workbook_Open(). Questo farà in modo che la macro si avvierà ogni volta che apri il file

Vai poi in Task Scheduler. Utilizzeremo questo strumento per chiedere a Windows di aprire automaticamente il foglio di calcolo a intervalli regolari, a quel punto verrà avviata la nostra macro e quindi anche l’e-mail.

Seleziona Create Basic Task… dal menu Actions e segui la procedura guidata fino a quando si apre la finestra Action. Qui seleziona Start a program e clicca su Next.

Usa il pulsante Browse per trovare il percorso di Microsoft Excel sul tuo computer. Poi inserisci il percorso del tuo file Excel nel campo Add arguments. Completa il wizard e la schedulazione sarà pronta e attiva.

 

Come Inviare Email da Excel con Script VBA

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.