【发布时间】:2018-02-27 17:02:05
【问题描述】:
我已尝试在访问 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
【问题讨论】:
-
错误3075出现在哪里?如果是在执行查询时,请尝试将
d格式化为日期格式。 -
FROM和WHERE前面需要一个空格,例如ORDER BY。
标签: vba loops ms-access for-loop