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

vab email versenden mit variablen

Forumthread: vab email versenden mit variablen

vab email versenden mit variablen
03.08.2018 13:01:18
Bastian
Schönen guten Tag zusammen,
ich habe ein kleines Problem und leider kenn ich mich mit vba sehr wenig aus.
Ich möchte mit Hilfe von Excel eine Email versenden, was auch schon ganz gut klappt. Ich habe ein HTML-Textfeld mit 2 Variablen ( [@NAME] und [@FIRMENNAME] ). Leider ersetzt mein Code diese beiden Werte nicht, allerdings wenn ich es mit einer Variablen ausprobiere klappt es (siehe Code).
Kann mir jemand helfen?
Private Sub Send_Email()
'
Dim sTitle As String
sTitle = "HALLO WELT"
'
Dim sTemplate As String
sTemplate = Sheets("Str+E 1.Anschr. nach Inet-seite").Shapes(1).TextFrame2.TextRange.Text
'
Dim objOutlook As Object
Set objOutlook = CreateObject("Outlook.Application")
'
Dim objEmail As Object
Set objEmail = objOutlook.CreateItem(olMailItem)
Dim sEmail_Address As String
Dim sEmail_Name As String
Dim sEmail_Firmenname As String
Dim sHTML As String
'
sEmail_Address = ActiveCell.Offset(9, 0)
'sEmail_Firmenname = Cells(ActiveCell.Row - 17, 2)
sEmail_Name = ActiveCell.Offset(2, 0)
'
'sHTML = Replace(sTemplate, "[@FIRMENNAME]", sEmail_Firmenname)
sHTML = Replace(sTemplate, "[@NAME]", sEmail_Name)
Set objEmail = objOutlook.CreateItem(olMailItem)
With Mail
'
objEmail.To = sEmail_Address
objEmail.Subject = sTitle
'objEmail.Body = sHTML
objEmail.htmlbody = sHTML
objEmail.ReadReceiptRequested = True
objEmail.Attachments.Add ("C:\Users\Nutzer\Documents\Bewerbung.pdf")
objEmail.Display
'
VBA.SendKeys "^{END}", True
strSignatur = "Bastian Deisen"
objEmail.GetInspector.CommandBars.Item("Insert").Controls("Signatur").Controls( _
strSignatur). _
Execute
'
'objEmail.Send
End With
'
Set objEmail = Nothing
Set objOutlook = Nothing
End Sub
Vielen lieben Dank schonmal
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vab email versenden mit variablen
03.08.2018 13:51:58
Karl-heinz
Hallo Bastian,
wenn ich das richtig sehe, ersetzt Du die zwei Suchbegriffe immer in der Originalvariablen sTemplate. Da ist dann natürlich die erste Ersetzung wieder weg.
Mach es so:
sHTML = Replace(sTemplate, "[@FIRMENNAME]", sEmail_Firmenname)
sHTML = Replace(sHTML, "[@NAME]", sEmail_Name)
dann sollte gehen.
Viele Grüße
Karl-Heinz
Anzeige
AW: vab email versenden mit variablen
03.08.2018 14:00:00
Bastian
Hallo Karl-Heinz,
vielen Dank für deine Antwort.
Klappt jetzt alles wie gewünscht.
Ein schönes Wochenende wünsche ich
;
Anzeige

Infobox / Tutorial

E-Mails mit VBA in Excel versenden: Variablen ersetzen


Schritt-für-Schritt-Anleitung

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

  2. Modul erstellen: Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.

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

    Private Sub Send_Email()
       Dim sTitle As String
       sTitle = "HALLO WELT"
    
       Dim sTemplate As String
       sTemplate = Sheets("Str+E 1.Anschr. nach Inet-seite").Shapes(1).TextFrame2.TextRange.Text
    
       Dim objOutlook As Object
       Set objOutlook = CreateObject("Outlook.Application")
    
       Dim objEmail As Object
       Set objEmail = objOutlook.CreateItem(olMailItem)
       Dim sEmail_Address As String
       Dim sEmail_Name As String
       Dim sEmail_Firmenname As String
       Dim sHTML As String
    
       sEmail_Address = ActiveCell.Offset(9, 0)
       sEmail_Firmenname = Cells(ActiveCell.Row - 17, 2)
       sEmail_Name = ActiveCell.Offset(2, 0)
    
       sHTML = Replace(sTemplate, "[@FIRMENNAME]", sEmail_Firmenname)
       sHTML = Replace(sHTML, "[@NAME]", sEmail_Name)
    
       With objEmail
           .To = sEmail_Address
           .Subject = sTitle
           .HTMLBody = sHTML
           .ReadReceiptRequested = True
           .Attachments.Add ("C:\Users\Nutzer\Documents\Bewerbung.pdf")
           .Display
       End With
    
       Set objEmail = Nothing
       Set objOutlook = Nothing
    End Sub
  4. Variablen anpassen: Stelle sicher, dass die Variablen sEmail_Address, sEmail_Firmenname und sEmail_Name korrekt auf die gewünschten Zellen in deiner Excel-Tabelle verweisen.

  5. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Problem: Variablen werden nicht ersetzt.

    • Lösung: Stelle sicher, dass die Ersetzungen in der richtigen Reihenfolge vorgenommen werden. Verwende zwei Replace-Aufrufe, wie im Beispiel gezeigt.
  • Problem: Outlook öffnet sich nicht.

    • Lösung: Stelle sicher, dass Outlook korrekt installiert und konfiguriert ist und dass du Excel die Berechtigung zum Senden von E-Mails erteilt hast.

Alternative Methoden

  • Power Automate: Für eine einfachere Automatisierung ohne VBA kannst du auch Microsoft Power Automate verwenden. Hier kannst du Flows erstellen, um E-Mails basierend auf Excel-Daten zu versenden.
  • Excel-Add-Ins: Es gibt verschiedene Add-Ins, die das Versenden von E-Mails direkt aus Excel ermöglichen, ohne VBA nutzen zu müssen.

Praktische Beispiele

  • Beispiel 1: Wenn du die E-Mail an mehrere Empfänger senden möchtest, kannst du die Adressen in einer Liste führen und in einer Schleife durch diese Liste iterieren.

    For Each cell In Range("A1:A10")
      sEmail_Address = cell.Value
      ' Rest des Codes hier
    Next cell
  • Beispiel 2: Um eine personalisierte Signatur hinzuzufügen, kannst du den Code anpassen, um die Signatur dynamisch aus einer Zelle zu beziehen.


Tipps für Profis

  • Debugging: Nutze Debug.Print, um den Inhalt von Variablen während der Ausführung zu überprüfen. Dies hilft, Fehler zu identifizieren.
  • Sicherheitsoptionen: Stelle sicher, dass deine Excel- und Outlook-Sicherheitsoptionen so konfiguriert sind, dass das Ausführen von Makros erlaubt ist.
  • Schnellzugriff: Füge das Makro zur Symbolleiste für den Schnellzugriff in Excel hinzu, um es schneller ausführen zu können.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine E-Mail korrekt formatiert ist? Achte darauf, dass der HTML-Code in der Template-Datei korrekt ist und teste die E-Mail vor dem Versand.

2. Funktioniert das auch in Excel 365? Ja, dieser VBA-Code funktioniert in Excel 365 sowie in früheren Versionen, solange die entsprechenden Einstellungen in Outlook konfiguriert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige