Guida Excel – Inviare email da Excel
Normalmente utilizziamo client di posta come Outlook, Gmail, ecc. per inviare email. Tuttavia, molte persone archiviano dati nelle cartelle di lavoro Excel e hanno la necessità di inviare tali dati ad altri mentre ci lavorano. Per questo motivo, può essere utile inviare email direttamente dalla cartella di lavoro Excel, risparmiando tempo rispetto all'utilizzo di un client di posta. Questa guida passo-passo ti mostrerà come inviare email da Excel in diverse situazioni.
Nota: Prima di applicare i metodi seguenti, è necessario configurare un client di posta Outlook sul tuo computer e impostarlo come client di posta predefinito.
Indice dei contenuti: [ Nascondi ]
1. Le basi per inviare email da Excel
Questa sezione introduce le basi per inviare email da Excel.
1.1 Inviare email da Excel con le funzioni integrate di Excel
Se desideri solo inviare email semplici da Excel, includendo solo i campi A, Oggetto, Cc e corpo del messaggio, le funzioni integrate di Excel possono aiutarti.
1.1.1 Inviare email da Excel utilizzando una formula
Come mostrato nella tabella sottostante, per inviare email diverse da Excel in base ai campi forniti, puoi utilizzare i riferimenti di cella dei campi per creare diverse formule Collegamento ipertestuale. Dopo aver creato i collegamenti email, puoi cliccare sul collegamento desiderato per inviare automaticamente una email.
Nota: Se ci sono più destinatari nei campi A o Cc, separali con punto e virgola.
Questa sezione è suddivisa in quattro parti per mostrarti i passaggi per aggiungere indirizzo email, destinatari Cc, oggetto e corpo del messaggio separatamente alla formula Collegamento ipertestuale. Procedi come segue.
La sintassi e gli argomenti della funzione "COLLEGAMENTO.IPERTESTUALE" sono i seguenti.
Sintassi
COLLEGAMENTO.IPERTESTUALE(posizione_collegamento, [nome_amicovole])
Argomenti
1.1.1.1 Aggiungere l'indirizzo email alla formula Collegamento ipertestuale
Qui utilizziamo "mailto:" come parte della formula per aggiungere un destinatario email. In questo esempio, l'indirizzo email del primo destinatario si trova nella cella B2, quindi dobbiamo aggiungere "mailto:" e fare riferimento a B2.
“mailto:”&B2
1. Seleziona una cella in cui visualizzare il collegamento ipertestuale. In questo caso, seleziono la cella F2.
2. Inserisci quindi la seguente formula.
=HYPERLINK("mailto:"&B2)
Nota: Se premi il tasto "Invio", verrà creato un collegamento ipertestuale come mostrato nello screenshot qui sotto. Quando clicchi sul collegamento, verrà creata una email di Outlook e l'indirizzo del destinatario verrà inserito automaticamente nel campo A.
L'indirizzo email del destinatario è ora stato aggiunto alla formula Collegamento ipertestuale. Continua con i passaggi successivi per aggiungere oggetto, destinatari Cc e corpo del messaggio secondo necessità.
1.1.1.2 Aggiungere destinatari Cc alla formula Collegamento ipertestuale
Per aggiungere destinatari Cc alla funzione Collegamento ipertestuale, aggiungi "?cc=" come parte della formula come segue.
La formula nella cella F2 dovrebbe essere la seguente:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2)
1.1.1.3 Aggiungere oggetto alla formula Collegamento ipertestuale
Per aggiungere l'oggetto alla funzione Collegamento ipertestuale, aggiungi "&subject=" come parte della formula come segue.
La formula nella cella F2 ora dovrebbe apparire così:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 Aggiungere testo del corpo con a capo alla formula Collegamento ipertestuale
L'ultimo passaggio è aggiungere il testo del corpo alla formula Collegamento ipertestuale. Come puoi vedere nell'esempio, due righe di testo in E2 sono separate da un a capo e desideri mantenere l'a capo nel corpo della email. Outlook riconosce l'a capo in questa situazione? Verifichiamolo.
Per aggiungere il testo del corpo alla formula Collegamento ipertestuale, devi aggiungere “&body=" come parte della formula come segue.
La formula nella cella F2 ora viene visualizzata come segue:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)
Nota: Se premi il tasto "Invio" e clicchi sul collegamento, vedrai che il contenuto del corpo della email viene visualizzato sulla stessa riga.
Per visualizzare il corpo della email su righe separate, devi modificare il contenuto della cella aggiungendo il codice carattere di a capo "%0A" dove desideri inserire un'interruzione di riga. Vedi screenshot:
1.1.1.5 Specificare il testo da visualizzare per il collegamento ipertestuale
Nei passaggi precedenti, abbiamo completato l'argomento posizione_collegamento con i campi email. In questa sezione, andremo a completare il prossimo argomento [nome_amicovole].
In questo caso, voglio che la cella del collegamento ipertestuale visualizzi il testo “Email a xx”, dove xx è il nome del destinatario in A2. Quindi, la formula in F2 dovrebbe essere modificata come segue:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)
Premi il tasto "Invio" per ottenere il risultato.
Seleziona questa cella con la formula e trascina il "manico di riempimento automatico" verso il basso per creare altri collegamenti email. Vedi screenshot:
1.1.2 Inviare email da Excel con la funzione Collegamento ipertestuale
Oltre a utilizzare la formula Collegamento ipertestuale sopra, puoi creare manualmente un collegamento email con la funzione "Inserisci collegamento ipertestuale" in Excel. Questa sezione mostra i passaggi.
1. Fai clic destro su una email dove vuoi inserire un collegamento, seleziona "Collegamento" dal menu contestuale.
2. Nella finestra di dialogo "Inserisci collegamento ipertestuale" che si apre, configura come segue.

