Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

[Gelöst] PDF Anhang an Serienmails

Begonnen von DJ-Mix, Februar 21, 2022, 20:00:08

⏪ vorheriges - nächstes ⏩

DJ-Mix

Hallo zusammen,

ich habe ein Script, welches aus einer Abfrage eine (oder mehrere) Mails generiert. Dies funktioniert auch. Jetzt möchte ich gerne noch einen individuellen PDF Anhang hinzufügen. Und da scheitere ich. Das Script habe ich mir abgeschrieben und für mich angepasst - jedoch kann ich keine Code Schnipsel für den Dateianhang finden. Ich habe es versucht (siehe Script), aber ohne Erfolg.

Option Compare Database
Option Explicit

Public Sub sendMail()

   
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
   
   
    Dim outApp As Outlook.Application
    Dim outMail As Outlook.MailItem
    Dim outStarted As Boolean
   
  [b][color=red]Dim myattachments As Variant[/color][/b]
   
    On Error Resume Next
    Set outApp = GetObject("", "Outlook.Application")
   
    [b][color=red]Set myattachments = outMail.attachments[/color][/b]
   
   
    On Error GoTo 0
   
        If outApp Is Nothing Then
            Set outApp = CreateObject("Outlook.Application")
            outStarted = True
        End If
             
   
   
    Dim emailTo As String
    Dim emailSubject As String
    Dim emailText As String
   
   
   
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT Anrede, Nachname, Vorname, EmailAdresse, Angebotsdatum, AngebotErfolgt, Anlage " & _
                            " FROM qryKunde_AngeboteNachhacken")
                           
   
   
   
    Do Until rs.EOF
   
        emailTo = Trim(rs.Fields("Vorname").Value & " " & rs.Fields("Nachname").Value) & _
                " <" & rs.Fields("EmailAdresse").Value & "> "
               
        emailSubject = "Angebotsnachfrage vom " & " " & rs.Fields("Angebotsdatum").Value
               
        emailText = Trim(rs.Fields("Anrede").Value & " " & rs.Fields("Nachname").Value & ",") & vbCrLf
        emailText = emailText & _
        "hier steht der Text" & vbCrLf
     

     
    [b][color=red] myattachments.Add Anlage [/color][/b]
     
       
    Set outMail = outApp.CreateItem(olMailItem)
    outMail.To = emailTo
    outMail.Subject = emailSubject
    outMail.Body = emailText
       
   
    outMail.Send
   
   
   
        rs.MoveNext
    Loop
   
 
 
    rs.Close
    Set rs = Nothing
    Set db = Nothing
   
    If outStarted Then
        outApp.Quit
    End If

    Set outMail = Nothing
    Set outApp = Nothing


End Sub


Die Anlage habe ich über die Tabelle (Anlage) hinzugefügt, so dass jeder Datensatz eine bestimmte PDF hat. Dies habe ich ebenso in die Abfrage mit übernommen. Leider bekomme ich aber diese nicht zum versenden anbei. Die Stellen habe ich in Rot markiert, wo ich es versucht habe.

Vielen Dank Vorab
Markus


ebs17

With outMail
   .To = emailTo
   .Subject = emailSubject
   .Body = emailText
   .Attachments.Add VollstaendigerPfadAnlage
End With
Die Anlage muss zur Verwendung als Datei im Filesystem liegen.
Mit freundlichem Glück Auf!

Eberhard

DJ-Mix

Hallo Eberhard,

vielen Dank für die Hilfestellung. Jedoch kann ich so nur 1 (.Attachments.Add VollstaendigerPfadAnlage) festgelegte PDF an die Kunden senden. Ich benötige jedoch für jeden Kunden eine eigene PDF.
Und wo im Code müsste ich deinen Code eingeben. Ich bin leider totaler Anfänger in VBA und habe meinen Code lediglich
abgetippt und angepasst.

Viele grüße
Markus

ebs17

Der Pfad zum PDF müsste natürlich individuell wechseln für individuelle Mails.

Es stellt sich also die logische Frage (unabhängig von VBA-Kenntnissen), wo solche PDF's liegen und wie sie den Empfängern zugeordnet sind oder ob sie im Zuge der individuellen Mailerstellung erst individuell erzeugt werden und damit quasi live übernehmbar wären.
Mit freundlichem Glück Auf!

Eberhard

DJ-Mix

Hallo Eberhard,

es handelt sich hierbei um Angebote, welche dem Kunden bereits (durch Outlook direkt) zugesandt wurden. Diese PDF,  mit eindeutigem Namen, liegen dann im speziellen Kunden Ordner. Das Script soll einfach die Möglichkeit herstellen, dass eine Erinnerung des Angebots, (mit dem bereits vorhandenem Angebot) in einem bestimmten Zeitraum erneut gesendet wird. Da dies über Outlook, Manuell, einen nicht zu Unterschätzen Aufwand bedeutet, versuche ich dies Automatisiert
über Access umzusetzen. 
Vorarbeit: Nach dem senden über Outlook, wird der Kunde in Access angelegt mit verweis auf die Datei.
Danach soll Access dann automatisch die Erinnerung senden.

Viele grüße
Markus

ebs17

Siehe Deine Recordseterzeugung:
    Set rs = db.OpenRecordset("SELECT Anrede, Nachname, Vorname, EmailAdresse, Angebotsdatum, AngebotErfolgt, Anlage " & _
                            " FROM qryKunde_AngeboteNachhacken")
Wenn Anlage hier den benötigten vollständigen Pfad zur Datei enthält, dann verwendest Du einfach dieses Feld.
Mit freundlichem Glück Auf!

Eberhard

DJ-Mix

Hallo Eberhard,

so, habe versucht dies umzusetzen. Der Pfad liegt vor wie auf dem Bild zu sehen.

Oben habe ich noch zusätzlich:

Dim emailAtt as Variant

und dann die Einträge auf dem Bild. Hier erhalte ich die Fehlermeldung:

Sie dürfen in diesem Board keine Dateianhänge sehen.

Laufzeitfehler '5'
Ungültiger Prozeduraufruf oder ungültiges Argument

Bin leider überfragt, wo ich hier was ändern muss.

Viele grüße
Markus

ebs17

Das Gleichheitszeichen war zuviel eigenerbrachte Kreativität.

Mit Variablen kann man auch sparsamer sein. Diese machen erst bei Mehrfachnutzung Sinn, wenn man sich darüber Mehrfachberechnungen spart.

outMail.Attachments.Add rs.Fields("Anlage").Value
Mit freundlichem Glück Auf!

Eberhard

DJ-Mix

Hallo Eberhard,

das war es. Supi, vielen Dank für die Hilfe.

Viele grüße
Markus

jochens

Hallo Eberhard und Markus,
bin auf euer Thema gestoßen, was genau für mich passen würde.
Ich habe das geringfügig angepasst, komme aber leider auf einen analogen Fehler (Laufzeitfehler, die Datei kann nicht gefunden werden) wie von Markus.
Hättet ihr da noch eine Idee was ich da falsch hinterlegt habe?
Der Pfad zur jeweiligen Anlage wird eigentlich korrekt übergeben.
Besten Dank vorab.
Jochen


jochens

Sie dürfen in diesem Board keine Dateianhänge sehen.