Ich versuche, mehrere Datensätze in die jeweils neue Excel-Datei zu exportieren.VBA-Laufzeitfehler 3021 - Kein aktueller Datensatz
Public Sub MultipleQueries()
Dim i As Integer
Dim Mailer As Database
Dim rs1 As Recordset
Dim rs2 As Recordset
Dim qdf As QueryDef
Set Mailer = CurrentDb
Set rs1 = Mailer.OpenRecordset("MailerData")
Set qdf = Mailer.CreateQueryDef("CCspl", "PARAMETERS CostCentre Text (255);SELECT MonthlyFteData.CostCentre, MonthlyFteData.EmpName, MonthlyFteData.Workload FROM MonthlyFteData WHERE (((MonthlyFteData.CostCentre)=[CostCentre]))")
For i = 0 To rs1.RecordCount - 1
qdf.Parameters("CostCentre") = rs1.Fields("CostCentre")
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Add
Set oSheet = oBook.Worksheets(1)
Set rs2 = qdf.OpenRecordset()
With rs2
oSheet.Range("A2").CopyFromRecordset rs2
oBook.SaveAs "C:\Users\807140\Downloads\" & rs2.Fields("CostCentre") & ".xlsx"
rs2.Close
oExcel.Quit
Set oExcel = Nothing
End With
rs1.MoveNext
Next i
qdf.Close
Set qdf = Nothing
rs1.Close
End Sub
Aber ich bekomme die Runtime Error 3021 - Kein aktueller Datensatz
ich die
substituierteoSheet.Range("A2").CopyFromRecordset rs2
oBook.SaveAs "C:\Users\807140\Downloads\" & rs2.Fields("CostCentre") & ".xlsx"
mit
Debug.Print .RecordCount
Und ich bekomme tatsächlich die entsprechende Anzahl der Datensätze für rs2.
Wie kann ich meinen Code beheben, um den Fehler zu beheben?
Was ist das für Record Rs1 weggehen? Auch nur ein Gedanke. Sie sollten Ihre Variablen nicht innerhalb der ersten for-Schleife abmildern müssen. –
Recordcount war eine interne Schleife und ich bekam eine für jede RS2-Schleife. Das war die tatsächliche Anzahl der Datensätze in jedem von ihnen. –