Excel-zelfstudie - E-mails verzenden vanuit Excel
Normaal gesproken gebruiken we e-mailclients zoals Outlook, Gmail, enz. om e-mails te verzenden. Maar veel mensen slaan gegevens op in Excel-werkmappen en moeten sommige gegevens naar anderen sturen terwijl ze ermee werken. Daarom moeten ze e-mails rechtstreeks vanuit de Excel-werkmap verzenden, wat tijd bespaart bij het bedienen van een e-mailclient. Deze stapsgewijze zelfstudie laat u zien hoe u onder verschillende omstandigheden e-mails vanuit Excel kunt verzenden.
Note: Voordat u de volgende 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 het verzenden van e-mails vanuit Excel
Dit gedeelte introduceert de basisprincipes van het verzenden van e-mails vanuit Excel.
1.1 Stuur e-mails vanuit Excel met ingebouwde Excel-functies
Als u alleen eenvoudige e-mails vanuit Excel wilt verzenden, inclusief alleen de velden Aan, Onderwerp, Cc en hoofdtekst. De ingebouwde functies in Excel kunnen daarbij helpen.
1.1.1 E-mail verzenden vanuit Excel met een formule
Zoals in de onderstaande tabel wordt getoond, kunt u, om verschillende e-mails vanuit Excel te verzenden op basis van de gegeven velden, de celverwijzingen van de gegeven velden gebruiken om verschillende hyperlinkformules te maken om dit voor elkaar te krijgen. Nadat u de e-mailhyperlinks heeft gemaakt, kunt u op de hyperlink klikken die u nodig hebt 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.
Dit gedeelte is verdeeld in vier delen om u de stappen te laten zien om e-mailadres, Cc-ontvanger(s), onderwerpregel en hoofdtekst afzonderlijk aan de hyperlinkformule toe te voegen. Ga als volgt te werk.
De syntaxis en argumenten van de HYPERLINK functie 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 moeten "mailto:" toevoegen en verwijzen naar cel B2.
“mailto:”&B2
1. Selecteer een cel om de hyperlink weer te geven. In dit geval selecteer ik de cel F2.
2. Voer vervolgens de volgende formule in.
=HYPERLINK("mailto:"&B2)
Note: Als u op de drukt Enter toets, wordt er een hyperlink gemaakt zoals weergegeven in de onderstaande schermafbeelding. Wanneer u op de link klikt, wordt er een Outlook-e-mail gemaakt en wordt het e-mailadres van de ontvanger automatisch ingevuld in het veld Aan.
Het e-mailadres van de ontvanger wordt nu toegevoegd aan de Hyperlink-formule. Ga verder met de volgende stappen om de onderwerpregel, Cc-ontvanger(s) en hoofdtekst toe te voegen als u dat wilt.
1.1.1.2 Cc-ontvanger(s) toevoegen aan Hyperlink-formule
Om de Cc-ontvanger(s) toe te voegen aan de Hyperlink-functie, voeg a.u.b. toe: "?cc=" als onderdeel van de formule als volgt.
De formule in cel F2 zou als volgt moeten zijn:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2)
1.1.1.3 Onderwerpregel toevoegen aan hyperlinkformule
Om de onderwerpregel toe te voegen aan de Hyperlink-functie, voeg a.u.b. toe "&onderwerp=" als onderdeel van de formule als volgt.
De formule in cel F2 zou er nu als volgt uit moeten zien:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 Hoofdtekst met regeleinden toevoegen aan Hyperlink-formule
De laatste stap is om de hoofdtekst toe te voegen aan de Hyperlink-formule. Zoals u in het voorbeeld kunt zien, worden twee regels tekst in E2 gescheiden door een regeleinde en u wilt het regeleinde in de hoofdtekst van de e-mail behouden. Herkent Outlook de regelonderbreking in deze omstandigheid? Laten we het controleren.
Om de hoofdtekst aan de Hyperlink-formule toe te voegen, moet u toevoegen: “&lichaam=" als onderdeel van de formule als volgt.
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 en klik op de link. U kunt in de nieuwe e-mail zien dat de inhoud in de hoofdtekst van de e-mail op dezelfde regel wordt weergegeven.
Om de hoofdtekst van de e-mail in afzonderlijke regels weer te geven, moet u de celinhoud wijzigen door de regelteruglooptekencode toe te voegen % 0A naar de tekst waar u een regeleinde moet invoegen. Zie screenshot:
1.1.1.5 Geef de tekst op die moet worden weergegeven voor de hyperlink
In de bovenstaande stappen hebben we het argument Link_location voltooid met e-mailvelden. Hier in deze sectie gaan we het volgende argument [vriendelijke_naam] afmaken.
In dit geval wil ik dat de hyperlinkcel de tekst weergeeft als "E-mail naar xx”, waarbij xx de naam van de ontvanger is in A2. Dus de formule in F2 moet worden gewijzigd in:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)
Druk op de Enter sleutel om het resultaat te krijgen.
Selecteer deze formulecel en sleep de Handvat voor automatisch aanvullen omlaag om andere e-mailhyperlinks te maken. Zie screenshot:
1.1.2 E-mail verzenden vanuit Excel met de functie Hyperlink
Behalve het gebruik van de bovenstaande Hyperlink-formule, kunt u handmatig een e-mailhyperlink maken met de Invoegen Hyperlink functie in Excel. Dit gedeelte laat u de stappen zien.
1. Klik met de rechtermuisknop op een e-mail waar u een hyperlink wilt invoegen, selecteer Link vanuit het rechtsklikmenu.
2. In het opduiken Voeg hyperlink in dialoogvenster, moet u als volgt configureren.
Wanneer u op de hyperlink klikt, wordt een Outlook-e-mail gemaakt met de gespecificeerde velden Aan, Onderwerp en Hoofdtekst, zoals weergegeven in de onderstaande schermafbeelding.
Opmerkingen:
1.2 Stuur e-mail naar meerdere ontvangers in cellen met VBA-script
In het bovenstaande voorbeeld ziet u dat meerdere e-mailadressen in een cel worden weergegeven, gescheiden door puntkomma's. Als je een lijst met e-mailadressen hebt zoals weergegeven in de onderstaande schermafbeelding en je wilt ze allemaal een e-mail of onafhankelijke e-mail sturen, dan kan de volgende VBA-code je een plezier doen.
1.2.1 Stuur een e-mail naar meerdere ontvangers in cellen met VBA-script
1. In het werkblad dat alle e-mailadressen bevat waarnaar u de e-mail wilt verzenden. druk de anders + F11 toetsen om de te openen Microsoft Visual Basic voor toepassingen venster.
2. In de Microsoft Visual Basic voor toepassingen venster klikt Invoegen > module, en plak de volgende code in de Module (code) venster.
VBA-code: stuur een e-mail 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 de F5 toets om de code uit te voeren en a Kutools for Excel dialoogvenster verschijnt. Selecteer de lijst met e-mailadressen en klik op OK.
Opmerkingen:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Nadat de code is uitgevoerd, worden alle e-mailadressen in het geselecteerde bereik weergegeven in het veld Aan van het berichtvenster. Zie screenshot:
1.2.2 Afzonderlijk e-mails verzenden naar elke ontvanger die in cellen wordt 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 naar elk e-mailadres in cellen afzonderlijk wilt verzenden zonder dat ze elkaars e-mailadressen laten zien, kunt u het volgende VBA-script proberen.
1. In het werkblad dat alle e-mailadressen bevat waarnaar u de e-mails wilt verzenden. druk de anders + F11 sleutels tot open het Microsoft Visual Basic for Applications-venster.
2. In de Microsoft Visual Basic voor toepassingen venster klikt Invoegen > Moduleen plak de volgende code in het venster Module (Code).
VBA-code: stuur e-mails naar elk e-mailadres dat afzonderlijk in cellen wordt 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. Dan klikken Tools > Referenties. In het Referenties - VBAProject dialoogvenster, zoek en controleer de Microsoft Outlook 16.0 Objectbibliotheek in en klik op de OK Knop om de wijzigingen op te slaan.
4. druk de F5 toets om de code uit te voeren en a Kutools for Excel dialoogvenster verschijnt. 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 er worden automatisch zes Outlook-berichtenvensters gemaakt met een afzonderlijk e-mailadres in het veld Aan, zoals weergegeven in de onderstaande schermafbeelding.
5. Klik ten slotte op Verzenden om de e-mail één voor één te verzenden.
2. Voeg bijlagen of Outlook-handtekening in de e-mails verzonden vanuit Excel (met VBA-scripts)
In dit gedeelte wordt uitgelegd hoe u bijlagen of de standaardhandtekening van Outlook invoegt in de e-mails die vanuit Excel worden verzonden.
2.1 Bijlagen invoegen in de e-mails die vanuit Excel zijn verzonden
Hier beschrijven we de verschillende gevallen van het invoegen van bijlagen, en u kunt de methode kiezen op basis van uw behoeften. In dit gedeelte kunt u leren om (klik op een van de volgende koppelingen om naar de bijbehorende methode te gaan):
2.1.1 Een bepaald bestand als bijlage e-mailen
U kunt de volgende VBA-code toepassen om een of meer bestanden in een map als bijlagen vanuit Excel te e-mailen.
1. druk de anders + F11 sleutels.
2. In de opening Microsoft Visual Basic voor toepassingen venster klikt Invoegen > Module. Plak vervolgens de volgende VBA-code in het venster Module (Code).
VBA-code: e-mail bestanden in een map als bijlagen vanuit 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
Opmerkingen:
3. Dan klikken Tools > Referenties. In het Referenties - VBAProject dialoogvenster, zoek en controleer de Microsoft Outlook 16.0 Objectbibliotheek in en klik op de OK Knop om de wijzigingen op te slaan.
4. druk de F5 sleutel om de code uit te voeren, en dan een Blader venster verschijnt, selecteer de bestanden die u in de e-mail wilt bijvoegen en klik vervolgens op OK.
Dan verschijnt er een berichtvenster. U kunt zien dat de geselecteerde bestanden worden weergegeven als bijlagen 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 toepassen.
1. druk de anders + F11 sleutels.
2. In de opening Microsoft Visual Basic voor toepassingen venster klikt invoegen > Module. Plak vervolgens de volgende VBA-code in de Module (code) venster.
VBA-code: e-mail het huidige werkblad als bijlage
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
Opmerkingen:
3. druk de F5 toets om de code uit te voeren, wordt het huidige werkblad opgeslagen als een Excel-werkmap en automatisch als bijlage in een berichtvenster ingevoegd. Zie screenshot:
Opmerking: De bijgevoegde werkmap die alleen het huidige werkblad bevat, heeft dezelfde naam als de originele werkmap. En de tijd dat u de code uitvoert, wordt ook toegevoegd aan de naam van de werkmap.
2.1.3 E-mail de huidige werkmap als bijlage
Nadat u de VBA-code hebt geleerd om het huidige werkblad als bijlage vanuit Excel te e-mailen, bieden we hier nog een VBA-script om u te helpen de hele werkmap als bijlage te e-mailen. Ga als volgt te werk.
1. druk de anders + F11 sleutels.
2. In de opening Microsoft Visual Basic voor toepassingen venster klikt Invoegen > Module. Plak vervolgens de volgende VBA-code in het venster Module (Code).
VBA-code: e-mail de huidige werkmap als bijlage vanuit 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
Opmerkingen:
3. druk de F5 toets om de code uit te voeren, wordt de huidige werkmap automatisch als bijlage in een berichtvenster ingevoegd. Zie screenshot:
2.1.4 E-mail de hele werkmap als pdf-bijlage
Voor de meeste mensen hebben ze de neiging om een Excel-werkmap op te slaan als een PDF-bestand en deze vervolgens als bijlage naar anderen te verzenden. In dit gedeelte laat ik u een manier zien om e-mails rechtstreeks vanuit Excel te verzenden met de huidige geopende werkmap als PDF-bijlage zonder dat u de werkmap handmatig als PDF-bestand hoeft op te slaan.
1. druk de anders + F11 sleutels.
2. In de opening Microsoft Visual Basic voor toepassingen venster klikt Invoegen > Module. Plak vervolgens de volgende VBA-code in het venster Module (Code).
VBA-code: e-mail de hele werkmap als PDF-bijlage
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
Opmerkingen:
3. druk de F5 toets om de code uit te voeren. Vervolgens wordt de huidige werkmap automatisch als PDF-bestandsbijlage in een nieuw berichtvenster ingevoegd. Zie screenshot:
2.1.5 Het huidige werkblad e-mailen als PDF-bijlage
Er is bijvoorbeeld een werkmap met de naam "Maandelijkse verkoop", en u hebt een tabel met verkooprapporten voltooid in een werkblad met de naam "verkooprapport" en wilt u dit werkblad als een PDF-bestand naar uw collega's sturen. De volgende VBA-code kan u een plezier doen.
1. druk de anders + F11 sleutels.
2. In de opening Microsoft Visual Basic voor toepassingen venster klikt invoegen > Module. Plak vervolgens de volgende VBA-code in het venster Module (Code).
VBA-code: e-mail het huidige werkblad als PDF-bijlage
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
Opmerkingen:
3. druk de F5 toets om de code uit te voeren. Vervolgens wordt het huidige werkblad automatisch als PDF-bestandsbijlage in een nieuw berichtvenster ingevoegd. Zie screenshot:
2.2 Outlook-handtekening invoegen in de e-mails verzonden vanuit Excel
Neem het bovenstaande geval als voorbeeld, u past de bovenstaande VBA-code toe om het huidige werkblad als een PDF-bestandsbijlage vanuit Excel te verzenden, maar Outlook-handtekening kan niet aan het berichtvenster worden toegevoegd. Om de standaardhandtekening van Outlook te behouden in de e-mail die vanuit Excel wordt verzonden, helpt de volgende methode.
Hieronder vindt u twee VBA-codes.
VBA-code 1: De code helpt om de Outlook-handtekening te behouden.
VBA-code 2: De code helpt bij het e-mailen van het huidige werkblad als PDF-bijlage.
VBA-code 1: Outlook-handtekening behouden
.HTMLBody = "Email body" & "
" & .HTMLBody
VBA-code 2: e-mail het huidige werkblad als PDF-bijlage
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. Normaal gesproken moet u op de drukken anders + F11 toetsen om de te openen Microsoft Visual Basic voor toepassingen venster.
2. In de Microsoft Visual Basic voor toepassingen venster klikt Invoegen > Module. Plak vervolgens de bovenstaande VBA-code 2 in het venster Module (Code).
3. Om de standaardhandtekening van Outlook te behouden in de e-mail die vanuit Excel wordt verzonden, moet u de VBA-code 2 als volgt wijzigen:
Hier is de volledige code na wijziging.
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. druk de F5 toets om de code uit te voeren. Vervolgens krijgt u een nieuw berichtvenster met het huidige werkblad als PDF-bestand bijgevoegd, terwijl de standaardhandtekening van Outlook automatisch aan het einde van de e-mail wordt ingevoegd.
3. Automatisch e-mails verzenden vanuit Excel wanneer aan een voorwaarde wordt voldaan (met VBA-scripts)
In bovenstaande voorbeelden moet u de code handmatig uitvoeren om de e-mailbezorging te bereiken. Als u de code automatisch wilt activeren wanneer aan een bepaalde voorwaarde is voldaan, zoals wanneer een cel een bepaalde waarde bereikt, wanneer de waarde van een cel verandert, wanneer een datum is bereikt, enz., wordt de e-mail automatisch verzonden. In dit gedeelte worden de voorwaarden vermeld waarnaar Excel-gebruikers vaak hebben gezocht in Google, zodat u automatisch e-mails vanuit Excel kunt verzenden wanneer aan een bepaalde voorwaarde wordt voldaan.
3.1 Automatisch een e-mail verzenden wanneer een cel een bepaalde waarde bereikt
Zoals weergegeven in de onderstaande schermafbeelding, stel dat u een verkooptabel hebt met cel D6 die het verkooptotaal bevat. U wilt automatisch een e-mail naar uw baas sturen op basis van het verkooptotaal, bijvoorbeeld automatisch een e-mail maken of verzenden wanneer het verkooptotaal hoger is dan 10000, maar als het verkooptotaal gelijk is aan of kleiner is dan 10000, wordt er geen actie ondernomen.
1. In het werkblad staat de verkooptabel, klik met de rechtermuisknop op de bladtab en klik op Bekijk code vanuit het rechtsklikmenu.
2. In de opening Microsoft Visual Basic voor toepassingen venster, plak de volgende VBA-code in de Blad (Code) venster.
VBA-code: stuur automatisch een e-mail 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 = ""
.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, wanneer de waarde in cel D6 groter is dan 10000, wordt er een e-mail gemaakt zoals weergegeven in de onderstaande schermafbeelding.
3.2 Automatisch een e-mail sturen wanneer een celwaarde verandert
Stel dat u een werkmap ontvangt, zoals weergegeven in de onderstaande schermafbeelding, met de maandelijkse verkopen in verschillende werkbladen en het verkooptotaal in een werkblad. U moet het verkooptotaal verifiëren en als het verkooptotaal is gewijzigd, stuurt u de werkmap terug naar de afzender en laat u de afzender weten dat de cel is gewijzigd.
1. In het werkblad staat de verkooptabel, klik met de rechtermuisknop op de bladtab en klik op Bekijk code vanuit het rechtsklikmenu.
2. In de opening Microsoft Visual Basic voor toepassingen venster, plak de volgende VBA-code in het venster Blad (Code).
VBA-code: stuur automatisch een e-mail 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 = ""
.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, wanneer de waarde in cel B14 verandert, wordt er automatisch een Outlook-bericht gemaakt zoals weergegeven in de onderstaande schermafbeelding.
3.3 Automatisch een e-mail verzenden wanneer een werkmap is opgeslagen
Als u een werkmap hebt die na wijziging met anderen moet worden gedeeld, moet u de werkmap normaal gesproken opslaan, de e-mailclient starten, een nieuwe e-mail maken met deze werkmap als bijlage, de bijbehorende velden opstellen en de e-mail verzenden. In dit gedeelte ziet u een methode om automatisch een e-mail te maken telkens wanneer u de werkmap opslaat. Ga als volgt te werk.
1. druk de anders + F11 toetsen om de te openen Microsoft Visual Basic voor toepassingen venster.
2. Dubbelklik in dit venster op Dit Werkboek in de Project paneel, plak dan de volgende VBA-code in de ThisWorkbook (code) venster.
VBA-code: automatisch een e-mail verzenden wanneer een werkmap is 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 = ""
.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, wanneer u de werkmap opslaat door op de Ctrl + S toetsen of klikken op de Bespaar knop, wordt er automatisch een Outlook-e-mail aangemaakt. U kunt zien dat de huidige werkmap als bijlage is bijgevoegd en dat de velden zijn gevuld met de opgegeven inhoud. Zie screenshot:
Tips: als u deze werkmap vaak gebruikt, raden wij u aan de werkmap op te slaan als een Excel-werkmap met ingeschakelde macro's om het VBA-script op te slaan voor toekomstig gebruik. De stappen zijn als volgt.
3.4 Automatisch een e-mail verzenden op een bepaald tijdstip
Stel dat u een e-mail met een taaktoewijzingswerkmap naar iemand moet sturen elke vrijdagochtend om 9 uur, en dit automatisch in Excel wilt doen zonder de e-mailclient handmatig te hoeven bedienen. Dit gedeelte laat u de methode zien om het voor elkaar te krijgen.
1. druk de anders + F11 toetsen om de te openen Microsoft Visual Basic voor toepassingen venster.
2. In de Microsoft Visual Basic voor toepassingen venster klikt Invoegen > Module. Plak vervolgens de volgende VBA-code in het modulevenster.
VBA-code1: e-mail de huidige werkmap als bijlage vanuit 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. Dubbelklik in dit venster op Dit Werkboek in de Project paneel, plak dan de volgende VBA-code in de ThisWorkbook (code) venster.
VBA-code 2: Stuur automatisch een e-mail op een bepaald tijdstip
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub
Opmerkingen:
4. Sla de codes op en sla de werkmap als volgt op als een Excel-werkmap met macro's.
5. Open uw opgeslagen werkmap met macro's en er wordt automatisch een e-mail gemaakt of verzonden wanneer de dag en tijd aanbreken.
4. Aanvullende onderwerpen
In dit gedeelte worden andere onderwerpen verzameld die u kunt tegenkomen bij het verzenden van e-mails vanuit Excel.
4.1 E-mail een celbereik vanuit Excel (met VBA-script)
Stel dat er een maandelijkse verkooptabel is in een Excel-werkblad zoals weergegeven in de onderstaande schermafbeelding, en u moet deze maandelijkse verkooptabel naar anderen sturen als de hoofdinhoud van een e-mail of als bijlage rechtstreeks. Hier bieden we u twee methoden om het voor elkaar te krijgen.
4.1.1 Een bereik e-mailen als onderdeel van de hoofdtekst vanuit Excel
U kunt de volgende VBA-code uitvoeren om een celbereik te verzenden als onderdeel van de hoofdtekst van de e-mail vanuit Excel
1. druk de anders + F11 toetsen om de te openen Microsoft Visual Basic voor toepassingen venster.
2. In de Microsoft Visual Basic voor toepassingen venster klikt Tools > Referenties. En controleer dan het Microsoft Outlook 16.0 Objectbibliotheek vak en klik OK in de Referenties - VBAProject dialoog venster.
3. klikken Invoegen > Moduleen plak vervolgens de volgende VBA-code in de Module (code) venster.
VBA-code: stuur een celbereik als onderdeel van de inhoud van de e-mail vanuit 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
Opmerkingen: In de code,
4. druk de F5 toets om de code uit te voeren. In de pop-up Kutools for Excel dialoogvenster, selecteer het celbereik dat u moet verzenden als onderdeel van de hoofdtekst van een e-mail en klik vervolgens op OK. Zie screenshot:
Er wordt dan automatisch een Outlook-e-mail aangemaakt. U kunt zien dat het bereik dat u in het werkblad hebt geselecteerd, in de hoofdtekst van de e-mail is ingevoegd. Zie screenshot:
4.1.2 E-mail een bereik als bijlage vanuit Excel
Als u een celbereik in een werkblad als bijlage vanuit Excel wilt e-mailen. U kunt de volgende VBA-code proberen.
1. druk de anders + F11 sleutels.
2. In de opening Microsoft Visual Basic voor toepassingen venster klikt Invoegen > Module. Plak vervolgens de volgende VBA-code in de Module (code) venster.
VBA-code: e-mail een bereik als bijlage vanuit 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
Opmerkingen:
3. druk de F5 toets om de code uit te voeren. In de pop-up Kutools for Excel dialoogvenster, selecteer het celbereik dat u als bijlage in een e-mail moet verzenden en klik vervolgens op OK. Zie screenshot:
Er wordt dan automatisch een Outlook-e-mail aangemaakt. En het celbereik dat u in het werkblad hebt geselecteerd, wordt opgeslagen als een Excel-werkmap en bijgevoegd in het berichtvenster. Zie screenshot:
4.2 E-mails verzenden wanneer op een knop wordt geklikt in Excel
Als u op een opdrachtknop moet klikken om een macro te activeren om bijvoorbeeld een e-mail vanuit Excel te verzenden, verzendt u de huidige werkmap als bijlage naar anderen door op een opdrachtknop in het werkblad te klikken. U kunt de volgende stappen volgen om het voor elkaar te krijgen.
1. klikken Ontwikkelaar > Invoegen > Commandoknop (ActiveX-besturingselement). Teken vervolgens een opdrachtknop in het werkblad.
Tips: Sla deze stap over als u al een opdrachtknop heeft.
2. druk de anders + F11 toetsen om de te openen Microsoft Visual Basic voor toepassingen venster. Klik in het venster op Invoegen > Modusen plak vervolgens de VBA-code (de code die wordt gebruikt om de huidige werkmap als bijlage vanuit Excel te e-mailen) in het venster Module (code).
Klik hier om de code te krijgen.
Note: Hier is de naam van de macro die u in stap 2 hebt gemaakt: VerzendenWerkboek.
3. druk de anders + Q toetsen om de Microsoft Visual Basic voor toepassingen venster.
4. Nu moet u de macro toewijzen aan de opdrachtknop. Klik met de rechtermuisknop op de opdrachtknop, selecteer Bekijk code in het snelmenu.
5. Vervolgens de Microsoft Visual Basic voor toepassingen venster verschijnt, kunt u zien dat de volgende twee regels worden weergegeven in de Blad (Code) venster.
Private Sub CommandButton1_Click()
End Sub
6. Voer de naam in van de bestaande macro in de subprocedure voor de opdrachtknop.
7. druk de anders + Q toetsen om de Visual Basic-editoren klik Ontwikkelaar > Ontwerpmodus om de ontwerpmodus uit te schakelen.
Nu kunt u op de opdrachtknop klikken om een e-mail te verzenden met de huidige werkmap als bijlage in de e-mail.
4.3 E-mails verzenden vanaf een opgegeven e-mailaccount
Normaal gesproken is bij het starten van een e-mail vanuit Excel met VBA-code het e-mailaccount van de afzender het standaardaccount in Outlook. Stel dat u meerdere e-mailaccounts in uw Outlook heeft geconfigureerd en een bepaald account wilt gebruiken om de e-mails vanuit Excel te verzenden in plaats van het standaardaccount te gebruiken. De volgende VBA-code kan helpen.
De volgende codes zijn in dit geval nodig.
VBA-code 1:
Dim OutlookMail As Outlook.MailItem
VBA-code 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
Hoe gebruik je de bovenstaande VBA-code?
In dit voorbeeld gaan we een bepaald e-mailaccount specificeren om de huidige werkmap als bijlage vanuit Excel te verzenden. Ga als volgt te werk.
1. druk de anders + F11 sleutels. In de Microsoft Visual Basic voor toepassingen venster klikt Tools > Referenties. En controleer dan het Microsoft Outlook 16.0 Objectbibliotheek vak en klik OK in de Referenties - VBAProject dialoog venster.
2. klikken Invoegen > Module. Plak vervolgens de volgende VBA-code in de Module (code) venster.
VBA-code: stuur de huidige werkmap als e-mailbijlage vanuit Excel 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("") 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. druk de F5 toets om de code uit te voeren. Dan verschijnt er een Outlook e-mailbericht, u kunt zien dat de Van veld wordt gevuld met het e-mailaccount dat u in de code hebt opgegeven.
4.4 Stuur een e-mail wanneer een datum is bereikt
Als u een e-mail moet verzenden op basis van een specifieke vervaldatum, bijvoorbeeld, zoals weergegeven in de onderstaande schermafbeelding, is er een projecttabel, wanneer de vervaldatum in het bereik E2:E7 gelijk is aan of minder is dan 7 dagen vanaf vandaag (ervan uitgaande dat de huidige datum 2022/8/4 is), wordt er automatisch een e-mail verzonden naar de corresponderende projectleiders met de mededeling dat het project op het punt staat af te lopen.
1. In het werkblad bevat de projecttabel, klik met de rechtermuisknop op de bladtab en klik op Bekijk code vanuit het rechtsklikmenu.
2. In de opening Microsoft Visual Basic voor toepassingen venster, plak de volgende VBA-code in de Blad (Code) venster.
VBA-code: stuur automatisch een e-mail wanneer een vervaldatum is gehaald
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 de F5 toets om de code uit te voeren. Als de vervaldatum overeenkomt met de voorwaarden, wordt de bijbehorende e-mail gemaakt. In dit geval worden er twee e-mails gemaakt zoals weergegeven in de onderstaande schermafbeelding.
5. Een handig hulpmiddel waarmee u eenvoudig e-mails kunt verzenden vanuit Excel
Als u een VBA-newbie bent, zijn de bovenstaande methoden misschien niet gemakkelijk voor u om te hanteren. Hier raden we aan: Kutools for Excel's Stuur emails Met deze functie kunt u eenvoudig met slechts enkele klikken e-mails vanuit Excel verzenden. Ga als volgt te werk.
Voor het aanvragen Kutools for Excel, Dan kunt u download en installeer het eerst.
5.1 Maak eenvoudig een mailinglijst met de e-mailvelden die u nodig hebt
Voordat u de functie E-mails verzenden toepast, moet u een mailinglijst maken die de e-mailvelden bevat die u nodig hebt. Hier kan de functie Mailinglijst maken helpen.
1. klikken Koetools Plus > Maak een mailinglijst.
2. In de opening Maak een mailinglijst venster, moet u als volgt configureren.
Vervolgens wordt een voorbeeldmailinglijsttabel gemaakt zoals weergegeven in de onderstaande schermafbeelding.
3. Nu moet u de originele gegevens in het voorbeeld vervangen door uw eigen veldgegevens.
U hebt nu een mailinglijsttabel gemaakt. Ga alsjeblieft door met het toepassen van de Stuur emails functie om e-mails te verzenden vanuit Excel op basis van de velden die u hebt gemaakt.
Als u een gratis proefperiode (30 dagen) van dit hulpprogramma wilt, klik om het te downloaden, en ga vervolgens de bewerking toepassen volgens de bovenstaande stappen.
5.2 Verstuur eenvoudig e-mails inclusief de velden die u in de mailinglijst hebt aangemaakt
Na het aanmaken van de mailinglijst (klik om te weten hoe) die de velden bevat die u mogelijk nodig heeft in uw e-mails, kunt u nu e-mails verzenden vanuit Excel met deze velden.
1. Selecteer de volledige mailinglijst, klik op Koetools Plus > Stuur emails.
2. In de Stuur emails dialoogvenster, voer dan de volgende configuratie uit.
3. Vervolgens een Kutools for Excel dialoogvenster verschijnt om u te vertellen hoeveel e-mails er zijn verzonden, klik op de OK knop om dit dialoogvenster te sluiten.
Tips: U kunt naar de Verzonden items map in uw Outlook om de verzonden e-mails te controleren.
5.3 Verstuur eenvoudig e-mails met HTML-body (inclusief hyperlink, afbeelding, enz.)
Met deze functie voor het verzenden van e-mails kunt u een html-e-mail maken met een hyperlink, afbeelding, verschillende lettergroottes en letterkleuren, enz.
Na een mailinglijst maken met de e-mailvelden die u nodig hebt,
Wanneer je het dialoogvenster E-mails verzenden configureren, kunt u de body-inhoud rijk maken door de opties op de werkbalk te gebruiken.
Zie de screenshot hieronder:
5.4 Eenvoudig standaard Outlook-handtekening invoegen bij het verzenden van e-mails
In de bovenstaande methode hebben we een VBA-code gedemonstreerd om u te helpen e-mails te verzenden met de standaardhandtekening van Outlook. Hier met de functie E-mails verzenden, hoeft u alleen maar een optie aan te vinken, waarna de standaardhandtekening van Outlook wordt ingevoegd in e-mails die u vanuit Excel hebt verzonden.
Na een mailinglijst maken met de e-mailvelden die u nodig hebt,
. het dialoogvenster E-mails verzenden configureren, je moet klikken Opties > Gebruik de handtekeninginstellingen van Outlook.
Note: zorg ervoor dat er een vinkje wordt weergegeven voor de optie Handtekeninginstellingen van Outlook gebruiken.
Wanneer ontvangers de e-mail ontvangen, kunnen ze de standaardhandtekening van Outlook aan het einde van de hoofdtekst van de e-mail zien.
5.5 Eenvoudig e-mails verzenden vanaf een opgegeven e-mailaccount
Om een bepaald e-mailaccount te gebruiken om de e-mails vanuit Excel te verzenden in plaats van het standaardaccount te gebruiken, kan de functie E-mails verzenden ook helpen om dit gemakkelijk voor elkaar te krijgen.
Na een mailinglijst maken met de e-mailvelden die u nodig hebt,
. het dialoogvenster E-mails verzenden configureren, je moet klikken Opties > Verzonden vanafen klik vervolgens op het e-mailaccount van waaruit u e-mails wilt verzenden.
Note: Na het selecteren van het e-mailaccount wordt er een vinkje voor weergegeven.
Klik hier om meer te weten over deze functie E-mails verzenden.
Als u een gratis proefperiode (30 dagen) van dit hulpprogramma wilt, klik om het te downloaden, en ga vervolgens de bewerking toepassen volgens de bovenstaande stappen.
Kortom, het verzenden van e-mails vanuit Excel is best handig in ons dagelijkse werk. Dit artikel behandelt meer uitgebreide onderwerpen van e-mails die vanuit Excel worden verzonden. Als er andere onderwerpen of eenvoudigere oplossingen zijn, laat dan een reactie achter om het me te laten weten.
Beste Office-productiviteitstools
Geef uw Excel-vaardigheden een boost met Kutools voor Excel en ervaar efficiëntie als nooit tevoren. Kutools voor Excel biedt meer dan 300 geavanceerde functies om de productiviteit te verhogen en tijd te besparen. Klik hier om de functie te krijgen die u het meest nodig heeft...
Office-tabblad Brengt een interface met tabbladen naar Office en maakt uw werk veel gemakkelijker
- Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in, Publisher, Access, Visio en Project.
- Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster in plaats van in nieuwe vensters.
- Verhoogt uw productiviteit met 50% en vermindert honderden muisklikken voor u elke dag!