我正在使用VBA将ListObject添加到Excel 2007工作簿中。 ListObject后面要有一个QueryTable,链接到Access数据库。代码如下:

Dim l As ListObject
Dim c As ADODB.Connection
Dim r As ADODB.Recordset

Set c = New ADODB.Connection
c.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=myAccessDatabasePath;Persist Security Info=False;"

Set r = New ADODB.Recordset
r.Open "Select * From myTable", c

Set l = ActiveSheet.ListObjects.Add(xlSrcQuery, r, True, xlYes, Range("A1"))
l.QueryTable.Refresh False

'this line causes an error
l.QueryTable.Refresh False


本质上,问题是我不能多次刷新该表。 “数据”和“表设计”功能区上的“刷新”按钮均为灰色。我尝试了类似的代码而不使用Listobjects(即只是QueryTables)并得到了相同的问题。我尝试刷新基础连接对象,然后再次遇到相同的问题。

我整个上午都在Google搜寻,但都没有结果。

这是错误,故意设计的行为,还是(很可能是)我在做一些愚蠢的事情?

提前谢谢了,

史蒂夫

最佳答案

好的,我知道了。宏记录器(感谢Dick的建议)实际上只用了一次。

Dim s As Worksheet
Dim l As ListObject

Set s = ActiveSheet
Set l = s.ListObjects.Add(xlSrcExternal, "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Data Source=myDatabasePath;", True, xlYes, Range("A1"))

l.QueryTable.CommandType = xlCmdTable
l.QueryTable.CommandText = "mytable"

l.QueryTable.Refresh False

'this now works!
l.QueryTable.Refresh False

09-27 22:40