gpt4 book ai didi

vba - 刷新工作簿中的所有查询

转载 作者:行者123 更新时间:2023-12-03 00:25:35 26 4
gpt4 key购买 nike

这适用于 .xls 书籍,但也可以针对 .xlsx 工作簿进行更改吗?或者它们的语法对两者都适用吗?

Option Explicit
Public Sub RefreshQueries()
Dim wks As Worksheet
Dim qt As QueryTable
For Each wks In Worksheets
For Each qt In wks.QueryTables
qt.Refresh BackgroundQuery:=False
Next qt
Next wks
Set qt = Nothing
Set wks = Nothing
End Sub

编辑--所以看来我的语法确实刷新了 .xlsx 工作簿,但不刷新来自 sql server 的查询。如何通过 VBA 刷新它们。

最佳答案

首先,宏在 .xlsx 工作簿中不起作用,因为 .xlsx 工作簿不能包含宏 - 您需要另存为启用宏的工作簿,其中包含扩展名 .xlsm

在 Excel 2007 及更高版本中,用户创建到 SQL Server 数据源(以及其他数据源)的外部数据连接将不会产生 QueryTables 成员,而是产生一个 ListObject,该 ListObject 将拥有可通过 访问的 QueryTable 对象ListObject.QueryTable 属性 - 请参阅 Dick Kusleika 的 answerthis question 。以下代码应刷新两种类型的查询:

Option Explicit
Public Sub RefreshQueries()

Dim wks As Worksheet
Dim qt As QueryTable
Dim lo As ListObject

For Each wks In Worksheets
For Each qt In wks.QueryTables
qt.Refresh BackgroundQuery:=False
Next qt

For Each lo In wks.ListObjects
lo.QueryTable.Refresh BackgroundQuery:=False
Next lo

Next wks

Set qt = Nothing
Set wks = Nothing
End Sub

我以前并不熟悉 ListObject 类型,因此我不知道是否可以在没有 的工作表上使用 ListObject >QueryTable,这可能会导致上述代码出现错误 - 您可能需要检查这一点。

关于vba - 刷新工作簿中的所有查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com