VBA – Emails aus Excel über Gmail senden
In this Article
In diesem Tutorial zeigen wir Ihnen, wie Sie mit VBA E-Mails aus Excel über Gmail versenden können.
Microsoft CDO-Verweis hinzufügen
Damit Excel E-Mails über Gmail senden kann, müssen Sie zunächst einen Verweis auf die CDO-Bibliothek zu Ihrem Excel-Projekt hinzufügen.
Klicken Sie im VBA-Editor auf Extras, Verweise.
Suchen Sie nach der Microsoft-CDO-Referenz, und klicken Sie auf OK.
Eine E-Mail über GMail versenden
Um eine E-Mail von Excel über Gmail zu versenden, müssen Sie zunächst ein CDO-Objekt deklarieren (Dim gMail as CDO.Message).
Zweitens müssen Sie die SSL-Authentifizierung für Ihre Nachricht in Ihrem Code konfigurieren. Das bedeutet, dass Sie den SMTP-Server und die Port-Details festlegen müssen, damit Ihre E-Mail korrekt übermittelt werden kann und dass Sie Ihren Benutzernamen und Ihr Kennwort einrichten müssen.
Im nachstehenden Codeausschnitt ist dies am Anfang Ihrer Excel-Funktion erforderlich. Sie benötigen einen E-Mail-Empfänger (strAn) und einen Betreff (strBetreff, aber die CC und der Rumpf der E-Mail können optionale Variablen sein.
Function EmailErstellen(strAn As String, strBetreff As String, Optional strCC As String, Optional strRumpf As String)
'Ein CDO-Objekt erstellen
Dim gMail As CDO.Message
Set gMail = New CDO.Message
'SSL-Authentifizierung einschalten
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
'SMTP-Authentifizierung Enabled=true (1)
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
'Details von SMTP-Server und Port festlegen
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'Ihren Benutzernamen und Ihr Passwort für Ihr eigenes gmail-Konto hier festlegen
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "johnsmith@gmail.com"
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*********"
'Aktualisieren der Konfigurationsfelder
gMail.Configuration.Fields.Update
Danach können Sie Ihre E-Mail erstellen und die Funktion vervollständigen.
'die E-Mail-Eigenschaften und die zu sendende Datei festlegen
With gMail
.Subject = "Betreff hier eingeben"
.From = "stitchmel@gmail.com"
.To = strAn
.TextBody = strRumpf
End With
'zum Versenden der E-Mail
gMail.Send
End Function
Anschließend können Sie Ihre Funktion mit folgendem Code aufrufen:
Sub EmailSenden
'Den Textkörper der E-Mail erstellen
Dim strText as String
strText = "Guten Morgen. Hoffentlich geht es Ihnen gut - dies ist eine Test-Email"
'Die Argumente der Funktion ausfüllen. CC leer lassen, also ein Komma als Platzhalter setzen
CreateEmail("jim.smith@gmail.com", "Test-E-Mail", , strText)
End sub
Eine Arbeitsmappe über GMail versenden
Um eine Arbeitsmappe als Anhang über GMail zu versenden, können Sie eine Funktion ähnlich der obigen mit einigen Ergänzungen erstellen.
Sie müssen Code hinzufügen, um die Arbeitsmappe auszuwählen und dann müssen Sie die ausgewählte Datei an die E-Mail anhängen.
Wir werden den Befehl Microsoft Office FileDialog verwenden, um die zu versendende Datei auszuwählen, und dann die AddAttachment-Eigenschaft der E-Mail verwenden, um die Datei als Anlage hinzuzufügen.
Function ArbeitsmappeVersenden(strAn As String, strBetreff As String, Optional strCC As String, Optional strRumpf As String) As Boolean
On Error GoTo eh:
'Ein CDO-Objekt erstellen
Dim gMail As CDO.Message
Set gMail = New CDO.Message
'SSL-Authentifizierung einschalten
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
'SMTP-Authentifizierung Enabled=true (1)
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
'Details von SMTP-Server und Port festlegen
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'Ihren Benutzernamen und Ihr Passwort für Ihr eigenes gmail-Konto hier festlegen
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "johnsmith@gmail.com"
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*********"
'Aktualisieren der Konfigurationsfelder
gMail.Configuration.Fields.Update
'Die zu sendende Datei mit dem Microsoft-Dateidialogfeld auswählen
Dim strDateiZuVersenden As String
Dim dlgDatei As FileDialog
Dim strElement As Variant
Dim nDlgErgebnis As Long
Set dlgDatei = Application.FileDialog(msoFileDialogFilePicker)
'Nur für Excel- und CSV-Dateien filtern
dlgDatei.Filters.Add "Excel-Dateien", "*.csv; *.xls; *.xlsx; *.xlsm"
nDlgErgebnis = dlgDatei.Show
If nDlgErgebnis = -1 Then
If dlgDatei.SelectedItems.Count > 0 Then
For Each strElement In dlgDatei.SelectedItems
strDateiZuVersenden = strElement
Next strElement
End If
End If
'die E-Mail-Eigenschaften und die zu sendende Datei festlegen
With gMail
.Subject = "Betreff hier eingeben"
.From = "stitchmel@gmail.com"
.To = strAn
.TextBody = strRumpf
'Fügen Sie die ausgewählte Datei als Anhang hinzu
.AddAttachment strDateiZuVersenden
End With
'um die E-Mail zu senden
gMail.Send
SendWorkbook= True
Exit Function
eh:
ArbeitsmappeVersenden = False
End Function
Wenn der Konfigurationsport 25 nicht funktioniert, erhalten Sie möglicherweise eine Fehlermeldung : „Der Transport konnte keine Verbindung zum Server herstellen“ Ändern Sie den Port auf 25 und versuchen Sie es erneut.
Die obige Funktion kann mit dem folgenden Verfahren aufgerufen werden.
Sub MailVersenden()
Dim strAn As String
Dim strBetreff As String
Dim strRumpf As String
'Variablen auffüllen
strAn = "jon.smith@gmail.com"
strBetreff = "Bitte finden Sie die Finanzdatei im Anhang"
strRumpf = "Hier kommt ein Text für den Textkörper der E-Mail hin"
'Funktion zum Versenden der E-Mail aufrufen
If ArbeitsmappeVersenden(strAn, strBetreff, , strRumpf) = true Then
Msgbox "E-Mail erfolgreich erstellt"
Else
Msgbox "Erstellen der E-Mail fehlgeschlagen!"
End If
End Sub
Sie werden aufgefordert, die Datei, die Sie senden möchten, auszuwählen. Dieser Code ist auf Excel-Dateien beschränkt, da der Filter „*.csv; *.xls; *.xlsx; *.xlsm“ lautet. Sie können diesen Code jedoch auch in Word verwenden und Ihren Filter entsprechend anpassen.
Wählen Sie die Datei aus, und klicken Sie auf Öffnen. Es kann eine Weile dauern, bis der Code ausgeführt wird. Wenn Ihre E-Mail erfolgreich gesendet wurde, erhalten Sie die folgende Meldung.