删除工作簿中的所有查询

时间:2018-03-06 15:48:33

标签: excel vba powerquery

我正在尝试编写一个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张。

谢谢

4 个答案:

答案 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