Come inviare e-mail da un foglio di calcolo Excel utilizzando gli script VBA

Ti mostreremo come configurare e-mail automatizzate da Excel utilizzando Collaboration Data Objects, (CDO) e script VBA. I nostri modelli di codice rendono questo molto più semplice di quanto sembri!

Ti mostreremo come configurare e-mail automatizzate da Excel utilizzando Collaboration Data Objects, (CDO) e script VBA.  I nostri modelli di codice rendono questo molto più semplice di quanto sembri!
Annuncio pubblicitario

Aggiornato da Brad Jones il 4 luglio 2017.

L'uso di e-mail come parte di qualsiasi programma è un buon modo per automatizzare attività importanti e migliora significativamente il valore e la funzionalità di qualsiasi programma o script.

In passato, ho utilizzato l'e-mail molto nei miei lavori batch e in altri script automatizzati, che è stato descritto in articoli precedenti sull'utilizzo di strumenti come Sendmail Invia e-mail automatizzate utilizzando SendEmail e Utilità di pianificazione di Windows Invia e-mail automatizzate utilizzando SendEmail e attività di Windows Utilità di pianificazione Indipendentemente dal tipo di lavoro, in genere tutti a un certo punto devono inviare un'email a un capo o supervisore con rapporti di stato giornalieri, settimanali o mensili. Leggi di più o Blat per emettere e-mail direttamente dalla riga di comando Invia facilmente e-mail di riga di comando con Blat Invia facilmente e-mail di riga di comando con Blat Blat. Non esattamente la parola che intendi sarebbe il nome di uno strumento che puoi utilizzare per inviare e-mail a chiunque nel mondo, da qualsiasi applicazione o strumento software che ... Leggi altro, o da uno script da riga di comando.

Sono ottimi per le volte in cui si dispone di uno script che monitora lo stato di un computer o lo stato di un processo specifico, ma cosa succede se si desidera automatizzare l'invio di e-mail da prodotti Microsoft Office come Word o Excel?

Ci sono molti motivi per cui potresti volerlo fare. Forse disponi di personale che aggiorna documenti o fogli di lavoro su base settimanale e desideri ricevere una notifica via email di tali aggiornamenti e persino un rapporto dei dati all'interno di tali fogli. Esistono alcune tecniche che è possibile utilizzare per programmare e-mail automatizzate da Excel, ma Collaboration Data Objects (CDO) rimane il mio preferito.

Invio di email da Microsoft Excel

Probabilmente stai pensando che scrivere e-mail in uscita in uno script VBA di Excel sarà dolorosamente complicato. Bene, non è affatto così.

CDO è un componente di messaggistica utilizzato in Windows per alcune generazioni del sistema operativo. Si chiamava CDONTS e, con l'avvento di Windows 2000 e XP, è stato sostituito con "CDO per Windows 2000". Questo 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 prodotti Windows con VBA. In questo esempio, utilizzerò il componente CDO in Microsoft Excel per inviare un'email che recapiterà i risultati da una cella Excel specifica.

Crea una macro VBA

Il primo passo è andare alla scheda Sviluppo Excel.

All'interno della scheda Sviluppatore, fai clic su Inserisci nella casella Controlli, quindi seleziona un pulsante di comando.

Come inviare e-mail da un foglio di calcolo Excel utilizzando gli script VBA senza titolo

Disegnalo nel foglio e quindi creane una nuova macro.

Come inviare e-mail da un foglio di calcolo Excel Utilizzando gli script VBA creare macro

Quando Microsoft Excel apre l'editor VBA, è necessario aggiungere il riferimento alla libreria CDO. Passare a Strumenti > Riferimenti nell'editor.

Come inviare e-mail da un foglio di calcolo Excel Utilizzando i riferimenti degli script VBA

Scorri l'elenco fino a trovare Microsoft CDO per Windows 2000 Library . Seleziona la casella di controllo e fai clic su OK .

Come inviare e-mail da un foglio di calcolo Excel utilizzando gli script VBA microsoft cdo

