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

Excel VBA - E-Mail mit Grafik versenden

Forumthread: Excel VBA - E-Mail mit Grafik versenden

Excel VBA - E-Mail mit Grafik versenden
14.02.2017 13:59:15
Schmecks
Hallo Freunde,
ich brauche mal wieder Eure Hilfe. Ich möchte aus Excel eine E-Mail mit bestimmten Inhalten aus bestimmten Zellen senden. Es handelt sich hierbei um eine Login-Anleitung mit jeweils auf den Adressaten zugeschnittenen Logindaten und Passwörtern (variabler Teil). Das klappt soweit ganz gut. Nun möchte ich auch noch eine Anleitung zur Passwortänderung nach der Erstanmeldung hinzufügen (immer gleicher Teil der E-mail). Dazu habe ich bereits die E-Mail als HTML-Body definiert und das wird auch so umgesetzt.
Die Logindaten stehen in den Spalten E & F des Tabellenblattes.
Ich habe den Code direkt in das Tabellenblatt eingefügt in dem die Informationen entnommen werden.
Option Explicit

Private Sub CommandButton21_Click()
Dim olApp As Object, olMailItm As Object, i, lz, k As Integer, Pfad As String
Pfad = "C:\Data\" 'Hier Pfad anpassen
lz = Cells(Rows.Count, 1).End(xlUp).Row
i = 2
weiter:
Do Until i > lz
Set olApp = CreateObject("Outlook.Application")
Set olMailItm = olApp.CreateItem(0)
Cells(i, 1).Select
If ActiveCell.Value  "" Then
With olMailItm
.To = Cells(i, 1).Value
.Subject = Cells(i, 2).Value
.BodyFormat = 2 'olFormatHTML (HTML -Mail-Format)
.HTMLBody = "Text" 'HTML -Mail
.Body = _
"Hallo " & Cells(i, 3).Value & "," & _
Chr(13) & _
Chr(13) & _
"Ihre Zugangsdaten für " & Chr(34) & "Projekt X " & Chr(34) & "lauten :" & _
Chr(13) & _
Chr(13) & _
"Login" & vbTab & ":   " & vbTab & Cells(i, 5).Value & _
Chr(13) & _
"Passwort " & ":" & vbTab & Cells(i, 6).Value & _
Chr(13) & _
"(dieses ist wie unter Punkt 4. beschrieben nach der Erstanmeldung zu ändern.)" & _
Chr(13) & _
Chr(13) & _
"Mit freundlichen Grüßen" & _
Chr(13) & _
'Chr(13)
.OriginatorDeliveryReportRequested = True 'Übermittlungsbestätigung anfordern ( _
Nachverfolgungsoption)
.ReadReceiptRequested = True ' Lesebestätigung anforndern
If Dir(Pfad & Cells(i, 4).Value)  "" Then 'Abfrage ob Anhang vorhanden
.Attachments.Add Pfad & Cells(i, 4).Value
End If
.Display 'alternativ ".Send" für direktes Versenden
.Sensitivity = 3 ' Vertraulichkeit (0 = Normal, 1 = Persönlich, 2 = Privat, 3 = Vertraulich) _
_
_
.Importance = 2 ' Wichtigkeit (0 = Niedrig, 1 = Normal, 2 = Hoch)
End With
Else
MsgBox "Für das Dokument " & Cells(i, 1).Value & " ist kein Empfänger eingtragen"
End If
Set olMailItm = Nothing
Set olApp = Nothing
i = i + 1
Loop
If i > lz Then
End
End If
End Sub
Wie kann ich evtl. mit img src="C:\Data\Beispiel.jpg" im .Body = ... mehrere Grafiken einfügen, die entweder direkt aus einem Excel-Zellbereich kopiert werden oder aus einer gespeicherten Grafik gezogen werden? Kann ich die Höhe und Breite der Grafik auch in VBA festlegen?
mfg der Schmecks
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA - E-Mail mit Grafik versenden
14.02.2017 16:54:37
Schmecks
keiner eine Idee?
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

E-Mail mit Grafik aus Excel VBA versenden


Schritt-für-Schritt-Anleitung

Um eine E-Mail mit Grafiken aus Excel zu versenden, kannst Du den folgenden VBA-Code verwenden. Dieser Code basiert auf dem bereits vorhandenen, um E-Mails mit Texten zu versenden, und wird um die Möglichkeit ergänzt, Bilder einzufügen.

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge einen neuen Modul hinzu, indem Du im Projekt-Explorer mit der rechten Maustaste auf dein Projekt klickst und „Einfügen“ > „Modul“ wählst.
  3. Kopiere den folgenden Code in das Modul:
