删除工作簿中的所有查询
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
我正在尝试编写一个子程序来删除工作簿中的所有查询。我有以下代码:
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