Excel-handleiding – E-mails verzenden vanuit Excel
Normaal gesproken gebruiken we e-mailclients zoals Outlook, Gmail, enzovoort om e-mails te verzenden. Veel mensen slaan echter gegevens op in Excel-werkboeken en willen tijdens het werken deze gegevens direct met anderen delen. Daarom is het handig om e-mails rechtstreeks vanuit een Excel-werkboek te versturen, zodat u tijd bespaart doordat u geen aparte e-mailclient hoeft te openen. In deze stapsgewijze handleiding laten we zien hoe u onder verschillende omstandigheden e-mails vanuit Excel kunt verzenden.
Opmerking: Voordat u de onderstaande methoden toepast, moet u een Outlook-e-mailclient op uw computer configureren en deze instellen als uw standaard e-mailclient.
Inhoudsopgave: [ Verbergen ]
1. De basisprincipes van e-mails verzenden vanuit Excel
In deze sectie worden de basisprincipes van het verzenden van e-mails vanuit Excel uitgelegd.
1.1 E-mails verzenden vanuit Excel met ingebouwde Excel-functies
Als u alleen eenvoudige e-mails vanuit Excel wilt verzenden, met alleen de velden Aan, Onderwerp, Cc en berichttekst, kunnen de ingebouwde functies van Excel u hierbij helpen.
1.1.1 E-mail verzenden vanuit Excel met behulp van een formule
Zoals in de onderstaande tabel te zien is, kunt u verschillende e-mails vanuit Excel verzenden op basis van de opgegeven velden door celverwijzingen te gebruiken om verschillende Hyperlink-formules te maken. Nadat u de e-mailhyperlinks heeft aangemaakt, kunt u op de gewenste hyperlink klikken om automatisch een e-mail te verzenden.
Opmerking: Als er meer dan één ontvanger in de velden Aan of Cc staat, scheid deze dan met puntkomma's.
Deze sectie is opgedeeld in vier delen om u de stappen te tonen voor het afzonderlijk toevoegen van e-mailadres, Cc-ontvanger(s), onderwerpregel en berichttekst aan de Hyperlink-formule. Volg de onderstaande stappen.
De syntaxis en argumenten van de functie "HYPERLINK" zijn als volgt.
Syntaxis
HYPERLINK(link_location, [friendly_name])
Argumenten
1.1.1.1 E-mailadres toevoegen aan Hyperlink-formule
Hier gebruiken we "mailto:" als onderdeel van de formule om een e-mailontvanger toe te voegen. In dit voorbeeld staat het e-mailadres van de eerste ontvanger in cel B2, dus we voegen "mailto:" toe en verwijzen naar cel B2.
“mailto:”&B2
1. Selecteer een cel waarin u de hyperlink wilt weergeven. In dit geval kies ik cel F2.
2. Voer vervolgens de volgende formule in deze cel in.
=HYPERLINK("mailto:"&B2)
Opmerking: Als u op de "Enter"-toets drukt, wordt er een hyperlink aangemaakt zoals in de onderstaande schermafbeelding. Wanneer u op de link klikt, wordt er een Outlook-e-mail aangemaakt en wordt het e-mailadres van de ontvanger automatisch ingevuld in het veld Aan.
Het e-mailadres van de ontvanger is nu toegevoegd aan de Hyperlink-formule. Ga verder met de volgende stappen om de onderwerpregel, Cc-ontvanger(s) en berichttekst toe te voegen zoals u wenst.
1.1.1.2 Cc-ontvanger(s) toevoegen aan Hyperlink-formule
Om de Cc-ontvanger(s) toe te voegen aan de Hyperlink-functie, voegt u "?cc=" toe als onderdeel van de formule zoals hieronder.
De formule in cel F2 moet er nu als volgt uitzien:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2)
1.1.1.3 Onderwerpregel toevoegen aan Hyperlink-formule
Om de onderwerpregel toe te voegen aan de Hyperlink-functie, voegt u "&subject=" toe als onderdeel van de formule zoals hieronder.
De formule in cel F2 ziet er nu als volgt uit:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 Berichttekst met regeleinden toevoegen aan Hyperlink-formule
De laatste stap is het toevoegen van de berichttekst aan de Hyperlink-formule. Zoals u in het voorbeeld ziet, zijn er twee regels tekst in E2, gescheiden door een regeleinde, en u wilt het regeleinde behouden in het e-mailbericht. Herkent Outlook het regeleinde in deze situatie? Laten we het controleren.
Om de berichttekst toe te voegen aan de Hyperlink-formule, voegt u “&body=" toe als onderdeel van de formule zoals hieronder.
De formule in cel F2 wordt nu als volgt weergegeven:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)
Opmerking: Als u op de "Enter"-toets drukt en op de link klikt, ziet u in de nieuwe e-mail dat de inhoud van het e-mailbericht op dezelfde regel wordt weergegeven.
Om de berichttekst in aparte regels weer te geven, moet u de celinhoud aanpassen door de regeleindekaraktercode "%0A" toe te voegen op de plaats waar u een regeleinde wilt invoegen. Zie schermafbeelding:
1.1.1.5 De weer te geven tekst voor de hyperlink opgeven
In de bovenstaande stappen hebben we het argument Link_location ingevuld met e-mailvelden. In deze sectie gaan we het volgende argument [friendly_name] invullen.
In dit geval wil ik dat de hyperlinkcel de tekst "E-mail naar xx" weergeeft, waarbij xx de naam van de ontvanger in A2 is. De formule in F2 moet dus worden aangepast naar:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)
Druk op de "Enter"-toets om het resultaat te krijgen.
Selecteer deze formulecel en sleep de "AutoFill-hendel" naar beneden om andere e-mailhyperlinks te maken. Zie schermafbeelding:
1.1.2 E-mail verzenden vanuit Excel met de Hyperlink-functie
Naast het gebruik van de bovenstaande Hyperlink-formule kunt u ook handmatig een e-mailhyperlink maken met de functie "Hyperlink invoegen" in Excel. In deze sectie laten we de stappen zien.
1. Klik met de rechtermuisknop op een e-mail waar u een hyperlink wilt invoegen en kies "Koppeling" in het contextmenu.
2. In het pop-upvenster "Hyperlink invoegen" moet u het volgende instellen.

