Note: The other languages of the website are Google-translated. Back to English

Wie sende ich eine E-Mail, wenn in Excel auf die Schaltfläche geklickt wird?

Angenommen, Sie müssen E-Mails über Outlook senden, indem Sie auf eine Schaltfläche im Excel-Arbeitsblatt klicken. Wie können Sie dies tun? In diesem Artikel wird eine VBA-Methode vorgestellt, um dies im Detail zu erreichen.

E-Mail senden, wenn auf die Schaltfläche mit VBA-Code geklickt wird


E-Mail senden, wenn auf die Schaltfläche mit VBA-Code geklickt wird

Gehen Sie wie folgt vor, um eine E-Mail über Outlook zu senden, wenn in der Excel-Arbeitsmappe auf eine Befehlsschaltfläche geklickt wird.

1. Fügen Sie eine Befehlsschaltfläche in Ihr Arbeitsblatt ein, indem Sie auf klicken Entwickler:in / Unternehmen > Insert > Befehlsschaltfläche (ActiveX Control). Siehe Screenshot:

2. Klicken Sie mit der rechten Maustaste auf die eingefügte Befehlsschaltfläche, und klicken Sie dann auf Code anzeigen Klicken Sie im Kontextmenü wie unten gezeigt auf den Screenshot.

3. In der Öffnung Microsoft Visual Basic für Applikationen Bitte ersetzen Sie den Originalcode im Codefenster durch das folgende VBA-Skript.

VBA-Code: E-Mail senden, wenn in Excel auf die Schaltfläche geklickt wird

Private Sub CommandButton1_Click()
'Updated by Extendoffice 2017/9/14
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Body content" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
                  On Error Resume Next
    With xOutMail
        .To = "Email Address"
        .CC = ""
        .BCC = ""
        .Subject = "Test email send by button clicking"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

Anmerkungen:

1). Bitte ändern Sie den E-Mail-Text nach Bedarf in der xMailBody Zeile im Code.

2). Ersetze das E-Mail-Adresse mit der E-Mail-Adresse des Empfängers in der Zeile .To = "E-Mail-Adresse".

3). Geben Sie die Cc- und Bcc-Empfänger nach Bedarf an .CC = "" und .Bcc = "" .

4). Ändern Sie den Betreff der E-Mail in der Zeile .Subject = "Test E-Mail senden durch Klicken auf die Schaltfläche".

4. Drücken Sie die Taste Andere + Q Tasten gleichzeitig zum Schließen der Microsoft Visual Basic für Applikationen Fenster.

5. Schalten Sie den Entwurfsmodus aus, indem Sie auf klicken Entwickler:in / Unternehmen > Entwurfsmodus. Siehe Screenshot:

Von nun an wird jedes Mal, wenn Sie auf die Befehlsschaltfläche klicken, automatisch eine E-Mail mit den angegebenen Empfängern, dem Betreff und dem Text erstellt. Bitte senden Sie die E-Mail durch Klicken auf Senden .

Hinweis: Der VBA-Code funktioniert nur, wenn Sie Outlook als E-Mail-Programm verwenden.

Senden Sie E-Mails ganz einfach über Outlook basierend auf den Feldern der in Excel erstellten Mailingliste:

Das E-Mails senden Nutzen von Kutools for Excel Hilft beim Senden von E-Mails über Outlook basierend auf den Feldern der in Excel erstellten Mailingliste.
Jetzt herunterladen und ausprobieren! (30-Tag kostenlose Loipe)


In Verbindung stehende Artikel:


Die besten Tools für die Office-Produktivität

