Tutorial Excel: invia e-mail da Excel
Normalmente, utilizziamo client di posta elettronica come Outlook, Gmail, ecc. per inviare e-mail. Tuttavia, molte persone archiviano i dati nelle cartelle di lavoro di Excel e devono inviare alcuni dati insieme ad altri mentre ci lavorano. Pertanto, devono inviare e-mail direttamente dalla cartella di lavoro di Excel, il che consente di risparmiare tempo nell'utilizzo di un client di posta elettronica. Questo tutorial passo dopo passo ti mostrerà come inviare e-mail da Excel in condizioni diverse.
Note:: prima di applicare i seguenti metodi, è necessario configurare un client di posta elettronica di Outlook nel computer e impostarlo come client di posta elettronica predefinito.
Sommario: [ Nascondere ]
1. Le basi dell'invio di e-mail da Excel
Questa sezione introduce le basi dell'invio di e-mail da Excel.
1.1 Invia e-mail da Excel con le funzioni integrate di Excel
Se desideri inviare solo semplici e-mail da Excel, includendo solo i campi A, Oggetto, Cc e corpo. Le funzioni integrate in Excel possono aiutare.
1.1.1 Invia e-mail da Excel con una formula
Come mostrato nella tabella seguente, per inviare e-mail diverse da Excel in base ai campi forniti, puoi utilizzare i riferimenti di cella dei campi indicati per creare diverse formule di collegamento ipertestuale per farlo. Dopo aver creato i collegamenti ipertestuali e-mail, è possibile fare clic sul collegamento ipertestuale necessario per inviare automaticamente un'e-mail.
Nota: Se sono presenti più destinatari nei campi A o Cc, separarli con un punto e virgola.
Questa sezione è divisa in quattro parti per mostrare i passaggi per aggiungere separatamente indirizzo e-mail, destinatario/i Cc, riga dell'oggetto e corpo del testo alla formula del collegamento ipertestuale. Si prega di fare come segue.
La sintassi e gli argomenti del HYPERLINK funzione sono le seguenti.
Sintassi
HYPERLINK(link_location, [friendly_name])
argomenti
1.1.1.1 Aggiungi l'indirizzo email alla formula del collegamento ipertestuale
Qui usiamo "posta:" come parte della formula per aggiungere un destinatario di posta elettronica. In questo esempio, l'indirizzo email del primo destinatario è nella cella B2, quindi è necessario aggiungere "mailto:" e fare riferimento alla cella B2.
"posta:"&B2
1. Selezionare una cella per visualizzare il collegamento ipertestuale. In questo caso, seleziono la cella F2.
2. Quindi inserisci la seguente formula.
=HYPERLINK("mailto:"&B2)
Note:: Se si preme il entrare chiave, verrà creato un collegamento ipertestuale come mostrato nella schermata seguente. Quando si fa clic sul collegamento, verrà creata un'e-mail di Outlook e l'indirizzo e-mail del destinatario verrà compilato automaticamente nel campo A.
L'indirizzo e-mail del destinatario viene ora aggiunto alla formula del collegamento ipertestuale. Continua con i seguenti passaggi per aggiungere la riga dell'oggetto, i destinatari Cc e il corpo del testo di cui hai bisogno.
1.1.1.2 Aggiungi i destinatari Cc alla formula del collegamento ipertestuale
Per aggiungere i destinatari Cc alla funzione Collegamento ipertestuale, aggiungere "?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 Aggiungi la riga dell'oggetto alla formula del collegamento ipertestuale
Per aggiungere la riga dell'oggetto alla funzione Collegamento ipertestuale, aggiungi "&oggetto=" come parte della formula come segue.
La formula nella cella F2 dovrebbe ora essere simile alla seguente:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 Aggiungi il corpo del testo con interruzioni di riga alla formula del collegamento ipertestuale
L'ultimo passaggio consiste nell'aggiungere il corpo del testo alla formula del collegamento ipertestuale. Come puoi vedere nell'esempio, due righe di testo in E2 sono separate da un'interruzione di riga e desideri mantenere l'interruzione di riga nel corpo dell'e-mail. Outlook riconosce l'interruzione di riga in questa circostanza? Controlliamolo.
Per aggiungere il corpo del testo alla formula del collegamento ipertestuale, è necessario aggiungere “&corpo=” come parte della formula come segue.
La formula nella cella F2 viene ora visualizzata come segue:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)
Nota: Se si preme il entrare tasto e fare clic sul collegamento. Puoi vedere nella nuova e-mail che i contenuti nel corpo dell'e-mail sono visualizzati nella stessa riga.
Per visualizzare il corpo dell'e-mail in righe separate, è necessario modificare il contenuto della cella aggiungendo il codice del carattere di ritorno a capo %0A al testo in cui è necessario inserire un'interruzione di riga. Vedi screenshot:
1.1.1.5 Specificare il testo da visualizzare per il collegamento ipertestuale
Nei passaggi precedenti, abbiamo terminato l'argomento Link_location con i campi e-mail. In questa sezione, finiremo il prossimo argomento [friendly_name].
In questo caso, voglio che la cella del collegamento ipertestuale visualizzi il testo come "E-mail a xx”, dove xx è il nome del destinatario in A2. Quindi, la formula in F2 dovrebbe essere modificata in:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)
Premere il tasto entrare chiave per ottenere il risultato.
Seleziona questa cella della formula e trascinala Maniglia di riempimento automatico giù per creare altri collegamenti ipertestuali e-mail. Vedi screenshot:
1.1.2 Invia e-mail da Excel con la funzione Collegamento ipertestuale
Fatta eccezione per l'utilizzo della formula di collegamento ipertestuale sopra, è possibile creare manualmente un collegamento ipertestuale e-mail con il inserire collegamento ipertestuale funzione in Excel. Questa sezione ti mostrerà i passaggi.
1. Fare clic con il pulsante destro del mouse su un'e-mail in cui si desidera inserire un collegamento ipertestuale, selezionare Link dal menu di scelta rapida.
2. Nel spuntare Inserisci collegamento ipertestuale finestra di dialogo, è necessario configurare come segue.
Quando si fa clic sul collegamento ipertestuale, verrà creata un'e-mail di Outlook con i campi A, Oggetto e Corpo specificati, come mostrato nello screenshot seguente.
Note:
1.2 Invia e-mail a più destinatari in celle con script VBA
Nell'esempio sopra, puoi vedere più indirizzi email visualizzati in una cella, separati da punto e virgola. Se hai un elenco di indirizzi e-mail come mostrato nello screenshot qui sotto e desideri inviare un'e-mail o un'e-mail indipendente a tutti loro, il seguente codice VBA può farti un favore.
1.2.1 Invia un'e-mail a più destinatari in celle con script VBA
1. Nel foglio di lavoro che contiene tutti gli indirizzi e-mail a cui desideri inviare l'e-mail. premi il altro + F11 chiavi per aprire il Microsoft Visual Basic, Applications Edition finestra.
2. Nel Microsoft Visual Basic, Applications Edition finestra, fare clic inserire > Modulo, e quindi incollare il codice seguente nel file Modulo (codice) finestra.
Codice VBA: invia e-mail a un elenco di indirizzi e-mail
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 F5 chiave per eseguire il codice e a Kutools for Excel si apre la finestra di dialogo. Seleziona l'elenco di indirizzi e-mail e fai clic su OK.
Note:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Dopo aver eseguito il codice, tutti gli indirizzi e-mail nell'intervallo selezionato vengono visualizzati nel campo A della finestra del messaggio. Vedi screenshot:
1.2.2 Inviare e-mail separatamente a ciascun destinatario elencato nelle celle con script VBA
Il codice sopra aggiunge tutti gli indirizzi e-mail nell'intervallo selezionato al campo A della finestra del messaggio. Se desideri inviare e-mail a ciascun indirizzo e-mail elencato nelle celle separatamente senza consentire loro di vedere gli indirizzi e-mail reciproci, puoi provare il seguente script VBA.
1. Nel foglio di lavoro che contiene tutti gli indirizzi e-mail a cui desideri inviare le e-mail. premi il altro + F11 chiavi per aprire la finestra di Microsoft Visual Basic, Applicazioni.
2. Nel Microsoft Visual Basic, Applications Edition finestra, fare clic inserire > Modulie quindi incollare il codice seguente nella finestra del modulo (codice).
Codice VBA: invia e-mail a ciascun indirizzo e-mail elencato nelle celle separatamente
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. Quindi fare clic Strumenti > Riferimenti. Nel Riferimenti - VBAProject finestra di dialogo, trova e controlla il Libreria oggetti di Microsoft Outlook 16.0 casella e quindi fare clic su OK pulsante per salvare le modifiche.
4. premi il F5 chiave per eseguire il codice e a Kutools for Excel si apre la finestra di dialogo. Selezionare l'elenco di indirizzi e-mail e fare clic su OK.
Note:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
In questo esempio, ci sono sei indirizzi e-mail nell'intervallo selezionato, quindi verranno create automaticamente sei finestre di messaggi di Outlook con indirizzi e-mail separati elencati nel campo A, come mostrato nello screenshot seguente.
5. Infine, fare clic su Invia pulsante per inviare l'e-mail uno per uno.
2. Inserisci allegati o firma di Outlook nelle e-mail inviate da Excel (con script VBA)
Questa sezione ti mostrerà come inserire allegati o firma predefinita di Outlook nelle e-mail inviate da Excel.
2.1 Inserire allegati nelle email inviate da Excel
Di seguito descriviamo i diversi casi di inserimento degli allegati e puoi scegliere il metodo in base alle tue esigenze. In questa sezione, puoi imparare a (fare clic su uno qualsiasi dei seguenti collegamenti per passare al metodo corrispondente):
2.1.1 Invia tramite e-mail un determinato file come allegato
È possibile applicare il seguente codice VBA per inviare tramite posta elettronica uno o più file in una cartella come allegati da Excel.
1. premi il altro + F11 chiavi.
2. In apertura Microsoft Visual Basic, Applications Edition finestra, fare clic inserire > Moduli. Quindi incolla il seguente codice VBA nella finestra del modulo (codice).
Codice VBA: invia file di posta elettronica 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 = ""
.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. Quindi fare clic Strumenti > Riferimenti. Nel Riferimenti - VBAProject finestra di dialogo, trova e controlla il Libreria oggetti di Microsoft Outlook 16.0 casella e quindi fare clic su OK pulsante per salvare le modifiche.
4. premi il F5 chiave per eseguire il codice, quindi un Scopri la nostra gamma di prodotti viene visualizzata la finestra, selezionare i file che è necessario allegare nell'e-mail, quindi fare clic OK.
Quindi viene visualizzata una finestra di messaggio. Puoi vedere che i file selezionati vengono visualizzati come allegati nel campo Allegati.
2.1.2 Inviare per e-mail il foglio di lavoro corrente come allegato
Se desideri inviare tramite e-mail il foglio di lavoro corrente come allegato da Excel, puoi applicare lo script VBA in questa sezione.
1. premi il altro + F11 chiavi.
2. In apertura Microsoft Visual Basic, Applications Edition finestra, fare clic insert > Moduli. Quindi incolla il seguente codice VBA in Modulo (codice) finestra.
Codice VBA: invia per e-mail il foglio di lavoro corrente come allegato
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 = ""
.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 F5 per eseguire il codice, il foglio di lavoro corrente viene salvato come cartella di lavoro di 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. E il tempo in cui esegui il codice viene aggiunto anche al nome della cartella di lavoro.
2.1.3 Inviare tramite posta elettronica la cartella di lavoro corrente come allegato
Dopo aver appreso il codice VBA per inviare tramite e-mail il foglio di lavoro corrente come allegato da Excel, qui forniamo un altro script VBA per aiutarti a inviare tramite e-mail l'intera cartella di lavoro come allegato. Si prega di fare come segue.
1. premi il altro + F11 chiavi.
2. In apertura Microsoft Visual Basic, Applications Edition finestra, fare clic inserire > Modulo. Quindi incolla il seguente codice VBA nella finestra del modulo (codice).
Codice VBA: invia tramite e-mail 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 = ""
.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 F5 per eseguire il codice, la cartella di lavoro corrente viene inserita automaticamente in una finestra di messaggio come allegato. Vedi screenshot:
2.1.4 Inviare tramite e-mail l'intera cartella di lavoro come allegato PDF
Per la maggior parte delle persone, tendono a salvare una cartella di lavoro di Excel come file PDF e quindi a inviarla come allegato ad altri. In questa sezione, ti mostrerò un modo per inviare e-mail direttamente da Excel con la cartella di lavoro aperta corrente come allegato PDF senza dover salvare manualmente la cartella di lavoro come file PDF.
1. premi il altro + F11 chiavi.
2. In apertura Microsoft Visual Basic, Applications Edition finestra, fare clic inserire > Modulo. Quindi incolla il seguente codice VBA nella finestra del modulo (codice).
Codice VBA: invia tramite e-mail 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 = ""
.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 F5 chiave per eseguire il codice. Quindi la cartella di lavoro corrente viene inserita automaticamente in una nuova finestra di messaggio come allegato di un file PDF. Vedi screenshot:
2.1.5 Inviare per e-mail il foglio di lavoro corrente come allegato PDF
Ad esempio, esiste una cartella di lavoro denominata "Vendite mensili" e hai terminato una tabella del rapporto sulle vendite in un foglio di lavoro denominato "rapporto sulle vendite" e desideri inviare questo foglio di lavoro come file PDF ai tuoi colleghi. Il seguente codice VBA può farti un favore.
1. premi il altro + F11 chiavi.
2. In apertura Microsoft Visual Basic, Applications Edition finestra, fare clic insert > Modulo. Quindi incolla il seguente codice VBA nella finestra del modulo (codice).
Codice VBA: invia per e-mail 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 = ""
.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 F5 chiave per eseguire il codice. Quindi il foglio di lavoro corrente viene inserito automaticamente in una nuova finestra di messaggio come allegato di un file PDF. Vedi screenshot:
2.2 Inserisci la firma di Outlook nelle email inviate da Excel
Prendi il caso precedente come esempio, applichi il codice VBA sopra per inviare il foglio di lavoro corrente come allegato di un file PDF da Excel, ma la firma di Outlook non può essere aggiunta alla finestra del messaggio. Per mantenere la firma predefinita di Outlook nell'e-mail inviata da Excel, il metodo seguente sarà di aiuto.
Di seguito sono elencati due codici VBA.
Codice VBA 1: il codice aiuta a conservare la firma di Outlook.
Codice VBA 2: il codice aiuta a inviare tramite e-mail il foglio di lavoro corrente come allegato PDF.
Codice VBA 1: conserva la firma di Outlook
.HTMLBody = "Email body" & "
" & .HTMLBody
Codice VBA 2: invia per e-mail 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 = ""
.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, è necessario premere il tasto altro + F11 chiavi per aprire il Microsoft Visual Basic, Applications Edition finestra.
2. Nel Microsoft Visual Basic, Applications Edition finestra, fare clic inserire > Moduli. Quindi incolla il codice VBA 2 sopra nella finestra del modulo (codice).
3. Per conservare la firma predefinita di Outlook nell'e-mail inviata da Excel, è necessario modificare il codice VBA 2 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 = ""
.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 F5 chiave per eseguire il codice. Quindi otterrai 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 dell'e-mail.
3. Invia automaticamente e-mail da Excel quando viene soddisfatta una condizione (con script VBA)
Negli esempi precedenti, è necessario eseguire il codice manualmente per ottenere la consegna dell'e-mail. Se desideri attivare il codice automaticamente quando viene soddisfatta una determinata condizione, ad esempio quando una cella raggiunge un determinato valore, quando il valore di una cella cambia, quando viene raggiunta una data, ecc., l'e-mail verrà inviata automaticamente. Questa sezione elenca le condizioni che gli utenti di Excel hanno cercato spesso in Google per aiutarti a inviare automaticamente e-mail da Excel quando viene soddisfatta una determinata condizione.
3.1 Invia automaticamente un'e-mail quando una cella raggiunge un determinato valore
Come mostrato nella schermata seguente, supponiamo di avere una tabella delle vendite con la cella D6 contenente il totale delle vendite. Vuoi inviare automaticamente un'e-mail al tuo capo in base al totale delle vendite, ad esempio, creare o inviare automaticamente un'e-mail quando il totale delle vendite supera 10000 ma se il totale delle vendite è uguale o inferiore a 10000, non viene eseguita alcuna azione.
1. Nel foglio di lavoro contiene la tabella di vendita, fare clic con il pulsante destro del mouse sulla scheda del foglio e fare clic Visualizza codice dal menu di scelta rapida.
2. In apertura Microsoft Visual Basic, Applications Edition finestra, incolla il seguente codice VBA nel file Foglio (Codice) finestra.
Codice VBA: invia automaticamente un'e-mail 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 = ""
.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")
D'ora in poi, quando il valore nella cella D6 supera 10000, verrà creata un'e-mail come mostrato nello screenshot seguente.
3.2 Invia automaticamente un'e-mail quando cambia il valore di una cella
Come mostrato nella schermata seguente, supponi di ricevere una cartella di lavoro che contiene le vendite mensili in diversi fogli di lavoro e il totale delle vendite in un foglio di lavoro. È necessario verificare il totale delle vendite e, se il totale delle vendite viene modificato, rispedire la cartella di lavoro al mittente e informare il mittente che la cella è stata modificata.
1. Nel foglio di lavoro contiene la tabella di vendita, fare clic con il pulsante destro del mouse sulla scheda del foglio e fare clic Visualizza codice dal menu di scelta rapida.
2. In apertura Microsoft Visual Basic, Applications Edition finestra, incolla il seguente codice VBA nella finestra Foglio (Codice).
Codice VBA: invia automaticamente un'e-mail quando cambia un valore di cella specificato
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 = ""
.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,
D'ora in poi, quando il valore nella cella B14 cambia, verrà creato automaticamente un messaggio di Outlook come mostrato nello screenshot seguente.
3.3 Invia automaticamente un'e-mail quando viene salvata una cartella di lavoro
Se si dispone di una cartella di lavoro che deve essere condivisa con altri dopo la modifica, normalmente è necessario salvare la cartella di lavoro, avviare il client di posta elettronica, creare una nuova e-mail con questa cartella di lavoro allegata, comporre i campi corrispondenti quindi inviare l'e-mail. Questa sezione ti mostrerà un metodo per creare automaticamente un'e-mail ogni volta che salvi la cartella di lavoro. Si prega di fare come segue.
1. premi il altro + F11 chiavi per aprire il Microsoft Visual Basic, Applications Edition finestra.
2. In questa finestra, fare doppio clic Questa cartella di lavoro nel Progetto riquadro, quindi incolla il seguente codice VBA nel file ThisWorkbook (codice) finestra.
Codice VBA: invia automaticamente un'e-mail quando viene salvata una cartella di lavoro
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 = ""
.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. D'ora in poi, quando si salva la cartella di lavoro premendo il tasto Ctrl + S tasti o facendo clic su Risparmi pulsante, verrà creata automaticamente un'e-mail di Outlook. Puoi vedere che la cartella di lavoro corrente è allegata come allegato e i campi sono popolati con il contenuto specificato. Vedi screenshot:
Suggerimenti:: se utilizzi frequentemente questa cartella di lavoro, qui ti consigliamo di salvare la cartella di lavoro come file Cartella di lavoro abilitata per Excel per salvare lo script VBA per un utilizzo futuro. I passi sono come segue.
3.4 Invia automaticamente un'e-mail a un'ora specifica
Supponiamo che tu debba inviare un'e-mail con una cartella di lavoro per l'assegnazione di attività a qualcuno ogni venerdì mattina alle 9:XNUMXe desideri farlo automaticamente in Excel senza dover utilizzare manualmente il client di posta elettronica. Questa sezione ti mostrerà il metodo per farlo.
1. premi il altro + F11 chiavi per aprire il Microsoft Visual Basic, Applications Edition finestra.
2. Nel Microsoft Visual Basic, Applications Edition finestra, fare clic inserire > Modulo. Quindi incolla il seguente codice VBA nella finestra del modulo.
Codice VBA1: invia tramite e-mail 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 = ""
.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, fare doppio clic Questa cartella di lavoro nel Progetto riquadro, quindi incolla il seguente codice VBA nel file ThisWorkbook (codice) finestra.
Codice VBA 2: invia automaticamente un'e-mail a un'ora specifica
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub
Note:
4. Salvare i codici e quindi salvare la cartella di lavoro come cartella di lavoro con attivazione macro di Excel come segue.
5. Apri la cartella di lavoro con abilitazione macro salvata, quindi verrà creata o inviata automaticamente un'e-mail all'arrivo del giorno e dell'ora.
4. Argomenti aggiuntivi
Questa sezione raccoglie altri argomenti che potresti incontrare durante l'invio di e-mail da Excel.
4.1 Invia un'e-mail a un intervallo di celle da Excel (con script VBA)
Supponendo che in un foglio di lavoro Excel sia presente una tabella delle vendite mensili, come mostrato nello screenshot seguente, e che sia necessario inviare questa tabella delle vendite mensili ad altri come contenuto del corpo di un'e-mail o direttamente come allegato. Qui ti forniamo due metodi per farlo.
4.1.1 Invia tramite e-mail un intervallo come parte del contenuto del corpo di Excel
È possibile eseguire il seguente codice VBA per inviare un intervallo di celle come parte del contenuto del corpo dell'e-mail da Excel
1. premi il altro + F11 chiavi per aprire il Microsoft Visual Basic, Applications Edition finestra.
2. Nel Microsoft Visual Basic, Applications Edition finestra, fare clic Strumenti > Riferimenti. E poi controlla il file Libreria oggetti di Microsoft Outlook 16.0 box e clicca OK nel Riferimenti - VBAProject la finestra di dialogo.
3. Clic inserire > Moduli, quindi incolla il seguente codice VBA nel file Modulo (codice) finestra.
Codice VBA: invia un intervallo di celle come parte del contenuto del corpo dell'e-mail 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 = ""
.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 F5 chiave per eseguire il codice. Nel spuntato Kutools for Excel finestra di dialogo, selezionare l'intervallo di celle che è necessario inviare come parte del contenuto del corpo di un'e-mail, quindi fare clic OK. Vedi screenshot:
Quindi verrà creata automaticamente un'e-mail di Outlook. Puoi vedere che l'intervallo che hai selezionato nel foglio di lavoro è inserito nel corpo dell'e-mail. Vedi screenshot:
4.1.2 Invia tramite e-mail un intervallo come allegato da Excel
Se è necessario inviare un'e-mail a un intervallo di celle in un foglio di lavoro come allegato da Excel. Puoi provare il seguente codice VBA.
1. premi il altro + F11 chiavi.
2. In apertura Microsoft Visual Basic, Applications Edition finestra, fare clic inserire > Moduli. Quindi incolla il seguente codice VBA nel file Modulo (codice) finestra.
Codice VBA: invia tramite e-mail 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 = ""
.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 F5 chiave per eseguire il codice. Nel spuntato Kutools for Excel finestra di dialogo, seleziona l'intervallo di celle che devi inviare come allegato in un'e-mail, quindi fai clic su OK. Vedi screenshot:
Quindi verrà creata automaticamente un'e-mail di Outlook. E l'intervallo di celle selezionato nel foglio di lavoro viene salvato come cartella di lavoro di Excel e allegato nella finestra del messaggio. Vedi screenshot:
4.2 Invia e-mail quando si fa clic su un pulsante in Excel
Se è necessario fare clic su un pulsante di comando per attivare una macro per l'invio di un'e-mail da Excel, ad esempio, inviare la cartella di lavoro corrente come allegato ad altri facendo clic su un pulsante di comando nel foglio di lavoro. Puoi seguire i passaggi come segue per farlo.
1. Clic Costruttori > inserire > Pulsante di comando (controllo ActiveX). Quindi disegna un pulsante di comando nel foglio di lavoro.
Suggerimenti:: Se hai già un pulsante di comando, salta questo passaggio.
2. premi il altro + F11 chiavi per aprire il Microsoft Visual Basic, Applications Edition finestra. Nella finestra, fare clic su inserire > Modu, quindi incollare il codice VBA (il codice utilizzato per inviare tramite posta elettronica la cartella di lavoro corrente come allegato da Excel) nella finestra Modulo (codice).
Clicca qui per ricevere il codice.
Note:: qui si trova il nome della macro che hai creato nel passaggio 2 Invia cartella di lavoro.
3. premi il altro + Q i tasti per chiudere il file Microsoft Visual Basic, Applications Edition finestra.
4. Ora devi assegnare la macro al pulsante di comando. Fare clic con il pulsante destro del mouse sul pulsante di comando, selezionare Visualizza codice dal menu del tasto destro.
5. Quindi il file Microsoft Visual Basic, Applications Edition si apre la finestra, puoi vedere che le seguenti due righe sono elencate nel file Foglio (Codice) finestra.
Private Sub CommandButton1_Click()
End Sub
6. Immettere il nome della macro esistente all'interno della procedura secondaria per il pulsante di comando.
7. premi il altro + Q i tasti per chiudere il file Editor di Visual Basice fare clic Costruttori > Modalità di progettazione per disattivare la modalità di progettazione.
Ora puoi fare clic sul pulsante di comando per inviare un'e-mail con la cartella di lavoro corrente come allegato nell'e-mail.
4.3 Invia e-mail da un account e-mail specificato
Normalmente, quando si avvia un'e-mail da Excel con codice VBA, l'account e-mail del mittente è l'account predefinito in Outlook. Supponiamo di aver configurato diversi account di posta elettronica in Outlook e di voler utilizzare un determinato account per inviare le e-mail da Excel invece di utilizzare l'account predefinito. Il seguente codice VBA può aiutare.
In questo caso sono necessari i seguenti codici.
Codice VBA 1:
Dim OutlookMail As Outlook.MailItem
Codice VBA 2:
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
Come utilizzare il codice VBA sopra?
In questo esempio, specificheremo un determinato account di posta elettronica per inviare la cartella di lavoro corrente come allegato da Excel. Si prega di fare come segue.
1. premi il altro + F11 chiavi. Nel Microsoft Visual Basic, Applications Edition finestra, fare clic Strumenti > Riferimenti. E poi controlla il file Libreria oggetti di Microsoft Outlook 16.0 box e clicca OK nel Riferimenti - VBAProject la finestra di dialogo.
2. Clic inserire > Moduli. Quindi incolla il seguente codice VBA nel file Modulo (codice) finestra.
Codice VBA: invia la cartella di lavoro corrente come allegato di posta elettronica 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("") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
'End
With OutlookMail
.To = ""
.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 F5 chiave per eseguire il codice. Quindi viene visualizzato un messaggio di posta elettronica di Outlook, puoi vedere che il file Da campo viene compilato con l'account e-mail specificato nel codice.
4.4 Inviare un'e-mail al raggiungimento di una data
Se è necessario inviare un'e-mail in base a una data di scadenza specifica, ad esempio, come mostrato nella schermata seguente, è presente una tabella del progetto, quando la data di scadenza nell'intervallo E2:E7 è uguale o inferiore a 7 giorni da oggi (supponendo che la data corrente sia il 2022/8/4), verrà inviata automaticamente un'e-mail ai responsabili del progetto corrispondenti e li informerà che il progetto sta per scadere.
1. Nel foglio di lavoro contiene la tabella del progetto, fare clic con il pulsante destro del mouse sulla scheda del foglio e fare clic Visualizza codice dal menu di scelta rapida.
2. In apertura Microsoft Visual Basic, Applications Edition finestra, incolla il seguente codice VBA nel file Foglio (Codice) finestra.
Codice VBA: invia automaticamente un'e-mail 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 F5 chiave per eseguire il codice. Quindi, se la data di scadenza corrisponde alle condizioni, verrà creata l'e-mail corrispondente. In questo caso, verranno create due e-mail come mostrato nello screenshot qui sotto.
5. Uno strumento utile per aiutarti a inviare facilmente e-mail da Excel
Se sei un principiante VBA, i metodi di cui sopra potrebbero non essere facili da gestire. Qui ti consigliamo Kutools for Excel'S Inviare emails caratteristica, con questa funzione, puoi inviare facilmente e-mail da Excel con solo pochi clic. Si prega di fare come segue.
Prima di applicare Kutools for Excel, Per favore scaricalo e installalo prima.
5.1 Crea facilmente una mailing list che includa i campi email di cui hai bisogno
Prima di applicare la funzione Invia e-mail, è necessario creare una mailing list che contenga i campi e-mail necessari. Qui la funzione Crea mailing list può aiutare.
1. Clic Kutools Plus > Crea mailing list.
2. In apertura Crea mailing list finestra, è necessario configurare come segue.
Quindi viene creata una tabella di mailing list di esempio come mostrato nella schermata seguente.
3. Ora è necessario sostituire i dati originali nell'esempio con i dati del proprio campo.
Ora hai creato una tabella di una mailing list. Si prega di procedere per applicare il Inviare emails funzione per inviare e-mail da Excel in base ai campi che hai creato.
Se desideri avere una prova gratuita (30 giorni) di questa utility, fare clic per scaricarlo, quindi andare ad applicare l'operazione secondo i passaggi precedenti.
5.2 Invia facilmente e-mail inclusi i campi che hai creato nella mailing list
Dopo aver creato la mailing list (clicca per sapere come) che contiene i campi di cui potresti aver bisogno nelle tue e-mail, ora puoi inviare e-mail da Excel con questi campi.
1. Selezionare l'intera mailing list, fare clic su Kutools Plus > Inviare emails.
2. Nel Inviare emails finestra di dialogo, eseguire la seguente configurazione.
3. Quindi a Kutools for Excel viene visualizzata la finestra di dialogo per dirti quante e-mail vengono inviate, fai clic su OK per chiudere questa finestra di dialogo.
Suggerimenti:: Puoi andare al Oggetti inviati cartella in Outlook per controllare le e-mail che hai inviato.
5.3 Invia facilmente e-mail con corpo HTML (incluso collegamento ipertestuale, immagine, ecc.)
Questa funzione Invia e-mail ti consente di creare un'e-mail html, che include collegamento ipertestuale, immagine, diverse dimensioni dei caratteri e colori dei caratteri, ecc.
Dopo shavasana, sedersi in silenzio; saluti; creando una mailing list che includa i campi email di cui hai bisogno,
Quando si configurare la finestra di dialogo Invia e-mail, puoi arricchire il contenuto del corpo utilizzando le opzioni sulla barra degli strumenti.
Vedi lo screenshot qui sotto:
5.4 Inserisci facilmente la firma predefinita di Outlook durante l'invio di e-mail
Nel metodo sopra, abbiamo dimostrato un codice VBA per aiutarti a inviare e-mail con la firma predefinita di Outlook. Qui con la funzione Invia e-mail, devi solo selezionare un'opzione, quindi la firma predefinita di Outlook verrà inserita nelle e-mail che hai inviato da Excel.
Dopo shavasana, sedersi in silenzio; saluti; creando una mailing list che includa i campi email di cui hai bisogno,
Quando configurare la finestra di dialogo Invia e-mail, devi fare clic Opzioni > Usa le impostazioni della firma di Outlook.
Note:: assicurati che sia visualizzato un segno di spunta prima dell'opzione Usa le impostazioni della firma di Outlook.
Quando i destinatari ricevono l'e-mail, possono vedere la firma predefinita di Outlook visualizzata alla fine del corpo dell'e-mail.
5.5 Invia facilmente e-mail da un account e-mail specifico
Per utilizzare un determinato account e-mail per inviare le e-mail da Excel invece di utilizzare l'account predefinito, la funzione Invia e-mail può anche aiutare a farlo facilmente.
Dopo shavasana, sedersi in silenzio; saluti; creando una mailing list che includa i campi email di cui hai bisogno,
Quando configurare la finestra di dialogo Invia e-mail, devi fare clic Opzioni > Inviato da, quindi fai clic sull'account e-mail da cui devi inviare le e-mail.
Note:: Dopo aver selezionato l'account e-mail, verrà visualizzato un segno di spunta prima di esso.
Clicchi qui per saperne di più su questa funzione Invia e-mail.
Se desideri avere una prova gratuita (30 giorni) di questa utility, fare clic per scaricarlo, quindi andare ad applicare l'operazione secondo i passaggi precedenti.
In conclusione, l'invio di e-mail da Excel è abbastanza utile nel nostro lavoro quotidiano. Questo articolo copre argomenti più completi sull'invio di e-mail da Excel, se ci sono altri argomenti o soluzioni più semplici, lascia un commento per farmelo sapere.
I migliori strumenti per la produttività in ufficio
Potenzia le tue competenze di Excel con Kutools per Excel e sperimenta l'efficienza come mai prima d'ora. Kutools per Excel offre oltre 300 funzionalità avanzate per aumentare la produttività e risparmiare tempo. Fai clic qui per ottenere la funzionalità di cui hai più bisogno...
Office Tab porta l'interfaccia a schede in Office e semplifica notevolmente il tuo lavoro
- 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, piuttosto che in nuove finestre.
- Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!