我已尝试将访问VBA中的数据从2011/12/04循环到2011/12/10。但是当我尝试运行代码时会出现“3075”错误。我无法弄清楚我的代码问题在哪里。希望你能帮助我!
Private Sub createQry()
'Create Query in Access
Dim db As DAO.Database
Set db = CurrentDb
Dim qdf As DAO.QueryDef
Dim newSQL As String
For d = DateSerial(2011, 12, 4) To DateSerial(2011, 12, 10)
newSQL = " SELECT TAXIDATA.HkDt, TAXIDATA.DevID, TAXIDATA.HkTm, TAXIDATA.Lat, TAXIDATA.Lon, TAXIDATA.FlagDown" 'sql code
newSQL = newSQL & "FROM TAXIDATA"
newSQL = newSQL & "WHERE(((TAXIDATA.HkDt) = #" & d & "#))"
newSQL = newSQL & " ORDER BY TAXIDATA.HkDt, TAXIDATA.DevID, TAXIDATA.HkTm; "
Set qdf = db.CreateQueryDef(d, newSQL) 'd = name of the query
'Export the Access query into excel
Dim XL As Excel.Application
Dim wbTarget As Workbook
Dim queryD As QueryDef
Dim RecordA As Recordset
Set queryD = CurrentDb.QueryDefs(d)
Set RecordA = queryD.OpenRecordset()
Set XL = CreateObject("Excel.application")
Set wbTarget = XL.Workbooks.Open("C:\Users\user\Desktop\Data\123.xlsx") ' location of the workbook
wbTarget.Worksheets(d).Cells.ClearContents ' name of the worksheets in the workbook
wbTarget.Worksheets(d).Cells(1.1).CopyFromRecordset RecordA
wbTarget.Save
wbTarget.Close
Set wbTarget = Nothing
Set XL = Nothing
Set queryD = Nothing
Debug.Print Days 'Prints the "Days" value in the immediate window.
Next d
End Sub
答案 0 :(得分:0)
这与for
循环无关。
可能的罪魁祸首是您的查询:
将newSQL分配更改为:
newSQL = " SELECT TAXIDATA.HkDt, TAXIDATA.DevID, TAXIDATA.HkTm, TAXIDATA.Lat, TAXIDATA.Lon, TAXIDATA.FlagDown" 'sql code
newSQL = newSQL & " FROM TAXIDATA"
newSQL = newSQL & " WHERE TAXIDATA.HkDt = #" & Format(d, "yyyy/MM/dd") & "#"
newSQL = newSQL & " ORDER BY TAXIDATA.HkDt, TAXIDATA.DevID, TAXIDATA.HkTm; "
这修复了以下错误:
yyyy/MM/dd
或MM/dd/yyyy
,未指定将导致错误,具体取决于区域设置请下次尝试调试您的SQL,如果您有很多错误,我可能会错过错误。