dynamische Mail mit VBA generieren
25.03.2025 17:33:05
Lukas_430
ich habe hier eine Mail Vorlage (eine Einladung), die ich gerne dynamisch mittels VBA bestücken möchte. Die Vorlage ist etwas komplizierter aufgebaut, sodass ich sie mir gerne importieren möchte und nicht direkt in den Code schreibe.
Ich habe bereits herausgefunden, dass das scheinbar nicht direkt mit Textmarken funktioniert, sondern habe durch suchen einen Umweg gefunden. Die Vorlage liegt in einer Word Datei (mit Textmarken), wird dann befüllt und dann in Richtung Outlook per Copy and Paste übergeben.
Das ist der Code dazu:
Sub emailFromDoc()
Dim wd As Object, editor As Object
Dim docEinladung As Object
Dim oApp As New Outlook.Application
Dim oMail As Outlook.MailItem
Dim Zeile As Long
For Zeile = 7 To Tabelle1.Cells(Rows.Count, 8).End(xlUp).Row
If Tabelle1.Rows(Zeile).Hidden = False And _
Tabelle1.Cells(Zeile, 8) > "" Then 'nur die bei aktivem Filter sichtbaren Zeilen berücksichtigen!!!
If Tabelle1.Rows(Zeile).Hidden = False Then
Set wd = CreateObject("Word.Application")
Set docEinladung = wd.Documents.Open("Link zur Datei")
docEinladung.Bookmarks("Nachname").Range.Text = Tabelle1.Cells(Zeile, 8).Value
docEinladung.Bookmarks("Vorname").Range.Text = Tabelle1.Cells(Zeile, 9).Value
docEinladung.Content.Copy
docEinladung.Close SaveChanges:=False
Set wd = Nothing
Set oMail = oApp.CreateItem(olMailItem)
With oMail
.BodyFormat = olFormatRichText
Set editor = .GetInspector.WordEditor
editor.Content.Paste
.Display
End With
End If
End If
Next Zeile
End Sub
Bitte nicht wundern, das ganze soll nur auf die aktuell sichtbaren Zeilen der Liste angewendet werden. Das funktioniert auch sehr gut (vielen Dank nochmal für die Hilfe an anderer Stelle hier im Forum!).
Dieser Code funktioniert jetzt manchmal und manchmal nicht. Ich konnte noch kein System erkennen. Diese Fehlermeldung wird angezeigt:
Es wird im Debug verwiesen auf
editor.Content.Paste
Hat jemand von euch eine Idee (auch vor dem Hintergrund, dass es manchmal ohne Probleme funktioniert)?
Viele Grüße
Lukas
Anzeige