Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten aus UserForm als Mail versenden

Forumthread: Daten aus UserForm als Mail versenden

Daten aus UserForm als Mail versenden
23.12.2017 14:41:11
Kevin
Hallo!
Ich habe folgenden Plan:
Man füllt eine UserForm aus und drückt im Anschluss auf "OK".
Nun soll automatisch eine E-Mail mit den Inhalten der ausgefüllten Feldern
an mich gesendet werden. Es soll ein Support-Ticket werden.
Folgende Dinge sollen auftauchen:
TextBox1 = Name, Vorname (Pflichtangabe)
TextBox2 = Datum der Anfrage (automatisch)
TextBox3 = Uhrzeit der Anfrage (automatisch)
ComboBox1 =Bitte wählen Sie Ihr Anliegen aus:
TextBox4 = Schildern Sie Ihr Anliegen:"
ComboBox2 = Ich wünsche eine Antwort per:
Nun habe ich es schon hinbekommen eine UserForm zu öffnen, bei Klick auf "OK" erstellt die Datei dann eine PDF mit den Inhalten und sendet diese per Mail. Nun möchte ich den letzten Prozess (PDF) aber vermeiden, da dafür eine weitere Datei geöffnet werden müsste, da ich die Tabelle unsichtbar haben möchte.
Also nochmal kurz (& hoffentlich verständlich) zusammengefasst:
Klick auf Button in einer Datei - UF öffnet sich
UF ausfüllen und "OK" klicken - Daten aus Bausteinen werden in einer Mail versendet und die UF schließt sich
Ist das irgendwie "relativ einfach" möglich? Vorstellen kann ich es mir, habe nur irgendwie ein Brett vor'm Kopf. :D
Lieben Gruß
Kevin
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus UserForm als Mail versenden
23.12.2017 15:02:24
Beverly
Hi Kevin,
dann kannst du doch denselben Code verwenden, nur dass du den Teil mit dem Erstellen der PDF-Datei weglässt.


AW: Daten aus UserForm als Mail versenden
23.12.2017 15:12:28
Kevin
Hm, habe ich schon probiert - funktioniert leider nicht.
Was soll ich denn nach OutMail.Body = "Sehr ge..........." einfügen, sodass ich nach dem standard-Haupttext (soll immer erscheinen) dann die Daten aus den Boxen dort habe?
Optional einfach die Frage: Wenn ich doch ein PDF erstellen möchte und die Vorlage auf ein bestimmtes Arbeitsblatt weit unten erstelle, wie bekomme ich dann nur diese Seite in dem Tabellenblatt ausgedruckt?
Mit "ActiveSheet.PrintOut" bekomme ich dann ja in der Tabelle alles ausgedruckt...
PDF wäre Top! Allerdings nur, wenn ich weder ein Tabellenblatt, noch ein ganzes Arbeitsblatt erstellen muss.. also würde ich es irgendwo weeeeeit unten verstecken, da wo niemand hinschaut :D
Ich denke vielleicht zu kompliziert....
Anzeige
Wie sieht dein nicht funktionierender Code aus?
23.12.2017 15:17:49
Beverly


AW: Wie sieht dein nicht funktionierender Code aus?
23.12.2017 15:25:22
Kevin

Private Sub CommandButton1_Click()
Dim sBlatt As String
Dim sPdfDateiF5 As String
Dim OutApp As Object
Dim OutMail As Object
Dim Antwort
If MsgBox("Support anfordern?", 4, "Frage") = vbYes Then
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
OutMail.to = "beispiel@beispiel.de"
OutMail.CC = ""
OutMail.BCC = ""
OutMail.Subject = "Supportanfrage"
OutMail.Body = "Hallo Kevin, es hat jemand eine neue Supportanfrage gesendet."
OutMail.Body = +TextBox1.Value
OutMail.Body = +TextBox2. Value
'und so weiter..
OutMail.Send
End If
Set OutMail = Nothing
Set OutApp = Nothing
Application.DisplayAlerts = False
Application.Quit
End Sub

Anzeige
OutMail.Body zusammensetzen...
23.12.2017 16:04:46
Beverly
Hi Kevin,
...nach diesem Prinzip:
OutMail.Body = "Hallo Kevin, es hat jemand eine neue Supportanfrage gesendet." & vbLf & TextBox1.Value & " " & TextBox2.Value
vbLF bedeutet einen Zeilenumbruch.


Anzeige
AW: OutMail.Body zusammensetzen...
23.12.2017 16:17:59
Kevin
Bis nach dem Schritt "Support anfordern?" klappt es, dann hängt er bei OutMail.Send.. -.-
AW: OutMail.Body zusammensetzen...
23.12.2017 16:19:50
Kevin
Dim sBlatt As String
Dim OutApp As Object
Dim OutMail As Object
Dim Antwort
If MsgBox("Support anfordern?", 4, "Frage") = vbYes Then
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
OutMail.to = "kreschke8@gmail.com"
OutMail.CC = ""
OutMail.BCC = ""
OutMail.Subject = "Supportanfrage"
OutMail.Body = "Hallo Kevin, es hat jemand eine neue Supportanfrage gesendet." & vbLf & TextBox2 & vbLf & TextBox3
OutMail.Send
End If
Set OutMail = Nothing
Set OutApp = Nothing
Application.DisplayAlerts = False
Application.Quit
Anzeige
Das hat aber nichts...
23.12.2017 16:27:44
Beverly
...mit dem Zusammensetzen des Mailtextes zu tun. Du hast deinen ursprünglichen Code genommen und ihn nur abgewandelt? Wenn der Fehler an dieser Stelle im Code auftritt, dann kann auch der Ursprungscode nicht funktioniert haben...
Ich benutze folgenden Code:
Sub EMailVersendenOutlook()
Dim obNachricht As Object
Dim obMail As Object
Set obMail = CreateObject("Outlook.Application")
Set obNachricht = obMail.CreateItem(0)
With obNachricht
.To = "beispiel@beispiel.de"
.Subject = "Supportanfrage"
.Body = "Hallo Kevin, es hat jemand eine neue Supportanfrage gesendet." & vbLf & _
TextBox1.Value & " " & TextBox2.Value
.send
End With
Set obNachricht = Nothing
Set obMail = Nothing
End Sub


