Excel 查询表刷新仅有效一次

标签 excel vba oledb

我正在使用 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)的情况下尝试了类似的代码,但遇到了同样的问题。我尝试刷新底层连接对象,但再次遇到同样的问题。

我花了一上午的时间在谷歌上搜索,但没有结果。

这是一个错误、设计行为还是(很可能)我做了一些愚蠢的事情?

提前非常感谢,

史蒂夫

最佳答案

好的,我已经开始工作了。宏记录器(感谢迪克的建议)实际上曾经很有用。

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

关于Excel 查询表刷新仅有效一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16460552/

相关文章:

excel - 如何在3D公式中勾勒出多个列和选项卡的范围?

excel - 倒计时无法取消

oracle - OraOLEDB.Oracle 未显示在 SQL Server Management Studio 提供程序中

excel - 使用 VBA 将数据从 CA Clarity 导入 Excel

python - openpyxl - 使用列表填充列

VBA 代码未退出列表 (MS Word)

vba - 需要改变这个宏中的一点小东西

asp.net-mvc - 使用 ASP.NET MVC 访问 Windows 搜索索引

c# - UPDATE 语句中的语法错误

excel - 如何对列公式求和