我正在尝试编写一个sub来删除工作簿中的所有查询。我有以下代码:
qtyColumn.setFieldUpdater(new FieldUpdater<RowType, String>() {
@Override
public void update(int index, RowType object, String value) {
...
object.setQty(newValue);
grid.redrawRow(index);
}
});
连接删除工作正常,但查询仍然存在。有关如何删除工作簿中的所有查询的任何想法吗?
我打算复制查询删除2或3张。
谢谢
答案 0 :(得分:2)
首先,除非您使用Excel 2016/365,否则无法从VBA中删除PQ查询。即使安装了加载项,PQ也不会在早期版本中暴露给VBA。如果您拥有正确版本的Excel,则可以像清除连接一样删除PQ查询:
Dim pq As Object
For Each pq In ThisWorkbook.Queries
pq.Delete
Next
答案 1 :(得分:0)
只需添加另一个循环即可循环播放工作表。
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
答案 2 :(得分:0)
在Excel 2016中,我可以通过按住CTRL并在“工作簿查询”窗格中单击每个选项来选择全部。然后右键单击->删除。
答案 3 :(得分:0)
清除活动工作簿中的所有连接,没有任何错误。您必须将对象转换为字符串才能删除所有连接
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