将访问查询导入到Excel表格中时出现“无效的过程调用或参数”

我有一个Excel数据透视表和图表链接到一个Excel表格。 我想创build一个button,当按下时,删除表中的任何数据,并用访问数据库中保存的查询的更新数据replace它。 我已经写了下面的代码,但是当我运行该过程时,出现“无效的过程调用或参数”错误。 有谁知道我哪里出了错?

'button on excel form runs procedure to remove current data in table then 'import data from query in MS access database Sub ImportData() Call CleanTheTable("MMPres_MainData", "MainData") Call ImportAccessData("qry_MMPres_Main", "MMPres_MainData", "MainData" End Sub 'procedure finds database file and imports query into excel table Sub ImportAccessData(qry As String, sht As String, tbl As String) On Error GoTo ErrorHandler Const dbLoc As String = "D:\AccessPractice\CTDB\CardiothoracicDB_v2_Current.accdb" Dim db As DAO.Database Dim rs As DAO.Recordset Dim bk As Workbook Dim Wsht As Worksheet Set bk = ActiveWorkbook Set Wsht = bk.Worksheets(sht) Set db = DBEngine.OpenDatabase(dbLoc) Set rs = db.OpenRecordset(qry, dbOpenSnapshot) Wsht.ListObjects(tbl).Range("A1").CopyFromRecordset (rs) rs.Close Set rs = Nothing db.Close Set db = Nothing Set Wsht = Nothing Set bk = Nothing Exit Sub ErrorHandler: Application.StatusBar = "" MsgBox ("Error: " & Err.Number & " " & Err.Description) rs.Close Set rs = Nothing db.Close Set db = Nothing Set Wsht = Nothing Set bk = Nothing End Sub 

假设你已经为DAO设置了必要的库引用,你得到的错误是在这一行:

 Wsht.ListObjects(tbl).Range("A1").CopyFromRecordset (rs) 

将其更改为:

 Wsht.ListObjects(tbl).Range(2, 1).CopyFromRecordset rs 

也有可能:

 Wsht.ListObjects(tbl).HeaderRowRange.Offset(1).CopyFromRecordset rs 

综上所述:

1-删除(rs)括号

2-不要覆盖表头(这是第1行),从第二行开始复制logging集。

3,方法ListObject Range有点令人困惑,它返回表的整个范围,但不能直接送入“A1风格”的引用,它更像工作表的Cells方法。