Anzeige
AW: Das hat aber nichts...
23.12.2017 16:35:05
Kevin
Hm, auch da zeigt er den Fehler (allerdings nur dann, wenn Outlook nicht geöffnet ist)
;
Anzeige
Anzeige

Infobox / Tutorial

Daten aus UserForm als E-Mail versenden


Schritt-für-Schritt-Anleitung

Um Daten aus einer UserForm in Excel per E-Mail zu versenden, kannst Du den folgenden VBA-Code verwenden. Dieser Code nimmt die Eingaben aus verschiedenen TextBoxen und sendet diese über Outlook.

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).
  2. Füge eine UserForm hinzu und platziere die gewünschten Steuerelemente (TextBoxen und ComboBoxen).
  3. Doppelklicke auf den Button, der die E-Mail versenden soll, und füge diesen Code ein:
Private Sub CommandButton1_Click()
    Dim OutApp As Object
    Dim OutMail As Object

    If MsgBox("Support anfordern?", vbYesNo, "Frage") = vbYes Then
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)

        With OutMail
            .To = "beispiel@beispiel.de"
            .Subject = "Supportanfrage"
            .Body = "Hallo Kevin, es hat jemand eine neue Supportanfrage gesendet." & vbLf & _
                     "Name: " & TextBox1.Value & vbLf & _
                     "Datum: " & TextBox2.Value & vbLf & _
                     "Uhrzeit: " & TextBox3.Value & vbLf & _
                     "Anliegen: " & ComboBox1.Value & vbLf & _
                     "Details: " & TextBox4.Value & vbLf & _
                     "Antwort per: " & ComboBox2.Value
            .Send
        End With

        Set OutMail = Nothing
        Set OutApp = Nothing
    End If
End Sub
  1. Stelle sicher, dass Outlook geöffnet ist, wenn Du die E-Mail versenden möchtest.

Häufige Fehler und Lösungen

  • Outlook nicht geöffnet: Der Code funktioniert nicht, wenn Outlook nicht gestartet ist. Stelle sicher, dass Outlook läuft, bevor Du die E-Mail sendest.
  • Fehler beim Senden: Überprüfe, ob die E-Mail-Adresse korrekt ist und ob Du die Berechtigung hast, E-Mails über das Outlook-Konto zu versenden.
  • OutMail.Body nicht richtig zusammengesetzt: Achte darauf, dass Du den Body der E-Mail korrekt mit & und vbLf für Zeilenumbrüche zusammensetzt.

Alternative Methoden

Wenn Du keine E-Mail über Outlook versenden möchtest, kannst Du auch Tools wie Gmail oder andere E-Mail-Dienste verwenden, die über eine API zugänglich sind. Hierbei wäre jedoch eine andere Programmierumgebung oder ein Add-In notwendig.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um die Funktionsweise zu verdeutlichen:

  1. TextBox1: Name
  2. TextBox2: Datum der Anfrage
  3. TextBox3: Uhrzeit der Anfrage
  4. ComboBox1: Anliegen auswählen
  5. TextBox4: Anliegen schildern
  6. ComboBox2: Antwort per E-Mail oder Telefon

Wenn Du die UserForm ausfüllst und auf "OK" klickst, wird eine E-Mail mit den eingegebenen Daten versendet.


Tipps für Profis

  • Du kannst die UserForm so gestalten, dass sie Benutzereingaben validiert, bevor die E-Mail gesendet wird. Das verbessert die Benutzererfahrung.
  • Füge eine Funktion hinzu, die die E-Mail an mehrere Empfänger sendet, indem Du die .CC oder .BCC Eigenschaften von OutMail verwendest.
  • Nutze Variablen, um den Text der E-Mail dynamisch zu gestalten, je nach den Eingaben des Benutzers.

FAQ: Häufige Fragen

1. Kann ich auch Anhänge hinzufügen?
Ja, Du kannst Anhänge hinzufügen, indem Du die .Attachments.Add Methode von OutMail verwendest.

2. Wie kann ich den E-Mail-Text formatieren?
Du kannst HTML verwenden, um den Text zu formatieren, indem Du OutMail.HTMLBody anstelle von OutMail.Body verwendest.

3. Warum wird keine E-Mail gesendet?
Überprüfe, ob Outlook geöffnet ist und ob Du die richtigen Berechtigungen hast. Achte auch darauf, dass die E-Mail-Adresse korrekt ist.

4. Was ist, wenn ich die Excel-Datei unsichtbar machen möchte?
Du kannst die Sichtbarkeit der Excel-Anwendung mit Application.Visible = False einstellen, bevor Du die UserForm öffnest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige