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

Per inviare e-mail da Microsoft Excel richiede solo pochi semplici script. Aggiungi questa funzionalità ai tuoi fogli di lavoro e puoi davvero migliorare quanto puoi realizzare in Excel.

Sblocca ora il cheat " Essential Microsoft Office Shortcuts "!

Questo ti iscriverà alla nostra newsletter

Inserisci il tuo indirizzo email

Abbiamo coperto un sacco di grandi macro di Excel , che possono realizzare le stesse cose che possono fare gli script VBA, ma senza la necessità di conoscenze di programmazione. Ma ci sono molte cose avanzate che puoi fare solo con VBA, come la creazione di un rapporto sul foglio di calcolo con tutte le informazioni del tuo PC .

Perché inviare e-mail da Excel?

Ci sono molti motivi per cui potresti voler inviare una email da Microsoft Excel.

Forse hai uno staff che aggiorna documenti o fogli di lavoro su base settimanale e desideri ricevere una notifica via email di quando tali aggiornamenti sono stati eseguiti. Oppure potresti avere un foglio di lavoro di contatti e vuoi inviare una e-mail a tutti in una volta.

Probabilmente stai pensando che lo scripting di una trasmissione di posta elettronica da Excel sarà complicato. Non è affatto così.

La tecnica in questo articolo si avvarrà di una funzionalità che è stata disponibile in VBA di Excel per molto tempo, Collaboration Data Objects (CDO).

cdo in Excel

CDO è un componente di messaggistica utilizzato in Windows sin dalle prime 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, utilizzerai il componente CDO in Excel per inviare un'email che recapiterà i risultati da una specifica cella di Excel.

Passaggio 1: creare 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.

aggiungendo pulsante in Excel

Disegnalo nel foglio e poi crea una nuova macro facendo clic su Macro nel nastro Sviluppatore.

aggiungi macro per il pulsante di comando

Quando fai clic sul pulsante Crea , si aprirà l'editor VBA.

Aggiungi il riferimento alla libreria CDO navigando in Strumenti > Riferimenti nell'editor.

aggiungendo riferimenti in Excel

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

aggiungendo cdo per il riferimento a Windows

Quando fai clic su OK , prendi nota del nome della funzione in cui stai incollando lo script. Ne avrai bisogno in seguito.

Passaggio 2: Impostare i campi "Da" e "A" del CDO

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 = "Results from Excel Spreadsheet" strFrom = "[email protected]" strTo = "[email protected]" strCc = "" strBcc = "" strBody = "The total results for this quarter are: " & 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 qualsiasi foglio di Microsoft Excel direttamente nel messaggio di posta elettronica, proprio come mostrato sopra.

Passaggio 3: Configurare CDO per utilizzare un SMTP esterno

La prossima sezione di codice è dove configurerai CDO per utilizzare qualsiasi server SMTP esterno per inviare l'email.

Questo esempio è una configurazione non SSL tramite Gmail. CDO è in grado di SSL, ma questo è al di fuori degli scopi di questo articolo. Se hai bisogno di usare SSL, questo codice avanzato in Github può aiutarti.

 Set CDO_Mail = CreateObject("CDO.Message") On Error GoTo Error_Handling Set CDO_Config = CreateObject("CDO.Configuration") CDO_Config.Load -1 Set SMTP_Config = CDO_Config.Fields With SMTP_Config .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" .Item("http://schemas.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://schemas.microsoft.com/cdo/configuration/
smtpusessl") = True .Update End With With CDO_Mail Set .Configuration = CDO_Config End With 

Passaggio 4: 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: If Err.Description <> "" Then MsgBox Err.Description 

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. È il modo più semplice per incorporare la posta elettronica negli script VBA di Microsoft Word o Excel.

Per connettere il tuo pulsante di comando a questo script, vai nell'editor del codice e fai clic su Sheet1 per visualizzare il codice VBA per quel foglio di lavoro.

Digita il nome della funzione in cui hai incollato lo script sopra.

collega il pulsante di comando allo script

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

email eccellente ricevuta

Nota : 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 .

Portalo oltre e automatizza l'intero processo

È tutto molto bello poter inviare e-mail da Excel con il semplice tocco di un pulsante. Tuttavia, potresti voler utilizzare questa funzionalità su base regolare, nel qual caso avrebbe senso automatizzare il processo .

Per fare ciò, è necessario apportare una modifica alla macro. Vai al Visual Basic Editor e copia e incolla l'intero codice che abbiamo messo insieme.

Quindi, selezionare ThisWorkbook dalla gerarchia Project .

Dai due campi a discesa nella parte superiore della finestra del codice, selezionare Cartella di lavoro e selezionare Apri dal menu a discesa Metodi.

Incolla lo script email sopra in Private Sub Workbook_Open () .

Ciò eseguirà la macro ogni volta che si apre il file di Excel.

Quindi, aprire Task Scheduler .

Utilizzerai questo strumento per chiedere a Windows di aprire automaticamente il foglio di calcolo a intervalli regolari, a quel punto verrà avviata la tua macro, inviando l'e-mail.

creare un'attività di base nell'utilità di pianificazione

Seleziona Crea attività di base … dal menu Azione e prosegui nella procedura guidata fino a raggiungere la schermata Azione .

Selezionare Avvia un programma e fare clic su Avanti .

selezionare l'utilità di pianificazione del programma

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 tua pianificazione sarà a posto.

Vale la pena eseguire un test programmando l'azione per un paio di minuti in futuro, quindi modificando l'attività una volta confermato che funziona.

Nota : 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 , 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 automaticamente le attività di base di Microsoft Excel, offrendoti più tempo per concentrarti su argomenti più urgenti.

Ci vuole tempo per sviluppare competenze con VBA, ma vedrai presto i frutti delle tue fatiche se puoi restare fedele.

Un ottimo punto di partenza è il nostro autorevole tutorial sull'utilizzo di VBA in Excel . Una volta che hai finito, questo semplice script per inviare e-mail da Excel ti sembrerà un gioco da ragazzi.

Leggi l'articolo completo: Come inviare e-mail da un foglio di calcolo Excel utilizzando gli script VBA

Fonte: Utilizzare