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

Forumthread: Email via VBA generieren und formatieren

Email via VBA generieren und formatieren
22.03.2018 13:16:22
michael
Hallo Leute, ich habe in Excel ein Marko geschrieben bzw. zusammengesucht welches es mir erlaubt auf eine geöffnete Email via Knopfdruck zu antworten. Leider gibt es noch offene Fragen welche ich per Google bzw. Suchfunktionen nicht lösen kann. 1. Was muss ich in meinen Code einfügen, dass die genierte Email in Arial pt. 10 geschrieben wird? 2. Besteht die Möglichkeit den Anhang der Ursprungsemail zu übernehmen? 3. Wie kann ich die eine meiner Signaturen einfügen? Ich freue mich sehr auf eure Antworten und bin für jeden Hinweis sehr dankbar! Viele Grüße Michi
Sub TestMail()
Dim olApp As Object ', AktMail As Object,
Dim myAnswer As Object
Set olApp = CreateObject("Outlook.Application")             'OutlookVerweis
If Not olApp.ActiveInspector Is Nothing Then                'Pruefung auf offene Mail
With olApp.ActiveInspector.CurrentItem()
Set myAnswer = .ReplyAll                            'allen Antworten-Verweis
.Close False                                        'Aktuelle Mail schliessen
End With
With myAnswer
'.SentOnBehalfOfName = "xxxxxxx"                     'senden von Konto
'.Subject = "Angebot" & " " & Range("G17")           'Betreff NEU schreiben? ohne  _
_
diese Zeile AW: Original-Betreff
.htmlbody = Range("E5") & "," & "
" & "
" & Range("J9") & "
" & "
" & _ _ Range("P14") & "
" & "
" & Range("P22") & .htmlbody .Display 'anzeigen '.sent 'senden End With Else MsgBox "Bitte zuerst die angebots E-Mail öffnen" End If Set myAnswer = Nothing Set olApp = Nothing End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Email via VBA generieren und formatieren
22.03.2018 14:16:25
Peter(silie)
Hallo,
das müsste so funktionieren:



AW: Email via VBA generieren und formatieren
22.03.2018 14:21:27
michael
Vielen Dank für Ihre Antwort.
Das Formatierungsproblem konnte ich damit lösen.
Nun bleibt noch die offenen Fragen bezüglich Signatur und Anhang an der Ursprungsmail mitnehmen.
VG
AW: Email via VBA generieren und formatieren
22.03.2018 14:48:27
Peter(silie)
Hallo,
du musst das Attachment erst speichern, und dann in deine neue Mail einfügen.
.Attachments.Add "Dateipfad"
für die Signatur musst du die Mail erst anzeigen lassen und dann den HTMLBody am ende anfügen.
(glaube ich zumindest)

With myAnswer
.Display
.To = xy
.Subject = xy
.HTMLBody = "dein text" & .HTMLBody
End With

