删除工作簿中的所有查询

Delete all queries in a workbook

我正在尝试编写一个子程序来删除工作簿中的所有查询。我有以下代码:

Dim CN As Variant
Dim qTable As QueryTable



For Each CN In ThisWorkbook.Connections
    CN.Delete
Next CN

 For Each qTable In Sheets("Property Extract 1").QueryTables
qTable.Delete
Next qTable'

连接删除工作正常,但查询仍然存在。对如何删除工作簿中的所有查询有任何想法吗?

我打算复制 2 或 3 张表的查询删除。

感谢

只需添加另一个循环来遍历工作表。

Dim cn
Dim qt As QueryTable
Dim ws As Worksheet
For Each cn In ThisWorkbook.Connections
    cn.Delete
Next
For Each ws In ThisWorkbook.Worksheets
    For Each qt In ws.QueryTables
        qt.Delete
    Next
Next ws

编辑: 如果您使用查询向导添加,那么您可能需要修改下面的代码。

Dim cn
Dim qt As QueryTable
Dim lo As ListObject
Dim ws As Worksheet
For Each cn In ThisWorkbook.Connections
    cn.Delete
Next
For Each ws In ThisWorkbook.Worksheets
    For Each qt In ws.QueryTables
        qt.Delete
    Next qt
    On Error Resume Next 'Ignore error if there's no query in table.
    For Each lo In ws.ListObjects
        lo.QueryTable.Delete
    Next lo
    On Error Goto 0
Next ws

首先,除非您使用 Excel 2016/365,否则无法从 VBA 中删除 PQ 查询。即使安装了 add-on,PQ 在早期版本中也不会暴露给 VBA。如果您有 Excel 的正确版本,您可以像清除连接一样删除 PQ 查询本身:

Dim pq As Object
For Each pq In ThisWorkbook.Queries
    pq.Delete
Next

我 Excel 2016 我能够 select 通过按住 CTRL 键并在“工作簿查询”窗格中单击每个查询。然后 right-click --> 删除.

清除活动工作簿中的所有连接,没有任何错误。您必须将对象转换为字符串才能删除所有连接

Sub ClearQueries()
    Dim pq As Object
    Dim q As String
    For Each pq In ThisWorkbook.Queries
        q = pq
        ActiveWorkbook.Queries(q).Delete
    Next
End Sub