Kutools for Excel löst die meisten Ihrer Probleme und erhöht Ihre Produktivität um 80%

  • Wiederverwendung: Schnell einfügen komplexe Formeln, Diagramme und alles, was du vorher benutzt hast; Zellen verschlüsseln mit Passwort; Mailingliste erstellen und E-Mails senden ...
  • Super Formelriegel (leicht mehrere Textzeilen und Formeln bearbeiten); Layout lesen (leichtes Lesen und Bearbeiten einer großen Anzahl von Zellen); In gefilterten Bereich einfügen...
  • Zellen / Zeilen / Spalten zusammenführen ohne Daten zu verlieren; Inhalt geteilter Zellen; Kombinieren Sie doppelte Zeilen / Spalten... doppelte Zellen verhindern; Bereiche vergleichen...
  • Wählen Sie Duplizieren oder Eindeutig Reihen; Wählen Sie Leere Zeilen (alle Zellen sind leer); Super Find und Fuzzy Find in vielen Arbeitsmappen; Zufällige Auswahl ...
  • Exakte Kopie Mehrere Zellen ohne Änderung der Formelreferenz; Referenzen automatisch erstellen zu mehreren Blättern; Aufzählungszeichen einfügen, Kontrollkästchen und mehr ...
  • Text extrahieren, Text hinzufügen, Nach Position entfernen, Leerzeichen entfernen;; Paging-Zwischensummen erstellen und drucken; Inhalt und Kommentare zwischen Zellen konvertieren...
  • Superfilter (Speichern und Anwenden von Filterschemata auf andere Blätter); Erweiterte Sortierung nach Monat / Woche / Tag, Häufigkeit und mehr; Spezialfilter fett, kursiv ...
  • Kombinieren Sie Arbeitsmappen und Arbeitsblätter;; Tabellen basierend auf Schlüsselspalten zusammenführen; Daten in mehrere Blätter aufteilen; Batch-Konvertierung von xls, xlsx und PDF...
  • Mehr als 300 leistungsstarke Funktionen. Unterstützt Office / Excel 2007-2021 und 365. Unterstützt alle Sprachen. Einfache Bereitstellung in Ihrem Unternehmen oder Ihrer Organisation. 30-tägige kostenlose Testversion mit allen Funktionen. 60 Tage Geld-zurück-Garantie.
kte tab 201905

Office Tab Bringt die Oberfläche mit Registerkarten in Office und erleichtert Ihnen die Arbeit erheblich

  • Aktivieren Sie das Bearbeiten und Lesen von Registerkarten in Word, Excel und PowerPoint, Publisher, Access, Visio und Project.
  • Öffnen und erstellen Sie mehrere Dokumente in neuen Registerkarten desselben Fensters und nicht in neuen Fenstern.
  • Steigert Ihre Produktivität um 50 % und reduziert jeden Tag Hunderte von Mausklicks für Sie!
officetab unten
Kommentare (73)
Bewertet 3.5 aus 5 · 1 Bewertungen
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, ich möchte Daten aus einer Pivot-Tabelle senden. Können Sie mir bitte helfen?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ist es möglich, das Skript so zu schreiben, dass es sich beim Klicken auf die Schaltfläche wie oben an die E-Mail anhängt, aber auch die Schaltfläche entfernt? sodass die Kopie der Datei, die per E-Mail gesendet wird, die Schaltfläche nicht mehr enthält?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Fügen Sie direkt unter „.Body = xMailBody“ Folgendes hinzu
.Anlagen.AktiveArbeitsmappe hinzufügen.VollständigerName
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Danie.

Ich habe den Teil wie gesagt hinzugefügt, aber die E-Mail mit der angehängten Arbeitsmappe hat noch die Schaltflächen.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, ist es möglich, es so einzurichten, dass ich nicht auf Senden drücken muss - es sendet automatisch die E-Mail????
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,
Bitte ersetzen Sie die Zeile .Display durch .Send in obigen VBA-Code.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Es generiert nur eine E-Mail und überschreibt den Inhalt, anstatt mehrere E-Mail-Entwürfe zu öffnen.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo zusammen erstmal ein großes Dankeschön, dieser Beitrag ist sehr hilfreich und funktioniert für den Anhang. Dies funktioniert für mich, aber es werden keine Updates in dem Blatt gespeichert, Sie müssen auf die Schaltfläche Speichern klicken. Ich möchte, dass der Anhang das enthält, was sich gerade in der Excel-Tabelle befindet.

