Clever-Excel-Forum

Normale Version: E-Mail in Excel erzeugen und Standarttext für alle Mails verwenden?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo.

Habe jetzt in Excel mein Marko so erweitert, dass die Mails, die ich versende möchte automatisch geöffnet werden.

Code:
Dim olApp     As Object
Code:
Dim olOldbody As String
Code:
Set olApp = CreateObject("Outlook.Application")
Code:
    With olApp.CreateItem(0)
Code:
              .GetInspector.Display
Code:
              olOldbody = .htmlBody
Code:
              .To = "test1@test1.net"
Code:
              .CC = "test2@test2.de; test3@test3.de"
Code:
              .Subject = "Report " & Format(DateAdd("m", -1, Now), "MMMM YYYY") & ""
Code:
              .htmlBody = "Hallo XXX,<br>anbei senden wir Ihnen den aktuellen Monatsbericht. <br><br>" & _
Code:
                                                    "<br><br>Viele Grüße<br><br>" & olOldbody
Code:
End With
Code:
Set olApp = CreateObject("Outlook.Application")
Code:
    With olApp.CreateItem(0)
Code:
              .GetInspector.Display
Code:
              olOldbody = .htmlBody
Code:
              .To = "test4@test4.net"
Code:
              .CC = "test5@test5.de; test6@test6.de"
Code:
              .Subject = "Report YYY " & Format(DateAdd("m", -1, Now), "MMMM YYYY") & ""
Code:
              .htmlBody = "Hallo Herr XXX,<br><br>anbei senden wir Ihnen den aktuellen Monatsbericht. <br><br>" & _
Code:
                                                    "<br><br>Viele Grüße<br><br>" & olOldbody
Code:
End With


Nun kann es vorkommen, dass der Text hinter Hallo Herr XXX abgeändert werden soll für alle. Jetzt müsste ich jede Zeile separat ändern bzw. kopieren.
Geht dies auch anders? So dass ich jeweils nur einen Platzhalter einfüge und den Text einmal an einer anderen Stelle ändere?

Gern auch direkt in Excel. Eventuell über eine Eingabebox, die sich beim starten des Markos öffnet und erst dann werden die Mails erzeugt?

Euch einen schönen Start in die Woche.


Sorry, irgendwie hat der Editor den Code in einzelne Codes gepackt.  20 20 20
Hallo

so?

Code:
    Dim olApp     As Object
    Dim olOldbody As String
    Dim strText   As String

    strText = InputBox("Standardtext?", "Eingabe Text", "anbei senden wir Ihnen den aktuellen Monatsbericht. ")
    Set olApp = CreateObject("Outlook.Application")

    With olApp.CreateItem(0)
              .GetInspector.Display
              olOldbody = .htmlBody
              .To = "test1@test1.net"
              .CC = "test2@test2.de; test3@test3.de"
              .Subject = "Report " & Format(DateAdd("m", -1, Now), "MMMM YYYY") & ""
              .htmlBody = "Hallo XXX,<br><br>" & strText & "<br><br>" & _
                                                    "<br><br>Viele Grüße<br><br>" & olOldbody
    End With

    Set olApp = CreateObject("Outlook.Application")
    With olApp.CreateItem(0)
              .GetInspector.Display
              olOldbody = .htmlBody
              .To = "test4@test4.net"
              .CC = "test5@test5.de; test6@test6.de"
              .Subject = "Report YYY " & Format(DateAdd("m", -1, Now), "MMMM YYYY") & ""
              .htmlBody = "Hallo Herr XXX,<br><br>" & strText & "<br><br>" & _
                                                    "<br><br>Viele Grüße<br><br>" & olOldbody

    End With

LG UweD
@ TE,

bitte nicht um jede codezeile den codetag setzen sondern nur um den gesamten code. Dann macht auch das Forum mehr Spaß und nicht nur Excel ...
Hallo André,

Du hast die letzte Zeile des TE gelesen? Wink

Gruß Uwe
Uwe, hast Du 'ne Idee dazu? Ist mir noch nie passiert.
Hallo André,

leider nein. Aber es kam schon mehrmals vor.

Gruß Uwe
Hallo,

hier noch eine von vielen möglichen Ideen zum Versand von mehreren eMails mit gleichem Bodytext....

Es ist nicht nötig
- die Outlookinstanz mehrfach zu kreieren
- die Signatur in einer Variablen zu sichern, wenn man den Bodytext mit einer Zeile füllt

Man könnte, wie im Vorschlag mit einer Schleife arbeiten.

Als Zeilenumbruch wird hier ein Platzhalter | verwendet. Den kannst Du dann auch mit der Inputbox verwenden.
Code:

Sub Mailversand()
  Dim sBodytext As String, sArrTo() As String, sArrWer() As String
  Dim i As Integer

  sBodytext = InputBox("Standardtext?", "Eingabe Text", "anbei senden wir Ihnen den aktuellen Monatsbericht. ")
  If sBodytext = "" Then Exit Sub
    
' Vorgabe der Adressen To | CC und Anreden
  sArrTo = Split("test1@test1.net|test2@test2.de; test3@test3.de|" _
               & "test4@test1.net|test5@test2.de; test6@test3.de", "|")
  
  sArrWer = Split("Herr Müller||Herr Maier", "|")
  
  With CreateObject("Outlook.Application")
     For i = 0 To UBound(sArrTo) Step 2
         With .CreateItem(0)
            .GetInspector.Display
            .To = sArrTo(i)
            .CC = sArrTo(i + 1)
            .Subject = "Report " & Format(DateAdd("m", -1, Now), "MMMM YYYY") & ""
            .htmlBody = Replace("Hallo " & sArrWer(i) & ",||" & sBodytext & "||" & "Viele Grüße||", "|", "<br>") _
                      & .htmlBody
         End With
      Next i
  End With
    
End Sub

_________
viele Grüße
Karl-Heinz