当我使用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
答案 0 :(得分:1)
在致电TransferSpreadsheet
之前,放弃 table1 中的现有数据:
acc.OpenCurrentDatabase "F:\dbs\myDB.accdb"
acc.CurrentDb.Execute "DELETE FROM table1;", 128 ' dbFailOnError = 128
acc.DoCmd.TransferSpreadsheet ...
如果目标表的结构必须更改为接受来自TransferSpreadsheet
的新数据,则可以先删除该表,然后允许TransferSpreadsheet
使用新结构重新创建它。您可以执行DROP TABLE table1;
或使用DoCmd.DeleteObject
方法删除该表。