Impostare il CDO da e verso i campi

Ora sei pronto per utilizzare CDO per emettere 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 campi Da e A sono obbligatori.

 Dim CDO_Mail As Object Dim CDO_Config As Object Dim SMTP_Config As Variant Dim strSubject as String Dim strFrom as String Dim strTo as String Dim strCc as String Dim strBcc as String Dim strBody As String strSubject = "Risultati del foglio di calcolo Excel" strFrom = "ryxxxxxx @ xxxxxcast .net "strTo =" [email protected] "strCc =" "strBcc =" "strBody =" I risultati totali per questo trimestre sono: "& Str (Sheet1.Cells (2, 1)) 

La cosa interessante di questo è che puoi creare qualsiasi stringa per personalizzare un messaggio e-mail completo e assegnarlo alla variabile strBody . Metti insieme i componenti del messaggio utilizzando la stringa & per inserire i dati da uno qualsiasi dei fogli di Microsoft Excel direttamente nel messaggio di posta elettronica, proprio come ho mostrato sopra.

Configura CDO per utilizzare un SMTP esterno

La prossima sezione di codice è dove si configurerà CDO per utilizzare qualsiasi server SMTP esterno che si desidera utilizzare. In questo caso, non ho bisogno di usare SSL perché il mio server SMTP non lo richiede. CDO è in grado di SSL, ma questo è al di fuori degli scopi di questo articolo. Se hai bisogno di usare SSL, consiglio vivamente l'incredibile annotazione di Paul Sadowski sull'utilizzo di CDO.

 Imposta CDO_Mail = CreateObject ("CDO.Message") On Error GoTo Error_Handling Imposta CDO_Config = CreateObject ("CDO.Configuration") CDO_Config.Load -1 Imposta SMTP_Config = CDO_Config.Fields con SMTP_Config .Item ("http://schemas.microsoft .com / cdo / configuration / sendusing ") = 2 .Item (" http://schemas.microsoft.com/cdo/configuration/smtpserver ") =" smtp.gmail.com ".Item (" http: // schemi .microsoft.com / cdo / configuration / smtpauthenticate ") = 1 .Item (" http://schemas.microsoft.com/cdo/configuration/sendusername ") =" [email protected] ".Item (" http: / /schemas.microsoft.com/cdo/configuration/sendpassword ") =" password ".Item (" http://schemas.microsoft.com/cdo/configuration/smtpserverport ") = 25 .Item (" http: // schemi .microsoft.com / cdo / configuration / smtpusessl ") = True. Update Fine Con Con CDO_Mail Set .Configuration = CDO_Config End With 

Finalizzare l'installazione di CDO

Ora che hai configurato la connessione al server SMTP per l'invio dell'email, tutto ciò che devi fare è compilare i campi appropriati per l' oggetto CDO_Mail e inviare il comando Invia . Ecco come lo fai:

 CDO_Mail.Subject = strSubject CDO_Mail.From = strFrom CDO_Mail.To = strTo CDO_Mail.TextBody = strBody CDO_Mail.CC = strCc CDO_Mail.BCC = strBcc CDO_Mail.Send Error_Handling: Se Err.Description "" Allora MsgBox Err.Description 

Così il gioco è fatto. 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. CDO mette semplicemente insieme l'e-mail e utilizza i dettagli della connessione al server SMTP per attivare il messaggio. Probabilmente è il modo più semplice che conosco per incorporare la posta elettronica negli script VBA di Microsoft Word o Excel.

Ecco come appariva il messaggio che ho ricevuto nella mia casella di posta:

Come inviare e-mail da un foglio di calcolo Excel utilizzando gli script VBA che funzionano via e-mail

Risoluzione dei problemi

Se si riceve un errore che indica che il trasporto non è riuscito a connettersi al server, assicurarsi di aver inserito il nome utente, la password, il server SMTP e il numero di porta corretti nelle righe di codice elencate sotto Con SMTP_Config .

Automatizzare il processo