Ich kann dies erreichen, indem ich die in Excel integrierte E-Mail-Funktion verwende, aber ich wollte eine Schaltfläche, da ich die spezifische E-Mail-Adresse fest codieren muss.

Also zusammenfassend würde ich gerne wissen:

Ich würde gerne wissen, ob es eine Möglichkeit gibt: Nachdem ein Benutzer die Excel-Arbeitsmappe geöffnet und Änderungen vorgenommen hat, ob die Schaltfläche den Anhang mit den Aktualisierungen behält?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Guten Tag,
Der Code wurde optimiert. Bitte versuchen Sie es und danke für Ihren Kommentar.

Private Sub-Befehlsschaltfläche1_Click ()
'Aktualisiert von Extendoffice 2017/9/14
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
ActiveWorkbook.Speichern
xMailBody = "Textinhalt" & vbNewLine & vbNewLine & _
"Das ist Zeile 1" & vbNewLine & _
"Das ist Linie 2"
On Error Resume Next
Mit xOutMail
.To = "E-Mail-Adresse"
.CC = ""
.BCC = ""
.Subject = "Test E-Mail senden durch Klicken auf die Schaltfläche"
.Body = xMailBody
.Anlagen.AktiveArbeitsmappe hinzufügen.VollständigerName
.Display 'oder verwenden Sie .Send
Ende mit
Bei Fehler GoTo 0
Setze xOutMail = nichts
Setze xOutApp = nichts
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Wie kann ich die aktive Arbeitsmappe an die E-Mail anhängen, wenn ich auf die Schaltfläche drücke?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Guten Tag,
Fügen Sie direkt unter „.Body = xMailBody“ Folgendes hinzu
.Anlagen.AktiveArbeitsmappe hinzufügen.VollständigerName
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Teria como em vez de enviar a planilha, enviar as informações em imagem?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Kann ich mit diesem VBA-Code auf Zelleninformationen im Text der E-Mail verweisen? Wie würde ich beispielsweise Zellwerte auf den folgenden Code verweisen?

xMailBody = "Textinhalt" & vbNewLine & vbNewLine & _
"Das ist Zeile 1" & vbNewLine & _
"Das ist Linie 2"

Verwenden Sie auch den Code (.TO = "E-Mail-Adresse"). Wie kann ich die "E-Mail-Adresse" in eine E-Mail-Adresse aus einer Zelle in der Spalte daneben ziehen lassen.


Vielen Dank,
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ist es möglich, innerhalb desselben Arbeitsblatts eine zweite E-Mail-Schaltfläche hinzuzufügen? Wenn ich es versuche, wird eine Verbindung zum Code der ursprünglichen E-Mail-Schaltfläche hergestellt. Danke.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,
Sie müssen jeder Taste unterschiedliche Codes zuweisen.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Kann ich mit diesem VBA-Code auf Zelleninformationen im Text der E-Mail verweisen? Wie würde ich beispielsweise Zellwerte auf den folgenden Code verweisen?

xMailBody = "Textinhalt" & vbNewLine & vbNewLine & _
"Das ist Zeile 1" & vbNewLine & _
"Das ist Linie 2"

Vielen Dank,
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Glenn,
Bitte wenden Sie den folgenden Code an. Danke für deinen Kommentar.
xMailBody = [B5]
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ist es möglich, anstatt den Anhang in der E-Mail zu senden, einen Hyperlink zu der Datei (auf SharePoint) zu senden?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Laurie,
Kann dir da nicht helfen. Danke für deinen Kommentar.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Kann ich mit string auf den Wert in einer Zelle im Betreff verweisen? Eine Variation des Folgenden?

.Subject = "Neues Ereignis:" & Target.Address = "$B$38"
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Abi,
Bitte ändern Sie den Code in .Subject = "New Event:" & [B38].
Danke für deinen Kommentar.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo dort,
Kann mir jemand bei folgender Anforderung helfen?
Ich habe eine Excel-Tabelle mit zwei Dropdown-Listen.