Private Sub CommandButton21_Click()
    Dim olApp As Object, olMailItm As Object, i, lz As Integer, Pfad As String
    Pfad = "C:\Data\" 'Hier Pfad anpassen
    lz = Cells(Rows.Count, 1).End(xlUp).Row
    i = 2

    Do Until i > lz
        Set olApp = CreateObject("Outlook.Application")
        Set olMailItm = olApp.CreateItem(0)
        Cells(i, 1).Select

        If ActiveCell.Value <> "" Then
            With olMailItm
                .To = Cells(i, 1).Value
                .Subject = Cells(i, 2).Value
                .BodyFormat = 2 'olFormatHTML (HTML -Mail-Format)
                .HTMLBody = "Text" 'HTML -Mail
                .HTMLBody = .HTMLBody & _
                "<img src='file:///" & Pfad & Cells(i, 4).Value & "' width='300' height='200' />" & _
                "Hallo " & Cells(i, 3).Value & "," & _
                "<br><br>Ihre Zugangsdaten für 'Projekt X' lauten:" & _
                "<br>Login: " & Cells(i, 5).Value & _
                "<br>Passwort: " & Cells(i, 6).Value & _
                "<br>(dieses ist wie unter Punkt 4. beschrieben nach der Erstanmeldung zu ändern.)" & _
                "<br><br>Mit freundlichen Grüßen"

                .Display 'alternativ ".Send" für direktes Versenden
            End With
        Else
            MsgBox "Für das Dokument " & Cells(i, 1).Value & " ist kein Empfänger eingetragen"
        End If

        Set olMailItm = Nothing
        Set olApp = Nothing
        i = i + 1
    Loop
End Sub
  1. Ändere den Pfad zu den Bildern in der Zeile Pfad = "C:\Data\" entsprechend Deinem System.
  2. Füge eine Schaltfläche in das Excel-Blatt ein, um den Code auszuführen.

Häufige Fehler und Lösungen

  • Fehler: E-Mail wird nicht gesendet.

    • Lösung: Stelle sicher, dass Outlook korrekt konfiguriert ist und Du einen gültigen Empfänger in der Zelle A2 hast.
  • Fehler: Bild wird nicht angezeigt.

    • Lösung: Überprüfe den Pfad zum Bild und stelle sicher, dass das Bild im angegebenen Verzeichnis vorhanden ist.

Alternative Methoden

Eine andere Methode, um E-Mails mit Grafiken aus Excel zu versenden, ist die Verwendung von Power Automate (ehemals Microsoft Flow), wo Du Trigger und Aktionen definieren kannst, um E-Mails mit Anhängen zu versenden. Diese Methode erfordert jedoch keine Programmierung.


Praktische Beispiele

Beispiel 1: Sende individuelle E-Mails mit Anhang.

Wenn Du eine Liste von Benutzern hast, deren Daten in einer Excel-Tabelle gespeichert sind, kannst Du den oben genannten VBA-Code verwenden, um personalisierte E-Mails zu versenden. Der Code sendet an jeden Benutzer eine E-Mail mit seinen spezifischen Anmeldedaten und einer Grafik.

Beispiel 2: Versende eine allgemeine Nachricht mit mehreren Bildern.

Du kannst mehrere <img>-Tags in die HTMLBody-Variable einfügen, um mehrere Grafiken in einer E-Mail zu versenden:

.HTMLBody = .HTMLBody & _
"<img src='file:///" & Pfad & "Bild1.jpg' width='300' height='200' />" & _
"<img src='file:///" & Pfad & "Bild2.jpg' width='300' height='200' />"

Tipps für Profis

  • Verwende HTML-Formatierung: Nutze HTML, um E-Mails ansprechender zu gestalten. Du kannst Stil-Elemente wie Farben und Schriftarten in das HTML einfügen.

  • Bilder skalieren: Setze die Attribute width und height für Bilder, um die Größe in der E-Mail zu kontrollieren.

  • Testen: Teste Deinen Code immer mit einer kleinen Anzahl von E-Mails, bevor Du ihn auf eine größere Empfängerliste anwendest.


FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um mehrere Bilder zu senden?
Du kannst mehrere <img>-Tags in der HTMLBody-Variable hinzufügen, um mehrere Bilder einzufügen.

2. Funktioniert dieser Code in jeder Excel-Version?
Der Code sollte in Excel-Versionen ab 2010 problemlos funktionieren, solange Outlook installiert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige