我尝试运行Access函数,该函数从Excel工作簿中的特定选项卡导入数据。到目前为止,我只找到了从工作簿中获取它的方法,但我不知道在哪里指定选项卡。
代码如下,其中tbl是字符串中的Access表,url是Excel工作簿路径。
DoCmd.SetWarnings False
DoCmd.RunSQL ("DELETE * FROM " & tbl & ";")
DoCmd.TransferSpreadsheet acImport, 10, tbl, url, True, ""
DoCmd.SetWarnings True
答案 0 :(得分:1)
只需使用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$];
然后使用CurrentDb.Execute
在Access VBA中调用它,以避免重置警告:
CurrentDb.Execute "DELETE FROM " & tbl & ";", dbFailOnError
CurrentDb.Execute "INSERT INTO [" & tbl & "] " & _
"SELECT * " & _
"FROM [Excel 12.0 Xml;HDR=Yes;Database=" & url & "].[" & sht & "$];", dbFailOnError