Clever-Excel-Forum

Normale Version: VBA Email aus excel mit Platzhalter aus textfeld
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallihallo allerseits,
ich bin schon ziemlich weit gekommen, habe also quasi fast alles fertig und jetzt komm ich einfach nicht weiter, hinterher werde ich bestimmt feststellen dürfen, dass es wie so oft ganz einfach war.

Ist zustand:
Riesige exceltabelle, pro spalte Name, email, materialnummer, teilenummer, auftragsnummer.
jetzt muss ich an eine bstimmte Auswahl von kontakten eine email senden, welche mit anrede Namen (mit platzhalter) direkt aus der liste senden kann.
dazu mache ich ein kreuz in die dafür bestimmte zelle drücke auf den button senden. und Fertig.

sehr geehrte [@Name]
blablabla
blablablablablbal

[nummer1]
[nummer2]
[nummer3]




Soll Zustand
zusätzlich zum namen, sollen auch die fehlenden werte mittels Platzhalter eingrfügt werden.
also die drei nummern sollen durch Platzhalter ebenfalls beigeführt werden.

Code:
Sub BtnEmail_Senden()
   Send_Email
End Sub


Private Sub Send_Email()
   '-------------< Send_Email() >-------------
   Dim sTitle As String
   sTitle = "Statusabfrage"
   
   '< HMTL holen >
   Dim sTemplate As String
   sTemplate = Sheets("ini_Vorlage").Shapes(1).TextFrame2.TextRange.Text

   '</ HMTL holen >
   
   '----< Send with Outlook >----
   Dim app_Outlook As Outlook.Application
   Set app_Outlook = New Outlook.Application
 
   '--< Email einstellen >--
   Dim objEmail As Outlook.MailItem
   
   Dim sEmail_Address As String
   Dim iRow As Integer
   For iRow = 2 To 9999
       If Cells(iRow, 15) = "x" Then
           '< get Email Address >
           'Column 2, B
           sEmail_Address = Cells(iRow, 13)
           '</ get Email Address >
           
           '< Fill Placeholders >
           Dim sHTML As String
           sHTML = Replace(sTemplate, "[@Name]", Cells(iRow, 14))
         
           
           '</ Fill Placeholders >
           
           '--< Send Email >--
           Set objEmail = app_Outlook.CreateItem(olMailItem)
           objEmail.To = sEmail_Address
           objEmail.Subject = sTitle
           'objEmail.HTMLBody = sHTML  '*use .HTMLBody for HTML
           objEmail.Body = sHTML       '*and .body for pure Text
           objEmail.Display
           
           '--</ Send Email >--
                   
           
       End If
   Next
     
   
   
   '< Abschluss >
   Set objEmail = Nothing
   Set app_Outlook = Nothing
   '</ Abschluss >
   
   MsgBox "Emails erstellt", vbInformation, "Fertig"
   
   '----</ Send with Outlook >----
   '-------------</ Send_Email() >-------------
End Sub


'---get Text--
'sTemplate = Sheets("ini_Vorlage").Shapes(1).DrawingObject.Text
'sTemplate = Sheets("ini_Vorlage").Shapes(1).TextFrame.Characters.Text
'or sHTML=Sheets("ini_Vorlage").Shapes(1).Textframe.Characters.Text
'.TextRange.Characters.Text
   

das ist der gesamte Code, den Platzhalter (hier unten) würde ich ganz gerne einfach erweitern, dass geht aber nicht, da Excel immer nur den letzten wert berücksichtigt.
wenn ich also die zeile einfach kopiere und abgeendert für eine nummer unten drunter einfüge, wird mein Name nicht mehr eingefügt.
ich hoffe ihr könnt mir helfen Angel
Code:
        '< Fill Placeholders >
           Dim sHTML As String
           sHTML = Replace(sTemplate, "[@Name]", Cells(iRow, 14))
         
           
           '</ Fill Placeholders >
Hallo Michael,

probiere mal, deinen Code wie folgt zu erweitern:


Code:
'< Fill Placeholders >
Dim sHTML As String
sHTML = Replace(sTemplate, "[@Name]", Cells(iRow, 14))
sHTML = Replace(sHTML, "[@VorName]", Cells(iRow, 15))
sHTML = Replace(sHTML, ...
         
           
'</ Fill Placeholders >

also ab der zweiten Ersetzung ersetzt du "Replace(sTemplate, ...)" mit Replace(sHTML, ...).

Viel Erfolg!
super ich danke dir :18: :18: :18: und wie bereits erwartet, war die Lösung sehr einfach :D


Jetzt ist mir noch eine Idee gekommen, die zwar nichts extrem verbessert, dennoch eine Vereinfachung darstellen würde

Im Textfeld, habe ich jetzt mein Platzhalter,
ganz unten habe ich manuell meine Signatur eingefügt.
Kann ich dem Programm, bzw. Outlook irgendwie sagen, dass er automatisch immer die Signatur, des jeweiligen Senders an eine durch Excel erstellte E-Mail anfügt?
das geht doch bestimmt auch ganz einfach oder?
Hallöchen,

unsere Suche hilft auch ein bisschen, da findet man u.a. das:
https://www.clever-excel-forum.de/Thread...tInspector

Google bietet z.B. das
https://stackoverflow.com/questions/8994...in-outlook