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

Excel カスタマイズ

スポンサーリンク

※少し改良した記事を追加しました。

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

はじめに:シートを安全に切り離したい

今回の記事で、メインとして紹介したいのは、Excelブックの中にあるシートを安全に切り離す方法だ。
たとえばExcelブックに10個のシートが含まれてるけど、その中で特定の1個のシートだけを抜き出して使いたいという場面は多い。

そういうとき、
=シート01!A1 + シート03!B1 + シート05!D1
みたいに他のシートとの繋がりがある計算式が入っていたりすると、その計算式を外しておかないとシート中の数値とかが変わったりエラーになってしまうことがある。

それを確実に防いで安全にシートを切り離す方法は、多くの人が知らないはずだし、実際マクロをちょっと使わないと難しい。
今回の記事では、それをお手軽にやる方法を紹介するので、これを取り入れれば日常のExcelの作業効率を大幅に向上できるだろう。

リンクを解除するマクロ

Excel「リンクの編集」コマンドでリンクをチェックしておこう

まず、Excelにおけるリンク解除の話から。
上記の記事でも触れたのだが、Excelで、他のブックを参照するリンクがある計算式というものは厄介で、標準機能だけでは外しきれないことが多い。

そこで、次に示すようなマクロを個人用マクロブックに入れておき、リンク解除においては使用することが望まれると思う。

途中にある「appSet」「appReset」というやつについては、こちらを参照。

Excel 個人用マクロブック(Personal.xlsb) 最初に必ず入れておく高速化用コード

そんでメインとなるのは「Sub breakLinks()」ってやつですけど、ぶっちゃけこのマクロ自体はまんま他所からのパクリである。

そんなものを臆面もなく書いているが、それというのも私は、この「Sub breakLinks()」を単体で使うことがあまりないからだ。

リンクを解除した上で、シートを切り離すマクロ

私はこのリンク切断マクロを、次に示すbreakLinksAndSheetCopyというマクロにくっつけて頻繁に使用している。

ちょっと解説すると、
最初に「ActiveWindow」というのが出てくるが、ユーザが複数シートを同時にShiftボタンとかで選択している場合に、それらを指定するには「ActiveWindow.SelectedSheets」としなければならない。

単一のシートなら「ActiveSheet」とシートを指定するのでいいのだけれど、複数シートだと「ActiveWindow」とまずウインドウを指定しないといけないのが紛らわしいところ。

そんでそれらユーザが選択した複数シートを、新しいブックに切り離した上で、breakLinksでリンクを切断するってだけの短いマクロが、上記の「breakLinksAndSheetCopy」だ。

Excel 上書き防止のうえで編集するには

別の記事でも取り上げたけど、Excelのブックを上書き保存不可能な状態にして編集するっていうのは、多くの作業において有効な手段となる。

そしてこの「breakLinksAndSheetCopy」マクロにより、例えば集計シートとマスタシートがあったとき、マスタシートの方だけを安全に切り離して別ブックとして扱うことが出来る。

その別ブックを煮ようが焼こうが、元のブックに何の影響も心配しなくて良い。
冒頭で述べた、Excelブックの中にあるシートを安全に切り離す方法ってやつだ。

このマクロも、是非とも個人用マクロブックに追加しておくと良い。

私はこの「breakLinksAndSheetCopy」マクロを1日に10回くらいは使っている。これをすれば、Excelファイルの扱いの安全度が格段に上がるからね。

個人用マクロブックとかについては、ここを展開。

オリジナルのマクロをリボンに追加する方法はこちら

個人用マクロブックについては、こちらこちらで述べています。

 

スポンサーリンク