ブック内のすべてのクエリを削除するサブを作成しようとしています。私は以下のコードを持っています:
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枚複製することを計画していました。
ありがとう
まず、Excel 2016/365を使用していない限り、VBAからPQクエリを削除することはできません。アドオンがインストールされている場合でも、以前のバージョンではPQはVBAに公開されません。適切なバージョンのExcelを使用している場合は、接続をクリアするのと同じように、PQクエリ自体を削除できます。
Dim pq As Object
For Each pq In ThisWorkbook.Queries
pq.Delete
Next
シートをループするために別のループを追加するだけです。
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