Wanneer u op de hyperlink klikt, wordt er een Outlook-e-mail aangemaakt met de opgegeven velden Aan, Onderwerp en Bericht zoals in de onderstaande schermafbeelding.
Opmerkingen:
1.2 E-mail verzenden naar meerdere ontvangers in cellen met VBA-script
In het bovenstaande voorbeeld ziet u dat meerdere e-mailadressen in één cel worden weergegeven, gescheiden door puntkomma's. Als u een lijst met e-mailadressen heeft zoals in de onderstaande schermafbeelding en u wilt een e-mail of afzonderlijke e-mails naar al deze adressen verzenden, kan de volgende VBA-code u helpen.
1.2.1 Een e-mail verzenden naar meerdere ontvangers in cellen met VBA-script
1. Ga in het werkblad dat alle e-mailadressen bevat waarnaar u de e-mail wilt sturen. Druk op de toetsen "Alt" + "F11" om het venster "Microsoft Visual Basic for Applications" te openen.
2. Klik in het venster "Microsoft Visual Basic for Applications" op "Invoegen" > "Module" en plak vervolgens de volgende code in het venster "Module (Code)".
VBA-code: E-mail verzenden naar een lijst met e-mailadressen
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. Druk op de toets "F5" om de code uit te voeren; er verschijnt een "Kutools voor Excel"-dialoogvenster. Selecteer de lijst met e-mailadressen en klik op "OK".
Opmerkingen:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Na het uitvoeren van de code worden alle e-mailadressen in het geselecteerde bereik weergegeven in het veld Aan van het berichtvenster. Zie schermafbeelding:
1.2.2 E-mails afzonderlijk verzenden naar elke ontvanger die in cellen is vermeld met VBA-script
De bovenstaande code voegt alle e-mailadressen in het geselecteerde bereik toe aan het veld Aan van het berichtvenster. Als u e-mails afzonderlijk naar elk e-mailadres in de cellen wilt verzenden zonder dat ze elkaars adres zien, kunt u het volgende VBA-script proberen.
1. Ga in het werkblad dat alle e-mailadressen bevat waarnaar u de e-mails wilt sturen. Druk op de toetsen "Alt" + "F11" om het venster "Microsoft Visual Basic for Applications" te openen.
2. Klik in het venster "Microsoft Visual Basic for Applications" op "Invoegen" > "Module" en plak vervolgens de volgende code in het venster Module (Code).
VBA-code: E-mails afzonderlijk verzenden naar elk e-mailadres dat in cellen is vermeld
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. Klik vervolgens op "Extra" > "Verwijzingen". Zoek en vink in het dialoogvenster "Verwijzingen – VBAProject" het vakje "Microsoft Outlook16.0 Object Library" aan en klik op de knop "OK" om de wijzigingen op te slaan.
4. Druk op de toets "F5" om de code uit te voeren; er verschijnt een "Kutools voor Excel"-dialoogvenster. Selecteer de lijst met e-mailadressen en klik op "OK".
Opmerkingen:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
In dit voorbeeld zijn er zes e-mailadressen in het geselecteerde bereik, dus worden er automatisch zes Outlook-berichtvensters aangemaakt met elk een afzonderlijk e-mailadres in het veld Aan, zoals in de onderstaande schermafbeelding.
5. Klik ten slotte op de knop "Verzenden" om de e-mails één voor één te versturen.
2. Bijlagen of Outlook-handtekening invoegen in de e-mails die vanuit Excel worden verzonden (met VBA-scripts)
In deze sectie laten we zien hoe u bijlagen of de standaard Outlook-handtekening toevoegt aan e-mails die vanuit Excel worden verzonden.
2.1 Bijlagen invoegen in de e-mails die vanuit Excel worden verzonden
Hier beschrijven we de verschillende situaties voor het toevoegen van bijlagen, zodat u de methode kunt kiezen die bij uw behoeften past. In deze sectie leert u (klik op een van de onderstaande links om naar de betreffende methode te gaan):
2.1.1 Een bepaald bestand als bijlage e-mailen
U kunt de volgende VBA-code gebruiken om één of meerdere bestanden in een map als bijlagen vanuit Excel te e-mailen.
1. Druk op de toetsen "Alt" + "F11".
2. Klik in het geopende venster "Microsoft Visual Basic for Applications" op "Invoegen" > "Module". Plak vervolgens de onderstaande VBA-code in het venster Module (Code).
VBA-code: Bestanden in een map als bijlagen vanuit Excel e-mailen
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
Opmerkingen:
3. Klik vervolgens op "Extra" > "Verwijzingen". Zoek en vink in het dialoogvenster "Verwijzingen – VBAProject" het vakje "Microsoft Outlook16.0 Object Library" aan en klik op de knop "OK" om de wijzigingen op te slaan.
4. Druk op de toets "F5" om de code uit te voeren; er verschijnt een "Bladeren"-venster. Selecteer de bestanden die u als bijlage wilt toevoegen aan de e-mail en klik op "OK".
Er verschijnt vervolgens een berichtvenster. U ziet dat de geselecteerde bestanden als bijlagen worden weergegeven in het veld Bijgevoegd.
2.1.2 Het huidige werkblad als bijlage e-mailen
Als u het huidige werkblad als bijlage vanuit Excel wilt e-mailen, kunt u het VBA-script in deze sectie gebruiken.
1. Druk op de toetsen "Alt" + "F11".
2. Klik in het geopende venster "Microsoft Visual Basic for Applications" op "invoegen" > "Module". Plak vervolgens de onderstaande VBA-code in het venster "Module (Code)".
VBA-code: Het huidige werkblad als bijlage e-mailen
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
Opmerkingen:
3. Druk op de toets "F5" om de code uit te voeren; het huidige werkblad wordt opgeslagen als een Excel-werkboek en automatisch als bijlage toegevoegd aan een berichtvenster. Zie schermafbeelding:
Opmerking: Het bijgevoegde werkboek dat alleen het huidige werkblad bevat, heeft dezelfde naam als het oorspronkelijke werkboek. De tijd waarop u de code uitvoert, wordt ook aan de werkboeknaam toegevoegd.
2.1.3 Het huidige werkboek als bijlage e-mailen
Na het leren van de VBA-code om het huidige werkblad als bijlage vanuit Excel te e-mailen, bieden we hier een ander VBA-script om u te helpen het volledige werkboek als bijlage te e-mailen. Volg de onderstaande stappen.
1. Druk op de toetsen "Alt" + "F11".
2. Klik in het geopende venster "Microsoft Visual Basic for Applications" op "Invoegen" > "Module". Plak vervolgens de onderstaande VBA-code in het venster Module (Code).
VBA-code: Het huidige werkboek als bijlage vanuit Excel e-mailen
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
Opmerkingen:
3. Druk op de toets "F5" om de code uit te voeren; het huidige werkboek wordt automatisch als bijlage toegevoegd aan het berichtvenster. Zie schermafbeelding:
2.1.4 Het volledige werkboek als PDF-bijlage e-mailen
Veel mensen slaan een Excel-werkboek op als PDF-bestand en sturen dit vervolgens als bijlage naar anderen. In deze sectie laat ik u zien hoe u rechtstreeks vanuit Excel een e-mail kunt verzenden met het huidige geopende werkboek als PDF-bijlage, zonder het werkboek handmatig als PDF op te slaan.
1. Druk op de toetsen "Alt" + "F11".
2. Klik in het geopende venster "Microsoft Visual Basic for Applications" op "Invoegen" > "Module". Plak vervolgens de onderstaande VBA-code in het venster Module (Code).
VBA-code: Het volledige werkboek als PDF-bijlage e-mailen
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
Opmerkingen:
3. Druk op de toets "F5" om de code uit te voeren. Het huidige werkboek wordt dan automatisch als PDF-bijlage toegevoegd aan een nieuw berichtvenster. Zie schermafbeelding:
2.1.5 Het huidige werkblad als PDF-bijlage e-mailen
Stel, u heeft een werkboek met de naam "Maandelijkse verkoop" en u heeft een verkooprapport gemaakt in een werkblad met de naam "verkooprapport" en wilt dit werkblad als PDF-bestand naar uw collega's sturen. De volgende VBA-code kan u hierbij helpen.
1. Druk op de toetsen "Alt" + "F11".
2. Klik in het geopende venster "Microsoft Visual Basic for Applications" op "invoegen" > "Module". Plak vervolgens de onderstaande VBA-code in het venster Module (Code).
VBA-code: Het huidige werkblad als PDF-bijlage e-mailen
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
Opmerkingen:
3. Druk op de toets "F5" om de code uit te voeren. Het huidige werkblad wordt dan automatisch als PDF-bijlage toegevoegd aan een nieuw berichtvenster. Zie schermafbeelding:
2.2 Outlook-handtekening invoegen in de e-mails die vanuit Excel worden verzonden
Neem het bovenstaande geval als voorbeeld: u gebruikt de bovenstaande VBA-code om het huidige werkblad als PDF-bijlage vanuit Excel te verzenden, maar de Outlook-handtekening wordt niet toegevoegd aan het berichtvenster. Om de standaard Outlook-handtekening te behouden in de e-mail die vanuit Excel wordt verzonden, kunt u de volgende methode gebruiken.
Hieronder staan twee VBA-codes vermeld.
VBA-code1: De code helpt om de Outlook-handtekening te behouden.
VBA-code2: De code helpt het huidige werkblad als PDF-bijlage te e-mailen.
VBA-code1: Outlook-handtekening behouden
.HTMLBody = "Email body" & "
" & .HTMLBody
VBA-code2: Het huidige werkblad als PDF-bijlage e-mailen
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. Normaal gesproken moet u op de toetsen "Alt" + "F11" drukken om het venster "Microsoft Visual Basic for Applications" te openen.
2. Klik in het venster "Microsoft Visual Basic for Applications" op "Invoegen" > "Module". Plak vervolgens de bovenstaande VBA-code2 in het venster Module (Code).
3. Om de standaard Outlook-handtekening te behouden in de e-mail die vanuit Excel wordt verzonden, moet u VBA-code2 als volgt aanpassen:
Hier is de volledige code na aanpassing.
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. Druk op de toets "F5" om de code uit te voeren. U krijgt dan een nieuw berichtvenster met het huidige werkblad als PDF-bijlage, terwijl de standaard Outlook-handtekening automatisch aan het einde van het e-mailbericht wordt toegevoegd.
3. Automatisch e-mails verzenden vanuit Excel wanneer aan een voorwaarde is voldaan (met VBA-scripts)
In bovenstaande voorbeelden moet u de code handmatig uitvoeren om de e-mail te verzenden. Als u de code automatisch wilt laten uitvoeren wanneer aan een bepaalde voorwaarde is voldaan, bijvoorbeeld wanneer een cel een bepaalde waarde bereikt, wanneer een celwaarde verandert, wanneer een datum is bereikt, enzovoort, wordt de e-mail automatisch verzonden. In deze sectie vindt u veelvoorkomende voorwaarden waarnaar Excel-gebruikers vaak zoeken op Google, zodat u automatisch e-mails vanuit Excel kunt verzenden wanneer aan een bepaalde voorwaarde is voldaan.
3.1 Automatisch een e-mail verzenden wanneer een cel een bepaalde waarde bereikt
Zoals in de onderstaande schermafbeelding te zien is, heeft u bijvoorbeeld een verkooptabel waarbij cel D6 het verkoop totaal bevat. U wilt automatisch een e-mail naar uw leidinggevende sturen op basis van het verkoop totaal, bijvoorbeeld een e-mail aanmaken of verzenden zodra het verkoop totaal hoger is dan10.000, maar als het verkoop totaal gelijk is aan of lager is dan10.000, gebeurt er niets.
1. Klik met de rechtermuisknop op het tabblad van het werkblad met de verkooptabel en kies "Code weergeven" in het contextmenu.
2. Plak in het geopende venster "Microsoft Visual Basic for Applications" de volgende VBA-code in het venster "Sheet (Code)".
VBA-code: Automatisch een e-mail verzenden wanneer een cel een bepaalde waarde bereikt 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
Opmerkingen:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
Vanaf nu wordt er een e-mail aangemaakt zodra de waarde in cel D6 hoger is dan10.000, zoals in de onderstaande schermafbeelding.
3.2 Automatisch een e-mail verzenden wanneer een celwaarde verandert
Zoals in de onderstaande schermafbeelding te zien is, ontvangt u bijvoorbeeld een werkboek met maandelijkse verkoopcijfers in verschillende werkbladen en het verkoop totaal in één werkblad. U moet het verkoop totaal controleren en als deze wordt gewijzigd, het werkboek terugsturen naar de afzender en de afzender informeren dat de cel is aangepast.
1. Klik met de rechtermuisknop op het tabblad van het werkblad met de verkooptabel en kies "Code weergeven" in het contextmenu.
2. Plak in het geopende venster "Microsoft Visual Basic for Applications" de volgende VBA-code in het venster Sheet (Code).
VBA-code: Automatisch een e-mail verzenden wanneer een opgegeven celwaarde verandert
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
Opmerkingen: In de code,
Vanaf nu wordt er automatisch een Outlook-bericht aangemaakt zodra de waarde in cel B14 verandert, zoals in de onderstaande schermafbeelding.
3.3 Automatisch een e-mail verzenden wanneer een werkboek wordt opgeslagen
Als u een werkboek heeft dat u na bewerking met anderen moet delen, moet u normaal gesproken het werkboek opslaan, de e-mailclient openen, een nieuwe e-mail aanmaken met het werkboek als bijlage, de velden invullen en vervolgens de e-mail verzenden. In deze sectie laten we u zien hoe u automatisch een e-mail aanmaakt telkens wanneer u het werkboek opslaat. Volg de onderstaande stappen.
1. Druk op de toetsen "Alt" + "F11" om het venster "Microsoft Visual Basic for Applications" te openen.
2. Dubbelklik in dit venster op "ThisWorkbook" in het "Project"-venster en plak vervolgens de volgende VBA-code in het venster "ThisWorkbook (Code)".
VBA-code: Automatisch een e-mail verzenden wanneer een werkboek wordt opgeslagen
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
Opmerkingen: In de code,
3. Vanaf nu wordt er automatisch een Outlook-e-mail aangemaakt wanneer u het werkboek opslaat met de toetsen "Ctrl" + "S" of door op de knop "Opslaan" te klikken. U ziet dat het huidige werkboek als bijlage is toegevoegd en de velden zijn ingevuld met de opgegeven inhoud. Zie schermafbeelding:
Tips: Als u dit werkboek vaak gebruikt, raden wij u aan het werkboek op te slaan als een "Excel-werkmap met macro's" om de VBA-code voor toekomstig gebruik te bewaren. De stappen zijn als volgt.
3.4 Automatisch een e-mail verzenden op een specifiek tijdstip
Stel dat u elke vrijdag om9 uur 's ochtends automatisch een e-mail met een werkboek voor taaktoewijzing wilt versturen, zonder handmatig de e-mailclient te openen. In deze sectie laten we u zien hoe u dit voor elkaar krijgt.
1. Druk op de toetsen "Alt" + "F11" om het venster "Microsoft Visual Basic for Applications" te openen.
2. Klik in het venster "Microsoft Visual Basic for Applications" op "Invoegen" > "Module". Plak vervolgens de volgende VBA-code in het venster Module.
VBA-code1 : Het huidige werkboek als bijlage vanuit Excel e-mailen
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. Dubbelklik in dit venster op "ThisWorkbook" in het "Project"-venster en plak vervolgens de volgende VBA-code in het venster "ThisWorkbook (Code)".
VBA-code2: Automatisch een e-mail verzenden op een specifiek tijdstip
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub
Opmerkingen:
4. Sla de codes op en sla het werkboek vervolgens op als een Excel-werkmap met macro's zoals hieronder.
5. Open uw opgeslagen werkmap met macro's; er wordt dan automatisch een e-mail aangemaakt of verzonden zodra de dag en tijd zijn aangebroken.
4. Aanvullende onderwerpen
In deze sectie vindt u andere onderwerpen die u kunt tegenkomen bij het verzenden van e-mails vanuit Excel.
4.1 Een bereik van cellen e-mailen vanuit Excel (met VBA-script)
Stel dat er een maandelijkse verkooptabel in een Excel-werkblad staat, zoals in de onderstaande schermafbeelding, en u wilt deze tabel als berichtinhoud of als bijlage naar anderen sturen. Hier bieden we u twee methoden om dit te doen.
4.1.1 Een bereik als onderdeel van de berichtinhoud vanuit Excel e-mailen
U kunt de volgende VBA-code uitvoeren om een bereik van cellen als onderdeel van de e-mailinhoud vanuit Excel te verzenden
1. Druk op de toetsen "Alt" + "F11" om het venster "Microsoft Visual Basic for Applications" te openen.
2. Klik in het venster "Microsoft Visual Basic for Applications" op "Extra" > "Verwijzingen". Vink vervolgens het vakje "Microsoft Outlook16.0 Object Library" aan en klik op "OK" in het dialoogvenster "Verwijzingen – VBAProject".
3. Klik op "Invoegen" > "Module" en plak vervolgens de volgende VBA-code in het venster "Module (Code)".
VBA-code: Een bereik van cellen als onderdeel van de e-mailinhoud vanuit Excel verzenden
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
Opmerkingen: In de code,
4. Druk op de toets "F5" om de code uit te voeren. In het pop-upvenster "Kutools voor Excel" selecteert u het bereik van cellen dat u als onderdeel van de e-mailinhoud wilt verzenden en klikt u op "OK". Zie schermafbeelding:
Er wordt automatisch een Outlook-e-mail aangemaakt. U ziet dat het geselecteerde bereik uit het werkblad is ingevoegd in de e-mailinhoud. Zie schermafbeelding:
4.1.2 Een bereik als bijlage e-mailen vanuit Excel
Als u een bereik van cellen in een werkblad als bijlage vanuit Excel wilt e-mailen, kunt u de volgende VBA-code proberen.
1. Druk op de toetsen "Alt" + "F11".
2. Klik in het geopende venster "Microsoft Visual Basic for Applications" op "Invoegen" > "Module". Plak vervolgens de onderstaande VBA-code in het venster "Module (Code)".
VBA-code: Een bereik als bijlage vanuit Excel e-mailen
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
Opmerkingen:
3. Druk op de toets "F5" om de code uit te voeren. In het pop-upvenster "Kutools voor Excel" selecteert u het bereik van cellen dat u als bijlage in een e-mail wilt verzenden en klikt u op "OK". Zie schermafbeelding:
Er wordt automatisch een Outlook-e-mail aangemaakt. Het geselecteerde bereik van cellen uit het werkblad wordt opgeslagen als een Excel-werkboek en als bijlage toegevoegd aan het berichtvenster. Zie schermafbeelding:
4.2 E-mails verzenden wanneer op een knop wordt geklikt in Excel
Als u een opdrachtknop wilt gebruiken om een macro te activeren voor het verzenden van een e-mail vanuit Excel, bijvoorbeeld het huidige werkboek als bijlage naar anderen sturen door op een opdrachtknop in het werkblad te klikken, volg dan de onderstaande stappen.
1. Klik op "Ontwikkelaars" > "Invoegen" > "Opdrachtknop (ActiveX-besturingselement)". Teken vervolgens een opdrachtknop in het werkblad.
Tips: Als u al een opdrachtknop heeft, sla deze stap dan over.
2. Druk op de toetsen "Alt" + "F11" om het venster "Microsoft Visual Basic for Applications" te openen. Klik in het venster op "Invoegen" > "Module" en plak vervolgens de VBA-code (de code om het huidige werkboek als bijlage vanuit Excel te e-mailen) in het venster Module (Code).
Klik hier om de code te krijgen.
Opmerking: De naam van de macro die u in stap2 heeft aangemaakt is hier "SendWorkbook".
3. Druk op de toetsen "Alt" + "Q" om het venster "Microsoft Visual Basic for Applications" te sluiten.
4. Nu moet u de macro aan de opdrachtknop toewijzen. Klik met de rechtermuisknop op de opdrachtknop en kies "Code weergeven" in het contextmenu.
5. Het venster "Microsoft Visual Basic for Applications" verschijnt; u ziet de volgende twee regels in het venster "Sheet (Code)".
Private Sub CommandButton1_Click()
End Sub
6. Voer de naam van de bestaande macro in binnen de subprocedure voor de opdrachtknop.
7. Druk op de toetsen "Alt" + "Q" om de "Visual Basic Editor" te sluiten en klik op "Ontwikkelaars" > "Ontwerpmodus" om de ontwerpmodus uit te schakelen.
Nu kunt u op de opdrachtknop klikken om een e-mail te verzenden met het huidige werkboek als bijlage in de e-mail.
4.3 E-mails verzenden vanuit een opgegeven e-mailaccount
Normaal gesproken wordt bij het verzenden van een e-mail vanuit Excel met VBA-code het standaardaccount in Outlook als afzender gebruikt. Stel dat u meerdere e-mailaccounts in Outlook heeft geconfigureerd en een bepaald account wilt gebruiken om de e-mails vanuit Excel te verzenden in plaats van het standaardaccount. De volgende VBA-code kan u hierbij helpen.
De volgende codes zijn in dit geval nodig.
VBA-code1:
Dim OutlookMail As Outlook.MailItem
VBA-code2:
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
Hoe gebruikt u bovenstaande VBA-codes?
In dit voorbeeld gaan we een bepaald e-mailaccount opgeven om het huidige werkboek als bijlage vanuit Excel te verzenden. Volg de onderstaande stappen.
1. Druk op de toetsen "Alt" + "F11". Klik in het venster "Microsoft Visual Basic for Applications" op "Extra" > "Verwijzingen". Vink vervolgens het vakje "Microsoft Outlook16.0 Object Library" aan en klik op "OK" in het dialoogvenster "Verwijzingen – VBAProject".
2. Klik op "Invoegen" > "Module". Plak vervolgens de volgende VBA-code in het venster "Module (Code)".
VBA-code: Het huidige werkboek als e-mailbijlage vanuit Excel verzenden via een opgegeven Outlook-account
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. Druk op de toets "F5" om de code uit te voeren. Er verschijnt een Outlook-e-mailbericht; u ziet dat het veld "Van" is ingevuld met het e-mailaccount dat u in de code heeft opgegeven.
4.4 Een e-mail verzenden wanneer een datum is bereikt
Als u een e-mail wilt verzenden op basis van een specifieke vervaldatum, bijvoorbeeld zoals in de onderstaande schermafbeelding, is er een projecttabel: "wanneer de vervaldatum in het bereik E2:E7 gelijk is aan of minder dan7 dagen vanaf vandaag (stel dat de huidige datum2022/8/4 is)", wordt er automatisch een e-mail verzonden naar de betreffende projectleiders om hen te informeren dat het project bijna verloopt.
1. Klik met de rechtermuisknop op het tabblad van het werkblad met de projecttabel en kies "Code weergeven" in het contextmenu.
2. Plak in het geopende venster "Microsoft Visual Basic for Applications" de volgende VBA-code in het venster "Sheet (Code)".
VBA-code: Automatisch een e-mail verzenden wanneer een vervaldatum is bereikt
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
Opmerkingen: In de code,
3. Druk op de toets "F5" om de code uit te voeren. Als de vervaldatum aan de voorwaarden voldoet, wordt de betreffende e-mail aangemaakt. In dit geval worden er twee e-mails aangemaakt zoals in de onderstaande schermafbeelding.
5. Een handig hulpmiddel om eenvoudig e-mails te verzenden vanuit Excel
Als u nieuw bent met VBA, zijn de bovenstaande methoden mogelijk niet eenvoudig voor u. Daarom raden wij de functie "E-mails verzenden" van Kutools voor Excel aan. Met deze functie kunt u eenvoudig e-mails vanuit Excel verzenden met slechts enkele klikken. Volg de onderstaande stappen.
5.1 Eenvoudig een mailinglijst maken met de benodigde e-mailvelden
Voordat u de functie E-mails verzenden gebruikt, moet u een mailinglijst maken die de benodigde e-mailvelden bevat. De functie Mailinglijst maken kan u hierbij helpen.
1. Klik op "Kutools Plus" > "Mailinglijst maken".
2. Stel in het geopende venster "Mailinglijst maken" het volgende in.
Er wordt nu een voorbeeld van een mailinglijsttabel aangemaakt, zoals in de onderstaande schermafbeelding.
3. Vervang nu de oorspronkelijke gegevens in het voorbeeld door uw eigen veldgegevens.
U heeft nu een mailinglijsttabel aangemaakt. Ga verder met het toepassen van de functie "E-mails verzenden" om e-mails vanuit Excel te versturen op basis van de door u aangemaakte velden.
Kutools voor Excel - Boost Excel met meer dan 300 essentiële tools. Geniet van permanent gratis AI-functies! Nu verkrijgen
5.2 Eenvoudig e-mails verzenden met de velden die u in de mailinglijst heeft aangemaakt
Nadat u de mailinglijst heeft aangemaakt (klik om te zien hoe) met de velden die u mogelijk in uw e-mails nodig heeft, kunt u nu e-mails vanuit Excel verzenden met deze velden.
1. Selecteer de volledige mailinglijst, klik op "Kutools Plus" > "E-mails verzenden".
2. Stel in het dialoogvenster "E-mails verzenden" het volgende in.
3. Er verschijnt een "Kutools voor Excel"-dialoogvenster waarin wordt aangegeven hoeveel e-mails zijn verzonden. Klik op de knop "OK" om dit venster te sluiten.
Tips: U kunt in Outlook naar de map "Verzonden items" gaan om de verzonden e-mails te controleren.
5.3 Eenvoudig e-mails verzenden met HTML-bericht (inclusief koppeling, afbeelding, enz.)
Met de functie E-mails verzenden kunt u een HTML-e-mail samenstellen, inclusief koppelingen, afbeeldingen, verschillende lettergroottes en letterkleuren, enzovoort.
Nadat u een mailinglijst heeft aangemaakt met de benodigde e-mailvelden, kunt u bij het instellen van het dialoogvenster E-mails verzenden de inhoud van het bericht verrijken met de opties op de werkbalk.
Zie de onderstaande schermafbeelding:
5.4 Eenvoudig de standaard Outlook-handtekening invoegen bij het verzenden van e-mails
In de bovenstaande methode hebben we een VBA-code laten zien om e-mails te verzenden met de standaard Outlook-handtekening. Met de functie E-mails verzenden hoeft u alleen een optie aan te vinken en wordt de standaard Outlook-handtekening automatisch toegevoegd aan de e-mails die u vanuit Excel verzendt.
Nadat u een mailinglijst heeft aangemaakt met de benodigde e-mailvelden, klikt u bij het instellen van het dialoogvenster E-mails verzenden op "Opties" > "Instellingen voor Outlook-handtekening gebruiken".
Opmerking: Zorg ervoor dat er een vinkje staat voor de optie Instellingen voor Outlook-handtekening gebruiken.
Wanneer ontvangers de e-mail ontvangen, zien ze de standaard Outlook-handtekening aan het einde van het e-mailbericht.
5.5 Eenvoudig e-mails verzenden vanaf een opgegeven e-mailaccount
Als u een bepaald e-mailaccount wilt gebruiken om e-mails vanuit Excel te verzenden in plaats van het standaardaccount, kan de functie E-mails verzenden dit eenvoudig voor u regelen.
Nadat u een mailinglijst heeft aangemaakt met de benodigde e-mailvelden, klikt u bij het instellen van het dialoogvenster E-mails verzenden op "Opties" > "Verzonden vanaf" en kiest u het e-mailaccount waarmee u de e-mails wilt verzenden.
Opmerking: Nadat u het e-mailaccount heeft geselecteerd, wordt er een vinkje voor weergegeven.
Klik hier voor meer informatie over deze functie E-mails verzenden.
Kutools voor Excel - Boost Excel met meer dan 300 essentiële tools. Geniet van permanent gratis AI-functies! Nu verkrijgen
Samengevat: e-mails verzenden vanuit Excel is erg handig in ons dagelijks werk. Dit artikel behandelt uitgebreidere onderwerpen over het verzenden van e-mails vanuit Excel. Heeft u andere onderwerpen of eenvoudigere oplossingen, laat dan gerust een reactie achter.
Beste Office-productiviteitstools
Versterk je Excel-vaardigheden met Kutools voor Excel en ervaar ongeëvenaarde efficiëntie. Kutools voor Excel biedt meer dan300 geavanceerde functies om je productiviteit te verhogen en tijd te besparen. Klik hier om de functie te krijgen die je het meest nodig hebt...
Office Tab brengt een tabbladinterface naar Office en maakt je werk veel eenvoudiger
- Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in
- Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster, in plaats van in nieuwe vensters.
- Verhoog je productiviteit met50% en bespaar dagelijks honderden muisklikken!