web-dev-qa-db-ja.com

ブック内のすべてのクエリを削除する

ブック内のすべてのクエリを削除するサブを作成しようとしています。私は以下のコードを持っています:

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枚複製することを計画していました。

ありがとう

4
Chris

まず、Excel 2016/365を使用していない限り、VBAからPQクエリを削除することはできません。アドオンがインストールされている場合でも、以前のバージョンではPQはVBAに公開されません。適切なバージョンのExcelを使用している場合は、接続をクリアするのと同じように、PQクエリ自体を削除できます。

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

シートをループするために別のループを追加するだけです。

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

編集:クエリWizardを使用して追加する場合は、以下のコードを変更する必要があります。

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
1