Quando clicchi sul collegamento ipertestuale, verrà creata una email di Outlook con i campi A, Oggetto e Corpo specificati come mostrato nello screenshot qui sotto.
Note:
1.2 Inviare email a più destinatari nelle celle tramite script VBA
Nell'esempio sopra, puoi vedere che più indirizzi email sono visualizzati in una cella, separati da punto e virgola. Se hai un elenco di indirizzi email come mostrato nello screenshot qui sotto e vuoi inviare una email o email indipendenti a tutti, il seguente codice VBA può aiutarti.
1.2.1 Inviare una email a più destinatari nelle celle tramite script VBA
1. Nel foglio di lavoro che contiene tutti gli indirizzi email a cui vuoi inviare la email. Premi i tasti "Alt" + "F11" per aprire la finestra "Microsoft Visual Basic for Applications".
2. Nella finestra "Microsoft Visual Basic for Applications", clicca su "Inserisci" > "Modulo", quindi incolla il seguente codice nella finestra "Modulo (Codice)".
Codice VBA: Invia email a un elenco di indirizzi email
Sub sendmultiple()
'updateby Extendoffice 20220802
Dim xOTApp As Object
Dim xMItem As Object
Dim xCell As Range
Dim xRg As Range
Dim xEmailAddr As String
Dim xTxt As String
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
If xRg Is Nothing Then Exit Sub
Set xOTApp = CreateObject("Outlook.Application")
For Each xCell In xRg
If xCell.Value Like "*@*" Then
If xEmailAddr = "" Then
xEmailAddr = xCell.Value
Else
xEmailAddr = xEmailAddr & ";" & xCell.Value
End If
End If
Next
Set xMItem = xOTApp.CreateItem(0)
With xMItem
.To = xEmailAddr
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
End With
End Sub
3. Premi il tasto "F5" per eseguire il codice e apparirà una finestra di dialogo "Kutools per Excel". Seleziona l'elenco degli indirizzi email e clicca su "OK".
Note:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Dopo aver eseguito il codice, tutti gli indirizzi email nell'intervallo selezionato vengono visualizzati nel campo A della finestra del messaggio. Vedi screenshot:
1.2.2 Inviare email separatamente a ciascun destinatario elencato nelle celle tramite script VBA
Il codice sopra aggiunge tutti gli indirizzi email dell'intervallo selezionato nel campo A della finestra del messaggio. Se vuoi inviare email separatamente a ciascun indirizzo elencato nelle celle senza che i destinatari vedano gli indirizzi degli altri, puoi provare il seguente script VBA.
1. Nel foglio di lavoro che contiene tutti gli indirizzi email a cui vuoi inviare le email. Premi i tasti "Alt" + "F11" per aprire la finestra "Microsoft Visual Basic for Applications".
2. Nella finestra "Microsoft Visual Basic for Applications", clicca su "Inserisci" > "Modulo", quindi incolla il seguente codice nella finestra Modulo (Codice).
Codice VBA: Invia email separatamente a ciascun indirizzo elencato nelle celle
Sub SendEmailToAddressInCells()
'Updated by Extendoffice 20220802
Dim xRg As Range
Dim xRgEach As Range
Dim xRgVal As String
Dim xAddress As String
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
On Error Resume Next
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xRg = xRg.SpecialCells(xlCellTypeConstants, xlTextValues)
For Each xRgEach In xRg
xRgVal = xRgEach.Value
If xRgVal Like "?*@?*.?*" Then
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.To = xRgVal
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
'.Send
End With
End If
Next
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
3. Poi clicca su "Strumenti" > "Riferimenti". Nella finestra di dialogo "Riferimenti – VBAProject", trova e seleziona la casella "Microsoft Outlook16.0 Object Library" e poi clicca su "OK" per salvare le modifiche.
4. Premi il tasto "F5" per eseguire il codice e apparirà una finestra di dialogo "Kutools per Excel". Seleziona l'elenco degli indirizzi email e clicca su "OK".
Note:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
In questo esempio, ci sono sei indirizzi email nell'intervallo selezionato, quindi verranno create automaticamente sei finestre di messaggio di Outlook con l'indirizzo email separato elencato nel campo A come mostrato nello screenshot qui sotto.
5. Infine, clicca sul pulsante "Invia" per inviare le email una alla volta.
2. Inserire allegati o firma di Outlook nelle email inviate da Excel (con script VBA)
Questa sezione mostra come inserire allegati o la firma predefinita di Outlook nelle email inviate da Excel.
2.1 Inserire allegati nelle email inviate da Excel
Qui descriviamo i diversi casi di inserimento degli allegati e puoi scegliere il metodo in base alle tue esigenze. In questa sezione puoi imparare a (clicca su uno dei seguenti collegamenti per navigare al metodo corrispondente):
2.1.1 Inviare un determinato file come allegato via email
Puoi applicare il seguente codice VBA per inviare uno o più file in una cartella come allegati da Excel.
1. Premi i tasti "Alt" + "F11".
2. Nella finestra "Microsoft Visual Basic for Applications" che si apre, clicca su "Inserisci" > "Modulo". Poi incolla il seguente codice VBA nella finestra Modulo (Codice).
Codice VBA: Invia file in una cartella come allegati da Excel
Sub EmailWithAttachments()
'Updated by Extendoffice 20220802
Dim xStrFile As String
Dim xFilePath As String
Dim xFileDlg As FileDialog
Dim xFileDlgItem As Variant
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
Set xFileDlg = Application.FileDialog(msoFileDialogFilePicker)
If xFileDlg.Show = -1 Then
With xMailOut
.BodyFormat = olFormatRichText
.To = "xxx@aaa.com"
.Subject = "test"
.HTMLBody = "test"
For Each xFileDlgItem In xFileDlg.SelectedItems
.Attachments.Add xFileDlgItem
Next xFileDlgItem
.Display
End With
End If
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
Note:
3. Poi clicca su "Strumenti" > "Riferimenti". Nella finestra di dialogo "Riferimenti – VBAProject", trova e seleziona la casella "Microsoft Outlook16.0 Object Library" e poi clicca su "OK" per salvare le modifiche.
4. Premi il tasto "F5" per eseguire il codice, quindi si aprirà una finestra "Sfoglia". Seleziona i file che desideri allegare all'email e poi clicca su "OK".
Poi apparirà una finestra di messaggio. Puoi vedere che i file selezionati sono visualizzati come allegati nel campo Allegati.
2.1.2 Inviare il foglio di lavoro corrente come allegato via email
Se vuoi inviare il foglio di lavoro corrente come allegato da Excel, puoi applicare lo script VBA in questa sezione.
1. Premi i tasti "Alt" + "F11".
2. Nella finestra "Microsoft Visual Basic for Applications" che si apre, clicca su "inserisci" > "Modulo". Poi incolla il seguente codice VBA nella finestra "Modulo (Codice)".
Codice VBA: Invia il foglio di lavoro corrente come allegato via email
Sub SendWorkSheet()
'Update by Extendoffice 20220802
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte features"
.Body = "Please check and read this document."
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub
Note:
3. Premi il tasto "F5" per eseguire il codice, quindi il foglio di lavoro corrente viene salvato come cartella di lavoro Excel e inserito automaticamente in una finestra di messaggio come allegato. Vedi screenshot:
Nota: La cartella di lavoro allegata che contiene solo il foglio di lavoro corrente ha lo stesso nome della cartella di lavoro originale. Inoltre, l'orario in cui esegui il codice viene aggiunto anche al nome della cartella di lavoro.
2.1.3 Inviare la cartella di lavoro corrente come allegato via email
Dopo aver appreso il codice VBA per inviare il foglio di lavoro corrente come allegato da Excel, qui forniamo un altro script VBA per aiutarti a inviare l'intera cartella di lavoro come allegato. Procedi come segue.
1. Premi i tasti "Alt" + "F11".
2. Nella finestra "Microsoft Visual Basic for Applications" che si apre, clicca su "Inserisci" > "Modulo". Poi incolla il seguente codice VBA nella finestra Modulo (Codice).
Codice VBA: Invia la cartella di lavoro corrente come allegato da Excel
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
Note:
3. Premi il tasto "F5" per eseguire il codice, quindi la cartella di lavoro corrente viene inserita automaticamente nella finestra del messaggio come allegato. Vedi screenshot:
2.1.4 Inviare l'intera cartella di lavoro come allegato PDF
Per la maggior parte delle persone, è comune salvare una cartella di lavoro Excel come file PDF e poi inviarla come allegato. In questa sezione, ti mostrerò come inviare email direttamente da Excel con la cartella di lavoro aperta come allegato PDF senza doverla salvare manualmente come file PDF.
1. Premi i tasti "Alt" + "F11".
2. Nella finestra "Microsoft Visual Basic for Applications" che si apre, clicca su "Inserisci" > "Modulo". Poi incolla il seguente codice VBA nella finestra Modulo (Codice).
Codice VBA: Invia l'intera cartella di lavoro come allegato PDF
Sub SendWorkBookAsPDF()
'Update 20220803
Dim Wb As Workbook
Dim FilePath As String
Dim FileName As String
Dim xOutApp As Object
Dim xOutMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
FilePath = Environ$("temp") & "\" & FileName
Wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
FilePath, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FilePath
.Display 'or use .Send
End With
Kill FilePath
Set xOutMail = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
Note:
3. Premi il tasto "F5" per eseguire il codice. Quindi la cartella di lavoro corrente viene inserita automaticamente in una nuova finestra di messaggio come allegato PDF. Vedi screenshot:
2.1.5 Inviare il foglio di lavoro corrente come allegato PDF
Ad esempio, c'è una cartella di lavoro chiamata “Vendite mensili” e hai completato una tabella di report vendite in un foglio chiamato “report vendite” e vuoi inviare questo foglio come file PDF ai tuoi colleghi. Il seguente codice VBA può aiutarti.
1. Premi i tasti "Alt" + "F11".
2. Nella finestra "Microsoft Visual Basic for Applications" che si apre, clicca su "inserisci" > "Modulo." Poi incolla il seguente codice VBA nella finestra Modulo (Codice).
Codice VBA: Invia il foglio di lavoro corrente come allegato PDF
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
Note:
3. Premi il tasto "F5" per eseguire il codice. Quindi il foglio di lavoro corrente viene inserito automaticamente in una nuova finestra di messaggio come allegato PDF. Vedi screenshot:
2.2 Inserire la firma di Outlook nelle email inviate da Excel
Prendendo come esempio il caso sopra, applichi il codice VBA sopra per inviare il foglio di lavoro corrente come allegato PDF da Excel, ma la firma di Outlook non può essere aggiunta alla finestra del messaggio. Per mantenere la firma predefinita di Outlook nell'email inviata da Excel, il seguente metodo ti aiuterà.
Di seguito sono elencati due codici VBA.
Codice VBA1: Il codice aiuta a mantenere la firma di Outlook.
Codice VBA2: Il codice aiuta a inviare il foglio di lavoro corrente come allegato PDF.
Codice VBA1: Mantieni la firma di Outlook
.HTMLBody = "Email body" & "
" & .HTMLBody
Codice VBA2: Invia il foglio di lavoro corrente come allegato PDF
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
1. Normalmente, devi premere i tasti "Alt" + "F11" per aprire la finestra "Microsoft Visual Basic for Applications".
2. Nella finestra "Microsoft Visual Basic for Applications", clicca su "Inserisci" > "Modulo". Poi incolla il codice VBA2 sopra nella finestra Modulo (Codice).
3. Per mantenere la firma predefinita di Outlook nell'email inviata da Excel, devi modificare il codice VBA2 come segue:
Ecco il codice completo dopo la modifica.
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.Display
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.HTMLBody = "Email body" & "
" & .HTMLBody
.Attachments.Add FileName
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
4. Premi il tasto "F5" per eseguire il codice. Otterrai così una nuova finestra di messaggio con il foglio di lavoro corrente allegato come file PDF, mentre la firma predefinita di Outlook verrà inserita automaticamente alla fine del corpo della email.
3. Inviare automaticamente email da Excel al verificarsi di una condizione (con script VBA)
Negli esempi sopra, devi eseguire manualmente il codice per inviare la email. Se vuoi che il codice venga eseguito automaticamente al verificarsi di una certa condizione, ad esempio quando una cella raggiunge un determinato valore, quando il valore di una cella cambia, quando viene raggiunta una data, ecc., la email verrà inviata automaticamente. Questa sezione elenca le condizioni più cercate dagli utenti Excel su Google per aiutarti a inviare automaticamente email da Excel al verificarsi di una determinata condizione.
3.1 Inviare automaticamente una email quando una cella raggiunge un determinato valore
Come mostrato nello screenshot qui sotto, supponiamo di avere una tabella vendite con la cella D6 che contiene il totale vendite. Vuoi inviare automaticamente una email al tuo capo in base al totale vendite, ad esempio creare o inviare una email automaticamente quando il totale vendite supera10000, ma se il totale vendite è uguale o inferiore a10000, non viene eseguita alcuna azione.
1. Nel foglio che contiene la tabella vendite, fai clic destro sulla scheda del foglio e clicca su "Visualizza codice" dal menu contestuale.
2. Nella finestra "Microsoft Visual Basic for Applications" che si apre, incolla il seguente codice VBA nella finestra "Foglio (Codice)".
Codice VBA: Invia automaticamente una email quando una cella raggiunge un determinato valore in Excel
Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub
Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub
Note:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
Da ora in poi, quando il valore nella cella D6 supera10000, verrà creata una email come mostrato nello screenshot qui sotto.
3.2 Inviare automaticamente una email quando il valore di una cella cambia
Come mostrato nello screenshot qui sotto, supponiamo di ricevere una cartella di lavoro che contiene le vendite mensili in diversi fogli e il totale vendite in un foglio. Devi verificare il totale vendite e, se viene modificato, inviare la cartella di lavoro al mittente e informarlo che la cella è stata modificata.
1. Nel foglio che contiene la tabella vendite, fai clic destro sulla scheda del foglio e clicca su "Visualizza codice" dal menu contestuale.
2. Nella finestra "Microsoft Visual Basic for Applications" che si apre, incolla il seguente codice VBA nella finestra Foglio (Codice).
Codice VBA: Invia automaticamente una email quando il valore di una cella specificata cambia
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220803
Dim xRgSel As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
Set xRg = Range("B14")
Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
Set xRgSel = xItsRG
xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
Set xRgSel = xDDs
xBoolean = True
ElseIf Not (xDs Is Nothing) Then
Set xRgSel = xDs
xBoolean = True
End If
ActiveWorkbook.Save
If xBoolean Then
Debug.Print xRgSel.Address
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "The cell " & xRgSel.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."
With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Worksheet modified"
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Note: Nel codice,
Da ora in poi, quando il valore nella cella B14 cambia, verrà creata automaticamente una email di Outlook come mostrato nello screenshot qui sotto.
3.3 Inviare automaticamente una email quando una cartella di lavoro viene salvata
Se hai una cartella di lavoro che deve essere condivisa con altri dopo la modifica, normalmente devi salvare la cartella di lavoro, avviare il client di posta, creare una nuova email con la cartella di lavoro allegata, compilare i campi e poi inviare la email. Questa sezione ti mostrerà un metodo per creare automaticamente una email ogni volta che salvi la cartella di lavoro. Procedi come segue.
1. Premi i tasti "Alt" + "F11" per aprire la finestra "Microsoft Visual Basic for Applications".
2. In questa finestra, fai doppio clic su "QuestaCartellaDiLavoro" nel pannello "Progetto", quindi incolla il seguente codice VBA nella finestra "QuestaCartellaDiLavoro (Codice)".
Codice VBA: Invia automaticamente una email quando una cartella di lavoro viene salvata
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220804
Dim xOutApp As Object
Dim xMailItem As Object
Dim xName As String
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xName = ActiveWorkbook.FullName
With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "The workbook has been updated"
.Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
.Attachments.Add xName
.Display
'.send
End With
Set xMailItem = Nothing
Set xOutApp = Nothing
End Sub
Note: Nel codice,
3. Da ora in poi, quando salvi la cartella di lavoro premendo i tasti "Ctrl" + "S" o cliccando sul pulsante "Salva", verrà creata automaticamente una email di Outlook. Vedrai che la cartella di lavoro corrente è allegata e i campi sono compilati con il contenuto specificato. Vedi screenshot:
Suggerimento: Se usi spesso questa cartella di lavoro, ti consigliamo di salvarla come "Cartella di lavoro abilitata per macro di Excel" per conservare lo script VBA per usi futuri. I passaggi sono i seguenti.
3.4 Inviare automaticamente una email ad un orario specifico
Supponiamo che tu debba inviare una email con una cartella di lavoro di assegnazione compiti a qualcuno "ogni venerdì mattina alle9:00", e vuoi farlo automaticamente in Excel senza dover operare manualmente il client di posta. Questa sezione ti mostrerà il metodo per farlo.
1. Premi i tasti "Alt" + "F11" per aprire la finestra "Microsoft Visual Basic for Applications".
2. Nella finestra "Microsoft Visual Basic for Applications", clicca su "Inserisci" > "Modulo." Poi incolla il seguente codice VBA nella finestra Modulo.
Codice VBA1: Invia la cartella di lavoro corrente come allegato da Excel
Sub Timer()
If Weekday(Date) = vbFriday Then
SendWorkBook
Application.OnTime TimeValue("09:00:00"), "Timer"
Else
Application.OnTime TimeValue("09:00:00"), "Timer"
End If
End Sub
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
3. In questa finestra, fai doppio clic su "QuestaCartellaDiLavoro" nel pannello "Progetto", quindi incolla il seguente codice VBA nella finestra "QuestaCartellaDiLavoro (Codice)".
Codice VBA2: Invia automaticamente una email ad un orario specifico
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub
Note:
4. Salva i codici e poi salva la cartella di lavoro come cartella di lavoro abilitata per macro di Excel come segue.
5. Apri la cartella di lavoro abilitata per macro che hai salvato, quindi una email verrà creata o inviata automaticamente quando arriva il giorno e l'orario impostato.
4. Argomenti aggiuntivi
Questa sezione raccoglie altri argomenti che potresti incontrare durante l'invio di email da Excel.
4.1 Inviare via email un intervallo di celle da Excel (con script VBA)
Supponiamo che ci sia una tabella delle vendite mensili in un foglio di lavoro Excel come mostrato nello screenshot qui sotto, e tu debba inviare questa tabella delle vendite mensili ad altri come testo del corpo della email o come allegato direttamente. Qui ti forniamo due metodi per farlo.
4.1.1 Inviare un intervallo come parte del corpo della email da Excel
Puoi eseguire il seguente codice VBA per inviare un intervallo di celle come parte del corpo della email da Excel
1. Premi i tasti "Alt" + "F11" per aprire la finestra "Microsoft Visual Basic for Applications".
2. Nella finestra "Microsoft Visual Basic for Applications", clicca su "Strumenti" > "Riferimenti". Poi seleziona la casella "Microsoft Outlook16.0 Object Library" e clicca su "OK" nella finestra di dialogo "Riferimenti – VBAProject".
3. Clicca su "Inserisci" > "Modulo", poi incolla il seguente codice VBA nella finestra "Modulo (Codice)".
Codice VBA: Invia un intervallo di celle come parte del corpo della email da Excel
Sub SendARangeofCells()
'Updated by Extendoffice 20220809
Dim xRg As Range
Dim I, J As Long
Dim xAddress As String
Dim xMailOut As Object
Dim xOutApp As Object
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.Subject = "test"
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = RangetoHTML(xRg)
.Display
'.Send
End With
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
' The following VBA script is cited from this page:
' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
'Copy the range and create a new workbook to past the data in
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
'Publish the sheet to a htm file
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
'Read all data from the htm file into RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
'Close TempWB
TempWB.Close savechanges:=False
'Delete the htm file we used in this function
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
Note: Nel codice,
4. Premi il tasto "F5" per eseguire il codice. Nella finestra di dialogo "Kutools per Excel" che appare, seleziona l'intervallo di celle che desideri inviare come parte del corpo della email, poi clicca su "OK". Vedi screenshot:
Verrà creata automaticamente una email di Outlook. Vedrai che l'intervallo selezionato nel foglio di lavoro è inserito nel corpo della email. Vedi screenshot:
4.1.2 Inviare un intervallo come allegato da Excel via email
Se hai bisogno di inviare via email un intervallo di celle in un foglio di lavoro come allegato da Excel, puoi provare il seguente codice VBA.
1. Premi i tasti "Alt" + "F11".
2. Nella finestra "Microsoft Visual Basic for Applications" che si apre, clicca su "Inserisci" > "Modulo". Poi incolla il seguente codice VBA nella finestra "Modulo (Codice)".
Codice VBA: Invia un intervallo come allegato da Excel
Sub SendRange()
'Update 20220809
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Monthly sales for 2021"
.Body = "Hello, please check and read this document. "
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Note:
3. Premi il tasto "F5" per eseguire il codice. Nella finestra di dialogo "Kutools per Excel" che appare, seleziona l'intervallo di celle che desideri inviare come allegato in una email, poi clicca su "OK". Vedi screenshot:
Verrà creata automaticamente una email di Outlook. E l'intervallo di celle selezionato nel foglio di lavoro viene salvato come cartella di lavoro Excel e allegato nella finestra del messaggio. Vedi screenshot:
4.2 Inviare email al clic di un pulsante in Excel
Se hai bisogno di cliccare su un pulsante di comando per attivare una macro che invia una email da Excel, ad esempio inviare la cartella di lavoro corrente come allegato ad altri cliccando su un pulsante nel foglio di lavoro, puoi seguire i passaggi seguenti per farlo.
1. Clicca su "Sviluppatore" > "Inserisci" > "Pulsante di comando (Controllo ActiveX)". Poi disegna un pulsante di comando nel foglio di lavoro.
Suggerimento: Se hai già un pulsante di comando, salta questo passaggio.
2. Premi i tasti "Alt" + "F11" per aprire la finestra "Microsoft Visual Basic for Applications". Nella finestra, clicca su "Inserisci" > "Modulo", poi incolla il codice VBA (il codice usato per inviare la cartella di lavoro corrente come allegato da Excel) nella finestra Modulo (Codice).
Clicca qui per ottenere il codice.
Nota: Qui il nome della macro creata al passaggio2 è "SendWorkbook".
3. Premi i tasti "Alt" + "Q" per chiudere la finestra "Microsoft Visual Basic for Applications".
4. Ora devi assegnare la macro al pulsante di comando. Fai clic destro sul pulsante di comando, seleziona "Visualizza codice" dal menu contestuale.
5. Poi si aprirà la finestra "Microsoft Visual Basic for Applications", vedrai che le seguenti due righe sono elencate nella finestra "Foglio (Codice)".
Private Sub CommandButton1_Click()
End Sub
6. Inserisci il nome della macro esistente all'interno della subroutine per il pulsante di comando.
7. Premi i tasti "Alt" + "Q" per chiudere l'Editor Visual Basic e clicca su "Sviluppatore" > "Modalità progettazione" per disattivare la modalità progettazione.
Ora puoi cliccare sul pulsante di comando per inviare una email con la cartella di lavoro corrente come allegato nell'email.
4.3 Inviare email da un account email specifico
Normalmente, quando si invia una email da Excel tramite codice VBA, l'account email del mittente è quello predefinito in Outlook. Supponiamo che tu abbia configurato diversi account email in Outlook e voglia utilizzare un determinato account per inviare le email da Excel invece di quello predefinito. Il seguente codice VBA può aiutare.
I seguenti codici sono necessari in questo caso.
Codice VBA1:
Dim OutlookMail As Outlook.MailItem
Codice VBA2:
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
Come utilizzare i codici VBA sopra?
In questo esempio, specificheremo un determinato account email per inviare la cartella di lavoro corrente come allegato da Excel. Procedi come segue.
1. Premi i tasti "Alt" + "F11". Nella finestra "Microsoft Visual Basic for Applications", clicca su "Strumenti" > "Riferimenti". Poi seleziona la casella "Microsoft Outlook16.0 Object Library" e clicca su "OK" nella finestra di dialogo "Riferimenti – VBAProject".
2. Clicca su "Inserisci" > "Modulo". Poi incolla il seguente codice VBA nella finestra "Modulo (Codice)".
Codice VBA: Invia la cartella di lavoro corrente come allegato email da Excel tramite un account Outlook specificato
Sub SendWorkBook()
'Update by Extendoffice 20220809
Dim OutlookApp As Object
Dim OutlookMail As Outlook.MailItem 'important! Here can’t be declared as Object
Dim xAccount As Account
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(olMailItem)
On Error Resume Next
'The following lines helps to specify a certian email account
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
'End
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
3. Premi il tasto "F5" per eseguire il codice. Poi apparirà una finestra di messaggio di Outlook, vedrai che il campo "Da" è compilato con l'account email specificato nel codice.
4.4 Inviare una email al raggiungimento di una data
Se hai bisogno di inviare una email in base a una data di scadenza specifica, ad esempio, come mostrato nello screenshot qui sotto, c'è una tabella progetti, "quando la data di scadenza nell'intervallo E2:E7 è uguale o inferiore a7 giorni da oggi (supponendo che la data attuale sia04/08/2022)", verrà inviata automaticamente una email ai responsabili di progetto corrispondenti per avvisarli che il progetto sta per scadere.
1. Nel foglio che contiene la tabella progetti, fai clic destro sulla scheda del foglio e clicca su "Visualizza codice" dal menu contestuale.
2. Nella finestra "Microsoft Visual Basic for Applications" che si apre, incolla il seguente codice VBA nella finestra "Foglio (Codice)".
Codice VBA: Invia automaticamente una email quando viene raggiunta una data di scadenza
Public Sub SendMailDueDate()
'Updated by Extendoffice 20220804
Dim xRgDate As Range
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xLastRow As Long
Dim vbCrLf As String
Dim xMailBody As String
Dim xRgDateVal As String
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Range("E2:E7") 'Please reference the due date column range
If xRgDate Is Nothing Then Exit Sub
Set xRgSend = Range("C2:C7") 'Please reference the email addresses column range
If xRgSend Is Nothing Then Exit Sub
Set xRgText = Range("D2:D7") 'Please reference the remark column range (the remark used to notify project leaders of the expiration of the project)
If xRgText Is Nothing Then Exit Sub
xLastRow = xRgDate.Rows.Count
Set xRgDate = xRgDate(1)
Set xRgSend = xRgSend(1)
Set xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
For i = 1 To xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
If xRgDateVal <> "" Then
If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "
"
xMailBody = ""
xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Remark : " & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
Set xMailItem = xOutApp.CreateItem(0)
With xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = xMailBody
.Display
'.Send
End With
Set xMailItem = Nothing
End If
End If
Next
Set xOutApp = Nothing
End Sub
Note: Nel codice,
3. Premi il tasto "F5" per eseguire il codice. Se la data di scadenza soddisfa le condizioni, verrà creata la relativa email. In questo caso, verranno create due email come mostrato nello screenshot qui sotto.
5. Uno strumento pratico per aiutarti a inviare facilmente email da Excel
Se sei un principiante con VBA, i metodi sopra potrebbero non essere facili da gestire. Qui ti consigliamo la funzione "Invia Email" di Kutools per Excel: con questa funzione puoi inviare facilmente email da Excel con pochi clic. Procedi come segue.
5.1 Crea facilmente un elenco destinatari che includa i campi email necessari
Prima di utilizzare la funzione Invia Email, devi creare un elenco destinatari che contenga i campi email necessari. Qui la funzione Crea elenco di invio può aiutarti.
1. Clicca su "Kutools Plus" > "Crea elenco di invio".
2. Nella finestra "Crea elenco di invio" che si apre, configura come segue.
Verrà creato un esempio di tabella elenco destinatari come mostrato nello screenshot qui sotto.
3. Ora devi sostituire i dati originali dell'esempio con i tuoi dati.
Ora hai creato una tabella elenco destinatari. Procedi ad applicare la funzione "Invia Email" per inviare email da Excel in base ai campi creati.
Kutools per Excel - Potenzia Excel con oltre 300 strumenti essenziali. Goditi funzionalità AI gratuite per sempre! Ottienilo ora
5.2 Invia facilmente email includendo i campi creati nell'elenco destinatari
Dopo aver creato l'elenco destinatari (clicca per sapere come) che contiene i campi necessari per le tue email, ora puoi inviare email da Excel con questi campi.
1. Seleziona l'intero elenco destinatari, clicca su "Kutools Plus" > "Invia Email".
2. Nella finestra di dialogo "Invia Email", configura come segue.
3. Poi apparirà una finestra di dialogo "Kutools per Excel" che ti dirà quante email sono state inviate, clicca su "OK" per chiudere la finestra.
Suggerimento: Puoi andare nella cartella "Posta inviata" di Outlook per controllare le email inviate.
5.3 Invia facilmente email con corpo HTML (inclusi collegamenti ipertestuali, immagini, ecc.)
La funzione Invia Email ti permette di creare una email HTML, che include collegamenti ipertestuali, immagini, diverse dimensioni e colori di carattere, ecc.
Dopo aver creato un elenco destinatari che includa i campi email necessari, quando configuri la finestra di dialogo Invia Email, puoi rendere il corpo del messaggio ricco utilizzando le opzioni della barra degli strumenti.
Vedi screenshot qui sotto:
5.4 Inserisci facilmente la firma predefinita di Outlook durante l'invio delle email
Nel metodo sopra, abbiamo mostrato un codice VBA per aiutarti a inviare email con la firma predefinita di Outlook. Qui, con la funzione Invia Email, basta selezionare un'opzione e la firma predefinita di Outlook verrà inserita nelle email inviate da Excel.
Dopo aver creato un elenco destinatari che includa i campi email necessari, quando configuri la finestra di dialogo Invia Email, clicca su "Opzioni" > "Usa impostazioni firma di Outlook".
Nota: Assicurati che sia presente un segno di spunta davanti all'opzione Usa impostazioni firma di Outlook.
Quando i destinatari ricevono la email, vedranno la firma predefinita di Outlook visualizzata alla fine del corpo della email.
5.5 Invia facilmente email da un account email specifico
Per utilizzare un determinato account email per inviare email da Excel invece di quello predefinito, la funzione Invia Email può aiutarti a farlo facilmente.
Dopo aver creato un elenco destinatari che includa i campi email necessari, quando configuri la finestra di dialogo Invia Email, clicca su "Opzioni" > "Inviato da", poi seleziona l'account email da cui inviare le email.
Nota: Dopo aver selezionato l'account email, verrà visualizzato un segno di spunta davanti ad esso.
Clicca qui per saperne di più su questa funzione Invia Email.
Kutools per Excel - Potenzia Excel con oltre 300 strumenti essenziali. Goditi funzionalità AI gratuite per sempre! Ottienilo ora
In conclusione, inviare email da Excel è molto utile nel lavoro quotidiano. Questo articolo copre argomenti completi sull'invio di email da Excel; se ci sono altri argomenti o soluzioni più semplici, lascia un commento per farmelo sapere.
I migliori strumenti per la produttività in Office
Potenzia le tue competenze in Excel con Kutools per Excel e sperimenta un'efficienza mai vista prima. Kutools per Excel offre oltre300 funzionalità avanzate per aumentare la produttività e risparmiare tempo. Clicca qui per ottenere la funzione di cui hai più bisogno...
Office Tab porta l'interfaccia a schede in Office e rende il tuo lavoro molto più semplice
- Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
- Apri e crea più documenti in nuove schede della stessa finestra, invece che in nuove finestre.
- Aumenta la tua produttività del50% e riduce centinaia di clic del mouse ogni giorno!