Diese Anwendung zeigt, wie man mit Excel Emails über Outlook
automatisch versenden kann.
Änderung: Die neue Version ist unter:
https://codedocu.de/Office-365/Excel/Vorlagen/Email
https://codedocu.de/Office-365/Excel/Vorlagen/Email/Excel-Vorlage_colon_-Versenden-von-Emails-in-einer-Liste-mit-Sende--Feld,-Platzhaltern-und-Anh%C3%A4ngen?3025
Beispiel:
Die Excel Datei hat eine Liste mit Emails, wo man ein X setzen
kann zu den Email-Adressen, an welche eine automatisierte Email aus Excel
heraus versendet werden soll.
Die versendeten Emails werden in diesem Beispiel geöffnet
und als Textformat dargestellt.
Man kann im vba Code auch einstellen, dass die Emails automatisch
ohne Ansicht gleich versendet werden.
Unter dem Excel-Blatt "ini_Vorlage" befindet sich
eine Textfeld, welche die Email Vorlage aufweist.
Das Feld [@Name] wird zur Laufzeit ersetzt durch die
Email-Anschrift.
Mit Alt-F11 kommt man auf die Vba Codeseite (Makro-Seite).
Der vba Code befindet sich in der Seite: Module/Modul1
Vba Code erläuterung:
Zunächst wird die Vorlage aus dem Textfeld geholt.
'< HMTL holen >
Dim sTemplate As String
sTemplate = Sheets("ini_Vorlage").Shapes(1).TextFrame2.TextRange.Text
'</ HMTL holen >
|
Dann wird Outlook als Anwendung gestartet und hieraus ein
Email-Objekt erstellt
'----< Send with Outlook >----
Dim app_Outlook As Outlook.Application
Set app_Outlook = New Outlook.Application
'--< Email einstellen >--
Dim objEmail As Outlook.MailItem
|
Das Email-Objekt wird dann gefüllt mit dem Titel, der Email-Adresse
und dem Body-Text.
Mit dem Parameter .Display wird normalerweise eine Ansicht
unterdrückt.
Mit .Send wird die Email automatisch gesendet.
'< Fill Placeholders >
Dim sHTML As String
sHTML = Replace(sTemplate, "[@Name]", sEmail_Address)
'</ Fill Placeholders >
'--< Send Email >--
Set objEmail =
app_Outlook.CreateItem(olMailItem)
objEmail.To = sEmail_Address
objEmail.Subject = sTitle
'objEmail.HTMLBody = sHTML '*use .HTMLBody for HTML
objEmail.Body = sHTML '*and .body for pure Text
objEmail.Display False
'objEmail.Send
'--</ Send Email >--
|
Kompletter Makro-Code für eigene Anwendungen
Vba Makro Code
Option Explicit On
Sub BtnEmail_Senden()
Send_Email()
End Sub
Private Sub Send_Email()
'-------------<
Send_Email() >-------------
Dim sTitle As String
sTitle = "Test-HTML
Email from Excel"
'< HMTL
holen >
Dim sTemplate As String
sTemplate = Sheets("ini_Vorlage").Shapes(1).TextFrame2.TextRange.Text
'</
HMTL holen >
'----<
Send with Outlook >----
Dim app_Outlook As Outlook.Application
Set app_Outlook = New Outlook.Application
'--<
Email einstellen >--
Dim objEmail As Outlook.MailItem
Dim sEmail_Address As String
Dim iRow As Integer
For iRow = 4 To 100
If Cells(iRow, 3) = "x" Then
'< get Email Address >
'Column 2, B
sEmail_Address = Cells(iRow, 2)
'</ get Email Address >
'< Fill Placeholders >
Dim sHTML As String
sHTML = Replace(sTemplate, "[@Name]", sEmail_Address)
'</ Fill Placeholders >
'--< Send Email >--
Set objEmail =
app_Outlook.CreateItem(olMailItem)
objEmail.To = sEmail_Address
objEmail.Subject = sTitle
'objEmail.HTMLBody = sHTML '*use .HTMLBody for HTML
objEmail.Body = sHTML '*and .body for pure Text
objEmail.Display False
'objEmail.Send
'--</ Send Email >--
End If
Next
'<
Abschluss >
Set objEmail = Nothing
Set app_Outlook = Nothing
'</ Abschluss >
MsgBox "Emails
erstellt", vbInformation, "Fertig"
'----</ Send with Outlook >----
'-------------</
Send_Email() >-------------
End Sub
|
Zusatz-Hinweis.
Damit man mit Outlook arbeiten kann, muss man unter der vba
Codeseite im Menü->Extras->Verweise ein Outlook-Verweis aktivieren.
Dann wählt man in der Liste Microsoft Outlook 16.0 Object
Library aus. Hierzu muss man eventuell in der Liste weiter unten suchen.
Die Version 16 hängt von der verwendeten Microsoft Office ab.
Microsoft Outlook 16.0 ist derzeit für Office 365 Desktop
Version in 2018.