如何在使用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
方法删除表。