Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Email aus excel mit Platzhalter aus textfeld
#1
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 >
Antworten Top
#2
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!
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top
#3
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?
Antworten Top
#4
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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste