각 새 Excel 파일로 여러 데이터 집합을 내보내려고합니다.VBA 런타임 오류 3021 - 현재 레코드 없음
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
는하지만 런타임 오류 3021 얻을 -
내가
Debug.Print .RecordCount
으로
oSheet.Range("A2").CopyFromRecordset rs2
oBook.SaveAs "C:\Users\807140\Downloads\" & rs2.Fields("CostCentre") & ".xlsx"
교체되어 현재 레코드 없음을 그리고 사실에 대한 적절한 레코드 수를받을 수 있나요 rs2.
어떻게 코드를 수정하여 오류를 제거 할 수 있습니까?
각 Rs1에 대한도 RecordCount은 무엇
rs2.Fields("CostCentre")
의? 또한, 그냥 생각. 첫 번째 for 루프 내에서 변수를 Dim 할 필요가 없습니다. –Recordcount가 루프 안에 있었고 각 rs2 루프마다 하나씩 얻었습니다. 각 레코드의 실제 레코드 크기입니다. –