如何在使用DoCmd.TransferSpreadsheet方法从电子表格导入数据时在Access中覆盖表格?

我不知道如何使用DoCmd.TransferSpreadsheet方法从Excel电子表格导入数据时,如何覆盖Access中的当前表。 下面的代码将导入的数据附加到table1而我想用导入的数据覆盖它。

  Sub AccImport() Dim s As Long: s = ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row Dim acc As New Access.Application acc.Visible = True acc.OpenCurrentDatabase "F:\dbs\myDB.accdb" acc.DoCmd.TransferSpreadsheet _ TransferType:=acImport, _ SpreadSheetType:=acSpreadsheetTypeExcel12Xml, _ TableName:="table1", _ Filename:=Application.ActiveWorkbook.FullName, _ HasFieldNames:=True, _ Range:="Sheet1$A1:P" & s acc.CloseCurrentDatabase acc.Quit Set acc = Nothing End Sub 

在调用TransferSpreadsheet之前,放弃来自table1的现有数据:

 acc.OpenCurrentDatabase "F:\dbs\myDB.accdb" acc.CurrentDb.Execute "DELETE FROM table1;", 128 ' dbFailOnError = 128 acc.DoCmd.TransferSpreadsheet ... 

如果目标表的结构必须更改为接受来自TransferSpreadsheet新数据,则可以先移除该表,并允许TransferSpreadsheet使用新结构重新创build它。 你可以执行DROP TABLE table1; 或使用DoCmd.DeleteObject方法删除表。