既然你已經在談論在Excel中使用VBA代碼,你可能不反對在訪問一個VBA解決方案。
比方說,你的表(或查詢)被稱爲[ZoneErrors。您可以在Access中創建類似下面的VBA函數,然後從Access宏調用它:
Public Function ExportZoneErrors()
Dim cdb As DAO.Database, rst As DAO.Recordset, qdf As DAO.QueryDef, _
excelFileName As String
Set cdb = CurrentDb
Set rst = cdb.OpenRecordset("SELECT DISTINCT [ZONE] FROM [ZoneErrors]", dbOpenSnapshot)
Do While Not rst.EOF
On Error Resume Next
cdb.QueryDefs.Delete "tmpErrorsForJustOneZone"
On Error GoTo 0
Set qdf = cdb.CreateQueryDef("tmpErrorsForJustOneZone", _
"SELECT * FROM [ZoneErrors] WHERE [ZONE]='" & rst!ZONE & "'")
qdf.Close
cdb.QueryDefs.Refresh
' build Excel file name (probably needs to be fancier in production)
excelFileName = "Errors for " & rst!ZONE & ".xlsx" ' e.g., "Errors for ZONE 1.xlsx"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "tmpErrorsForJustOneZone", excelFileName
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Set cdb = Nothing
End Function