Excel VBA で Power Query クエリとデータ接続を一括削除する方法

目次

概要

Power Query を活用しているワークブックでは、試行錯誤の過程で不要なクエリや接続情報が残ることがございます。不要オブジェクトを手動で削除する手間を省くために、VBA から QueriesConnections をまとめて削除するマクロをご紹介いたします。定期的なメンテナンスにご活用ください。


前提条件

項目内容
対応 ExcelMicrosoft 365/2016 以降
実行場所削除対象となるブック(ThisWorkbook)
参照設定追加不要(標準機能のみで動作)

サンプルコード

以下のコードを標準モジュールに貼り付けて実行してください。変数名やロジックは著作権の観点から変更してあります。

Sub ClearPowerQueryObjects()

    Dim wb As Workbook          ' 対象ブック
    Dim idx As Long             ' ループ用カウンタ
    
    Set wb = ThisWorkbook       ' 必要に応じて ActiveWorkbook に変更可

    '----- クエリを削除 -----
    For idx = wb.Queries.Count To 1 Step -1
        wb.Queries(idx).Delete
        DoEvents                ' 応答を確保
    Next idx

    '----- データ接続を削除 -----
    For idx = wb.Connections.Count To 1 Step -1
        wb.Connections(idx).Delete
        DoEvents
    Next idx

End Sub

コード解説

内容
4–6wb に対象ブックを格納し、後続の処理を簡潔にしています。
9–12wb.Queries.Count から逆順にループすることで、削除時のインデックスずれを回避しています。
15–18Connections プロパティについても同様に逆順で削除し、ブックに残るすべての接続を一括消去いたします。

応用例

目的実装例
特定名前のクエリのみ削除If wb.Queries(idx).Name Like "test_*" Then … を条件に追加
削除前に確認ダイアログを表示If MsgBox("削除しますか?", vbYesNo) = vbNo Then Exit Sub
削除ログを残すDebug.Print wb.Queries(idx).Name でイミディエイトウィンドウへ出力

よくある質問

質問回答
他ブックのクエリを削除できますか。Set wb = Workbooks("ファイル名.xlsx") のように対象を指定すれば可能です。
削除後に参照切れエラーは発生しませんか。クエリや接続を参照するテーブルやピボットが存在する場合、更新時にエラーとなります。削除前に依存関係をご確認ください。

まとめ

不要な Power Query クエリとデータ接続を VBA で一括削除することで、ワークブックの整理とパフォーマンス改善を同時に達成できます。まずはテスト用ブックで動作を確認し、業務ファイルへ適用していただければ幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次