目次
概要
Power Query を活用しているワークブックでは、試行錯誤の過程で不要なクエリや接続情報が残ることがございます。不要オブジェクトを手動で削除する手間を省くために、VBA から Queries と Connections をまとめて削除するマクロをご紹介いたします。定期的なメンテナンスにご活用ください。
前提条件
項目 | 内容 |
---|---|
対応 Excel | Microsoft 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–6 | wb に対象ブックを格納し、後続の処理を簡潔にしています。 |
9–12 | wb.Queries.Count から逆順にループすることで、削除時のインデックスずれを回避しています。 |
15–18 | Connections プロパティについても同様に逆順で削除し、ブックに残るすべての接続を一括消去いたします。 |
応用例
目的 | 実装例 |
---|---|
特定名前のクエリのみ削除 | 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 で一括削除することで、ワークブックの整理とパフォーマンス改善を同時に達成できます。まずはテスト用ブックで動作を確認し、業務ファイルへ適用していただければ幸いです。