1 Dropdown-Liste – Liste der Abteilungen

2 Dropdown-Liste – Kategorie

Was ich möchte, ist, wenn ich eine Abteilung und Kategorie aus den Listen auswähle (zum Beispiel, wenn ich "Verkäufe" in der Abteilung und "Monatsbericht" in der Kategorie auswähle)

Ich muss die PDF-Version dieses Arbeitsblatts per E-Mail an das Vertriebsteam mit dem E-Mail-Betreff „Monatsbericht“ senden.

Wenn ich "Produktion" aus der Abteilungsliste auswähle, sollte die E-Mail an eine Gruppe von Personen in der Produktion gehen.

Ich weiß es zu schätzen, wenn Sie mir dabei helfen können

Rasik
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Rasike,
Sorry kann dir da nicht helfen. Willkommen, um Fragen in unserem Forum zu stellen: https://www.extendoffice.com/forum.html um mehr Excel-Unterstützung von unserem Excel-Profi oder anderen Excel-Fans zu erhalten.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,

Wie kann ich die E-Mail dazu bringen, meine Signatur automatisch aus Outlook hinzuzufügen?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo John,
Der folgende VBA-Code kann Ihnen helfen, das Problem zu lösen. Vielen Dank für Ihren Kommentar.

Private Sub-Befehlsschaltfläche1_Click ()
'Aktualisiert von Extendoffice 2019/6/26
Dim xOutApp als Objekt
Dim xOutMail als Objekt
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
Mit xOutMail
.Display 'oder verwenden Sie .Send
.To = "E-Mail-Adresse"
.CC = ""
.BCC = ""
.Subject = "Test E-Mail senden durch Klicken auf die Schaltfläche"
.HTMLBody = "Dies ist eine Test-E-Mail, die in Excel gesendet wird" & "
" & .HTMLBody
'.Schicken
Ende mit
Bei Fehler GoTo 0
Setze xOutMail = nichts
Setze xOutApp = nichts
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Müssen Sie ein Excel-Benutzer sein, wenn Sie auf die Schaltfläche klicken, um eine E-Mail zu senden? oder muss nur die Person, die die E-Mail erhält, ein Outlook-Benutzer sein?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Guten Tag,
Da die E-Mail nach dem Klicken auf die Schaltfläche in Excel über Outlook gesendet werden muss, muss Outlook auf Ihrem Computer installiert sein, damit es funktioniert.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich möchte das Excel-Arbeitsblatt in der E-Mail senden, aber es wird nicht gesendet. Wie schreiben Sie Code, um das Dokument als E-Mail zu senden?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Markus,
Der folgende VBA-Code kann Ihnen bei der Lösung des Problems helfen.

Sub SendWorkSheet()
'Update 20190626
Dim xFile als Zeichenfolge
Dim xFormat As Long
Dim Wb als Arbeitsmappe
Dim Wb2 als Arbeitsbuch
Dateipfad als Zeichenfolge dimmen
Dim Dateiname als String
Dim OutlookApp als Objekt
Dim OutlookMail als Objekt
On Error Resume Next
Application.ScreenUpdating = False
Legen Sie Wb = Application.ActiveWorkbook fest
ActiveSheet.Copy
Legen Sie Wb2 = Application.ActiveWorkbook fest
Wählen Sie Case Wb.FileFormat
Fall xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Fall xlOpenXMLWorkbookMacroEnabled:
Wenn Wb2.HasVBProject dann
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
sonst
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Fall Excel8:
xDatei = ".xls"
xFormat = Excel8
Fall xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
Dateipfad = Environ$("temp") & "\"
FileName = Wb.Name & Format (jetzt "dd-mmm-yy h-mm-ss")
Setze OutlookApp = CreateObject("Outlook.Application")
Setzen Sie OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
Mit OutlookMail
.To = "skyyang @extendoffice.com "
.CC = ""
.BCC = ""
.Subject = "kte features"
.Body = "Bitte überprüfen und lesen Sie dieses Dokument."
.Anlagen.Wb2.FullName hinzufügen
.Anzeige
'.Schicken
Ende mit
Wb2.Schließen
Beenden Sie FilePath & FileName & xFile
Setzen Sie OutlookMail = nichts
Setzen Sie OutlookApp = nichts
Application.ScreenUpdating = True
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Wie kann ich das aktive Arbeitsblatt an die E-Mail anhängen, wenn ich auf die Schaltfläche drücke?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Grant,
Bitte klicken Sie mit der rechten Maustaste auf die Schaltfläche und wählen Sie Code anzeigen. Kopieren Sie dann den folgenden Code zwischen den Zeilen Private Sub und End Sub. Hoffe, ich kann helfen. Vielen Dank für Ihren Kommentar.

