只需使用 DoCmd.TransferSpreadsheet 的 Range 参数,您将其留空并添加一个感叹号来指定整个使用的工作表范围:
DoCmd.TransferSpreadsheet acImport, 10, tbl, url, True, "mySheetName!"
' WITH VARIABLE
sht = "mySheetName"
DoCmd.TransferSpreadsheet acImport, 10, tbl, url, True, sht & "!"
或者,使用以下格式的 SQL 查询,其中使用 $ 而不是 ! 用于工作表:
INSERT INTO [Table]
SELECT *
FROM [Excel 12.0 Xml;HDR=Yes;Database=C:\Path\To\Workbook.xlsx].[SHEET1$];
然后在 Access VBA 中使用CurrentDb.Execute 调用它,从而避免重置警告:
CurrentDb.Execute "DELETE FROM " & tbl & ";", dbFailOnError
CurrentDb.Execute "INSERT INTO [" & tbl & "] " & _
"SELECT * " & _
"FROM [Excel 12.0 Xml;HDR=Yes;Database=" & url & "].[" & sht & "$];", dbFailOnError