Excel VBA PowerQueryも含めリンクを解除してシートを切り離すマクロ

Excel マクロ、VBA

スポンサーリンク

はじめに

以前の記事で、Excelブックの中のシートを、他のExcelファイル等とのリンクを切り離した上で、新規Excelブックにコピーするマクロを取り上げた。

Excel VBA リンクを解除するマクロ→リンク解除した上でシートを切り離す 個人用マクロブックに組み込んで使おう

ただ、PowerQueryを多用するようになった今、同記事に書いただけのマクロでは不足になった。
他愛のない数行のコードを追加するだけで良いのだけど、ちょっとした記事リメイクと、自分の備忘のために、改良したマクロの記事を書いてみる。

PowerQuery入りExcelシートのリンク解除をしたい

PowerQueryを使ったExcelファイルの大半は、他ファイルへのリンクを使用して作られる。

他人にファイルを渡す場合は、そういうリンクが残ったままの状態で渡すと、何か操作したら「リンク元が見付からない」というエラーが出るなどトラブルの元だ。

自分だけで利用する場合も、あれこれ別ファイルにアクセスしたり、そのデータを加工したりするPowerQueryのロジックなんかはもう要らないから、単なるデータのテーブルにしてしまって身軽にしたいということは多い。

以前の記事で書いたマクロは次の通りだ。

しかし、PowerQueryを含むExcelシートを上記マクロで切離しても、「クエリと接続」ウインドウで確認すれば分かるがPowerQueryは削除されない。

このPowerQueryが1個くらいならDeleteボタンで削除すれば良いが、フォルダごと取り込む処理などではPowerQueryは多数できあがるので、手作業で削除したくはない。

PowerQuery エディターの基礎

新しいソースコード

そこで、元のマクロに、「クエリ」全般を削除する記述をちょこっと加えるだけで良い。

ただこれだけ。これを追加して、Excelシートをリンク解除した上で切り離すマクロは下記のようになる。

まあ他にも、条件付き書式とか入力規則、名前定義などに含まれるリンクも解除しようとなると、複雑になっていくのだけど、ひとまず手軽にやれるのはこんなところ。

スポンサーリンク