Dim xFile als Zeichenfolge
Dim xFormat As Long
Dim Wb als Arbeitsmappe
Dim Wb2 als Arbeitsbuch
Dateipfad als Zeichenfolge dimmen
Dim Dateiname als String
Dim OutlookApp als Objekt
Dim OutlookMail als Objekt
On Error Resume Next
Application.ScreenUpdating = False
Legen Sie Wb = Application.ActiveWorkbook fest
ActiveSheet.Copy
Legen Sie Wb2 = Application.ActiveWorkbook fest
Wählen Sie Case Wb.FileFormat
Fall xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Fall xlOpenXMLWorkbookMacroEnabled:
Wenn Wb2.HasVBProject dann
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
sonst
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Fall Excel8:
xDatei = ".xls"
xFormat = Excel8
Fall xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
Dateipfad = Environ$("temp") & "\"
FileName = Wb.Name & Format (jetzt "dd-mmm-yy h-mm-ss")
Setze OutlookApp = CreateObject("Outlook.Application")
Setzen Sie OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
Mit OutlookMail
.To = "skyyang @extendoffice.com "
.CC = ""
.BCC = ""
.Subject = "kte features"
.Body = "Bitte überprüfen und lesen Sie dieses Dokument."
.Anlagen.Wb2.FullName hinzufügen
.Anzeige
'.Schicken
Ende mit
Wb2.Schließen
Beenden Sie FilePath & FileName & xFile
Setzen Sie OutlookMail = nichts
Setzen Sie OutlookApp = nichts
Application.ScreenUpdating = True
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,

Gibt es eine Möglichkeit, den Dateinamen auf das aktuelle Datum zu ändern, wenn er an die E-Mail angehängt wird?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,

Ich habe an einem Blatt gearbeitet, aber ich kann es nicht beenden. Ich hoffe ihr könnt mir helfen :)

Die Datei selbst muss eine xltm (Vorlage) sein und das Blatt selbst muss an die E-Mail angehängt werden.

Und eine Autosignatur, dann würde ich mich sehr freuen.

Vielen Dank im Voraus /Dr. Nang
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, ich betreibe eine Tabelle mit 80 einzelnen Barkonten und habe VBA-Code auf dieser Seite mit großem Erfolg verwendet. Im Textkörper der E-Mail möchte ich jedoch beim Senden den spezifischen Zellbereich eines Kontos kopieren und einfügen, damit der Client einen Verlauf haben kann. Können Sie mit dem VBA-Code dafür helfen?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hi! Vielen Dank dafür. Es war eine fantastische Hilfe.

Ist es möglich, anstelle der vollständigen Arbeitsmappe ein aktives Arbeitsblatt per Knopfdruck zu senden?

Vielen Dank!
Es sind noch keine Kommentare vorhanden
Mehr laden
Hinterlassen Sie Ihre Kommentare
Als Gast posten
×
Bewerte diese Nachricht:
0   Figuren
Vorgeschlagene Standorte

Folgen Sie uns

Copyright © 2009 - www.extendoffice.com. | Alle Rechte vorbehalten. Unterstützt von ExtendOffice. | Sitemap
Microsoft und das Office-Logo sind Marken oder eingetragene Marken der Microsoft Corporation in den USA und / oder anderen Ländern.
Geschützt durch Sectigo SSL