Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Umbauwfb am Februar 04, 2022, 08:01:39

Titel: Laufzeitfehler 424: Objekt erforderlich
Beitrag von: Umbauwfb am Februar 04, 2022, 08:01:39
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
Titel: Re: Laufzeitfehler 424: Objekt erforderlich
Beitrag von: Umbauwfb am Februar 04, 2022, 08:59:32
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
Titel: Re: Laufzeitfehler 424: Objekt erforderlich
Beitrag von: PhilS am Februar 04, 2022, 11:33:18
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?