Hallo,
im nachfolgenden Code habe ich im Ablauf für rs2 einen zusätzlichen Loop mit der Variablen vAttachments
eingebaut...die Konstruktion ist fehlerhaft und ich erhalte die Fehlermeldung "Laufzeitfehler 424: Objekt erforderlich"
Der Ablauf soll "analog" zum Ablauf rs erfolgen
Mit rs fülle ich die SerienEmail
Mit rs2 fülle ich meine Protokolldatei
Kann da bitte jemand draufschauen!
Vielen Dank!
Harry
Private Sub cmdSenden_Click()
Dim dB As DAO.Database
Dim rs As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim objOutlook As Outlook.Application
Dim objMailItem As Outlook.MailItem
Dim l As Long
Dim vTeilnehmerID As Integer
vTeilnehmerID = Forms!frmMailsMitAttachment!cbxTeilnehmerSelect.Value
Dim vAttachments As Variant 'Neu
Set objOutlook = New Outlook.Application
' Set objMailItem = objOutlook.CreateItem(olMailItem) !!!!!MUSS AN DEN ANFANG DES LOOPs!!!!!
Set dB = CurrentDb
Dim AnzahlEmail As Integer
AnzahlEmail = 0
Dim vAdressdatenID As Integer
Dim strSQL As String
strSQL = "DELETE * FROM SerienMailTeilnehmerAdressdatenCheckT"
CurrentDb.Execute strSQL, dbFailOnError
DoCmd.SetWarnings False
' CurrentDb.Execute SerienMailTeilnehmerAdressdatenCheckQ, dbFailOnError
DoCmd.OpenQuery "SerienMailTeilnehmerAdressdatenCheckQ" 'Mit diesem Query erstelle ich die nachfolgende Tabelle
DoCmd.SetWarnings True 'Um dem Problem mit einer ComboBox aus dem Weg zu gehen
'wird durch CurrentDb.Execute "SerienMailTeilnehmerAdressdatenCheckQ", dbFailOnError ersetzt
Set rs = dB.OpenRecordset("SerienMailTeilnehmerAdressdatenCheckT", dbOpenSnapshot) 'rs füllt die Email
Do Until rs.EOF
Set objMailItem = objOutlook.CreateItem(olMailItem) '!!!!!MUSS AN DEN ANFANG DES LOOPs!!!!
With objMailItem
.To = rs!Email
.Subject = Me!txtBetreff
.Body = Me!txtInhalt
For l = 0 To Me!lstAnlagen.ListCount - 1 'rs loop für Email
.Attachments.Add Me!lstAnlagen.ItemData(l)
Next l
' .Display
.Send
End With
vAdressdatenID = rs!AdressdatenID
Set rs2 = dB.OpenRecordset("SELECT * FROM ProtokollT WHERE False", dbOpenDynaset) 'rs2 füllt die Protokolldatei
With rs2
.AddNew
!ProtokollTypID = 1
!AdressdatenID = vAdressdatenID
!To = rs!Email
!Subject = Me!txtBetreff
!Body = Me!txtInhalt
For l = 0 To Me!lstAnlagen.ListCount - 1 'Loop für Archivdatei
vAttachments.Add Me!lstAnlagen.ItemData(l) 'LAUFZEITFEHLER 424
Next l 'Objekt erforderlich
'wie muss ich diesen loop
'aufbauen...analog zu Ablauf rs loop für Email
!Attachments = vAttachments
!TeilnehmerID = vTeilnehmerID
!DateTime = Now ' Feldname DateTime kann kritisch sein, weil reserviertes Wort
.Update
.Close
End With
rs.MoveNext
AnzahlEmail = AnzahlEmail + 1
Loop
MsgBox " " & AnzahlEmail & " " & "Email(s) wurden versendet und protokolliert"
Set rs = Nothing
Set rs2 = Nothing
Set dB = Nothing
End Sub
Ich habe eine Vermutung:
Im Ablauf rs werden DATEIEN in die Email gehängt (Attachments.Add Me!lstAnlagen.ItemData(l))
Im Ablauf rs2 sollen DATEIPFADE in die Protokolldatei geschrieben werden...
Ich kann das aber leider inhaltlich/programmiertechnisch nicht lösen...
Grüße aus Lüneburg
Harry
Zitat von: Umbauwfb am Februar 04, 2022, 08:01:39im nachfolgenden Code habe ich im Ablauf für rs2 einen zusätzlichen Loop mit der Variablen vAttachments
eingebaut...die Konstruktion ist fehlerhaft und ich erhalte die Fehlermeldung "Laufzeitfehler 424: Objekt erforderlich"
Ja, und?
vAttachments ist ein Variant, der nie mit irgendeinem Wert initialisiert wurde. Mir ist unklar was du damit genau erreichen willst.
Was ist die Spalte Attachments in deiner Tabelle?