Anzeige
AW: Email via VBA generieren und formatieren
22.03.2018 15:24:05
michael
Hallo Peter,
mein Text wird bereits als HTMLBody eingefügt.
Das .htmlbody am sorgt dafür, dass der Text der voherigen Emails mit angezeigt wird.
Dies will ich auch so beibehalten. Leider fehlt hierbei noch immer die Signatur.
MfG
AW: Email via VBA generieren und formatieren
22.03.2018 15:49:24
Peter(silie)
Hallo,
dann erstelle ein zweites Mail Object und speichere dessen HTMLBody welcher die Signatur enthält in einer Variable.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Email via VBA generieren und formatieren


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: In Excel drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Modul hinzufügen: Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Sub TestMail()
        Dim olApp As Object
        Dim myAnswer As Object
        Set olApp = CreateObject("Outlook.Application")
    
        If Not olApp.ActiveInspector Is Nothing Then
            With olApp.ActiveInspector.CurrentItem()
                Set myAnswer = .ReplyAll
                .Close False
            End With
    
            With myAnswer
                .htmlbody = "<font face='Arial' size='2'>" & Range("E5") & "</font>" & "<br>" & _
                            Range("J9") & "<br>" & Range("P14") & "<br>" & _
                            Range("P22") & .htmlbody
                .Display
            End With
        Else
            MsgBox "Bitte zuerst die angebots E-Mail öffnen"
        End If
    
        Set myAnswer = Nothing
        Set olApp = Nothing
    End Sub
  4. Text formatieren: Achte darauf, dass der Text im .htmlbody die gewünschte Schriftart und -größe hat. Hier wird Arial in pt. 10 verwendet.

  5. Anhang hinzufügen: Füge den Anhang mit folgendem Code hinzu:

    .Attachments.Add "Dateipfad"
  6. Signatur einfügen: Um eine Signatur hinzuzufügen, speichere die HTML-Signatur in einer Variablen und füge sie am Ende des HTML-Texts hinzu:

    Dim signature As String
    signature = "Hier steht deine Signatur."
    .HTMLBody = "<br>" & signature & .HTMLBody

Häufige Fehler und Lösungen

  • Fehler: "Bitte zuerst die Angebots-E-Mail öffnen"

    • Lösung: Stelle sicher, dass eine E-Mail in Outlook geöffnet ist, bevor du das Makro ausführst.
  • Fehler: Anhang wird nicht hinzugefügt

    • Lösung: Überprüfe den Dateipfad und stelle sicher, dass die Datei existiert.
  • Fehler: Signatur wird nicht angezeigt

    • Lösung: Stelle sicher, dass die Signatur korrekt in die HTML-Body eingefügt wurde. Überprüfe die Reihenfolge der Zeilen im Code.

Alternative Methoden

  • Du kannst auch die Excel VBA Outlook Email Body Format-Funktion verwenden, um den Text direkt zu formatieren, ohne HTML zu benutzen, wenn du nur einfachen Text benötigst.
  • Verwende MailItem-Objekte, um komplexere E-Mail-Funktionen zu implementieren.

Praktische Beispiele

Hier ist ein weiteres Beispiel, um eine E-Mail mit einem Anhang zu erstellen:

Sub EmailMitAnhang()
    Dim olApp As Object
    Dim olMail As Object
    Set olApp = CreateObject("Outlook.Application")
    Set olMail = olApp.CreateItem(0) ' 0 = olMailItem

    With olMail
        .To = "deine-email@example.com"
        .Subject = "Betreff der E-Mail"
        .HTMLBody = "<font face='Arial' size='2'>Dies ist der Inhalt der E-Mail.</font>"
        .Attachments.Add "C:\Pfad\zur\Datei.txt"
        .Display
    End With

    Set olMail = Nothing
    Set olApp = Nothing
End Sub

Tipps für Profis

  • Nutze With-Blöcke effizient, um den Code lesbarer zu gestalten.
  • Halte die E-Mail-Adressen in einer Excel-Liste, um die Excel Emailadresse generieren-Funktion zu optimieren.
  • Verwende On Error Resume Next, um Fehler beim Senden der E-Mail zu ignorieren und den Prozess zu optimieren.

FAQ: Häufige Fragen

1. Wie kann ich die Schriftart der E-Mail ändern?
Du kannst die Schriftart in der .HTMLBody-Eigenschaft anpassen, indem du HTML-Tags verwendest.

2. Kann ich mehrere Anhänge hinzufügen?
Ja, du kannst die .Attachments.Add-Methode mehrmals verwenden, um mehrere Dateien hinzuzufügen.

3. Wie kann ich die E-Mail direkt senden, ohne sie zuerst anzuzeigen?
Ersetze .Display durch .Send, um die E-Mail direkt zu senden.

4. Wie kann ich meine Signatur automatisch einfügen?
Speichere die Signatur in einer Variablen und füge sie am Ende des HTML-Texts hinzu, wie im Beispiel gezeigt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige