VBA – Emails aus Excel über Gmail senden

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on Dezember 14, 2022

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.

vba verweise anzeigen

Suchen Sie nach der Microsoft-CDO-Referenz, und klicken Sie auf OK.

vba microsoft cdo verweis

 

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.

arbeitsmappe via gmail versenden

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.

arbeitsmappe via gmail versenden erfolgreich

vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples