在其最基本的形式中,您正在寻找的是一些像这样的 VBA 代码:
Public Function DumpTempsByCaseToExcel() As Boolean
Dim cdb As DAO.Database, rst As DAO.Recordset, qdf As DAO.QueryDef
Const OutPath = "C:\Users\Gord\Desktop\"
Const DataTableName = "Temperatures"
Const TempQueryDefName = "zzzTempQuery"
Set cdb = CurrentDb
Set rst = cdb.OpenRecordset("SELECT DISTINCT caseID FROM [" & DataTableName & "]", dbOpenSnapshot)
Do While Not rst.EOF
On Error Resume Next
cdb.QueryDefs.Delete TempQueryDefName
On Error GoTo DumpTempsByCaseToExcel_Error
Set qdf = cdb.CreateQueryDef(TempQueryDefName, "SELECT * FROM [" & DataTableName & "] WHERE caseID=""" & rst!caseID & """")
Set qdf = Nothing
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, TempQueryDefName, OutPath & rst!caseID & ".xlsx"
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Set cdb = Nothing
DumpTempsByCaseToExcel = True
Exit Function
DumpTempsByCaseToExcel_Error:
MsgBox Err.Description, vbCritical, "Runtime error " & Err.Number
DumpTempsByCaseToExcel = False
End Function
假设:
您的 [caseID] 值是字母数字。如果它们是数字,那么您将不得不摆弄构建 WHERE 子句的代码中的引号。
您的 [caseID] 值可用作有效的 Windows 文件名。如果它们包含在 Windows 文件名中无效的字符,那么您必须使用类似Replace()
函数的东西来删除它们或将它们映射到其他东西。
您的目标文件夹是空的,或者至少不包含与您将创建的文件同名的文件。编写的示例代码可能会覆盖现有文件。