È tutto molto bello poter inviare le informazioni da Microsoft Excel come e-mail con il semplice tocco di un pulsante. Tuttavia, potresti voler utilizzare questa funzionalità regolarmente, nel qual caso avrebbe senso automatizzare il processo 5 Risorse per macro di Excel per automatizzare i fogli di calcolo 5 Risorse per macro di Excel per automatizzare i fogli di calcolo Ricerca di macro di Excel? Ecco cinque siti che hanno ottenuto ciò che stai cercando. Leggi di più .

Per fare ciò, dovremo apportare una modifica alla macro che abbiamo creato. Dirigetevi al Visual Basic Editor e copiate e incollate l'intero codice che abbiamo messo insieme. Quindi, selezionare ThisWorkbook dalla gerarchia Project .

Come inviare e-mail da un foglio di calcolo Excel con gli script VBA questo libro di esercizi

Copia e incolla il tuo codice in ThisWorkbook . Quindi, sostituire la prima riga con Sub Workbook_Open () . Ciò eseguirà la macro ogni volta che si apre il file.

Come inviare e-mail da un foglio di calcolo Excel Utilizzando la cartella di lavoro degli script VBA aperta

Quindi, aprire 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, inviando l'e-mail.

Come inviare e-mail da un foglio di calcolo di Excel Utilizzando gli script VBA creare un'attività di base

Seleziona Crea attività di base ... dal menu Azioni e prosegui nella procedura guidata fino a raggiungere la schermata Azione . Selezionare Avvia un programma e fare clic su Avanti .

Come inviare e-mail da un foglio di calcolo Excel Utilizzando gli script VBA aggiungere argomenti

Utilizzare il pulsante Sfoglia per trovare la posizione di Microsoft Excel sul computer o copiare e incollare il percorso nel campo Programma / script . Quindi, immettere il percorso del documento Microsoft Excel nel campo Aggiungi argomenti . Completa la procedura guidata e la nostra pianificazione dovrebbe essere a posto. Vale la pena eseguire un test pianificando l'azione Come svuotare automaticamente il Cestino in una pianificazione e liberare spazio sprecato Come svuotare automaticamente il Cestino in base a una pianificazione e liberare spazio sprecato Se non si svuota regolarmente Riciclare Bin, potrebbe sprecare gigabyte di spazio sull'unità dati. Ma ora Windows 10 può svuotarlo automaticamente in base a una pianificazione. Leggi di più per un paio di minuti in futuro, quindi modifica l'attività una volta che puoi confermare che funziona.

Potrebbe essere necessario regolare le impostazioni del Centro di fiducia per garantire che la macro funzioni correttamente. Per fare ciò, apri il foglio di calcolo e vai a File > Opzioni > Centro protezione . Da qui, fare clic su Impostazioni di Trust Center e nella schermata successiva impostare il selettore radio su Non mostrare mai informazioni sul contenuto bloccato .

Fai funzionare Microsoft Excel per te

Microsoft Excel è uno strumento incredibilmente potente, ma imparare a trarre il massimo da esso può essere un po 'intimidatorio. Se vuoi veramente padroneggiare il software, devi essere a tuo agio con VBA. Esercitazione di programmazione Excel VBA per principianti L'esercitazione di programmazione VBA di Excel per principianti VBA è uno strumento di alimentazione di Microsoft Office. Puoi usarlo per automatizzare le attività con macro, impostare trigger e molto altro. Ti presenteremo alla programmazione di base visiva di Excel con un semplice progetto. Leggi di più, e non è un compito da poco.

Tuttavia, i risultati parlano da soli. Con una piccola esperienza VBA alla cintura, sarai presto in grado di eseguire le attività di base di Microsoft Excel senza la tua supervisione, offrendoti più tempo per concentrarti su questioni più urgenti. Ci vuole tempo per fare i conti con VBA, ma vedrai presto i frutti delle tue fatiche se puoi restare fedele.

Riesci a pensare a tutti gli usi interessanti per CDO nei tuoi progetti Microsoft Excel, Access o Word? Condividi i tuoi pensieri e idee nella sezione commenti qui sotto.

In this article