今回は、 非表示シート を一括 再表示 する Excel VBA の ツール を作ってみたのでシェアしますね。
こんにちは、ゆう(@ProgYuki)です。
Excelのシートを非表示にすることってないですか?
シートが増えてきて見にくいから、使わないシートをとりあえず非表示にしとこっみたいな場面ですね。
ただ、非表示シートってリスクもかなり高くて、
「クライアントに送った資料に非表示シートを残したままでした、、、」
みたいなことが起きたら、機密情報が含まれてる場合があったりして、かなり問題になると思います。
また、自分で作成したファイルならまだ気づくと思うんですけど、他者が作成した非表示シートというトラップが含まれたファイルを気付かずに編集して送ってしまってもこちらの責任になってしまいますね。
普通は、外部に送付前に「ドキュメント検査」という機能でチェックはすると思うのですが、非表示シートが見つかっても、使ってるシートの計算元のデータを非表示シートから持ってきてる可能性もあるので、むやみに削除はできないですよね。
で、一旦非表示シートを全て再表示しよう!ということになるわけですが、ここで問題なのが、
シートの再表示って一つずつしかできねぇぇ!!!
ってことです。
これとんでもなく面倒じゃないですか?
一つずつ右クリックして、再表示を押して、シートを選択して、OK押して、、、みたいな
私のような面倒くさがりな人間には苦痛な作業でしかないです。
ということで、VBAを使ってマクロツールを作ってみました!
ツールと言ってもとても簡単に作れました。
私と同じようなニーズがある方やVBAの勉強してみたい方は、この記事内にコードも全表示しているので、参考にしていただければと思います。
非表示シート を一括 再表示 する VBA マクロ ツール
マクロ ツール の機能、使用用途、使い方
機能
このツールの機能は、
現在開いている全てのワークブックの全ての非表示ワークシートを再表示する
というものです。
使用用途
使用用途は、想定としては
- 非表示シートがないかチェック
- 非表示シートを再表示する手間を省力化
てな感じです。
使い方
コードをコピーする場所やプログラムの起動の仕方は後ほど説明しますが、使い方としては、
- 非表示シートを再表示したいワークブックを開いた状態で
- VBAプログラムを起動すると
- 現在開いてる全てのワークブックの全てのワークシートが表示される
という感じです。
画像つきで示すと、
①非表示シートを再表示したいワークブックを開いた状態で
例として、Sheet1, 2, 3が非表示の状態になっていて、これを全て再表示したいという状況です。
②VBAプログラムを起動すると
起動の仕方はいろいろとあります。
ご自身でも調べてみると良いと思いますが、一番わかりやすい方法としては、
「開発」→「マクロ」
と進むと実行できるマクロの一覧が表示されるので、今回は「showAllSheets」という名前にしているので、それを選択して「実行」を押せば実行されます。
③現在開いてる全てのワークブックの全てのワークシートが表示される
非表示になっていたSheet1, 2, 3が全て表示されているのが確認できると思います。
うまくできましたかね?
もし、何かエラー等があれば、コメントかTweetでご連絡いただけると幸いです。
VBA コードの表示
コードの全文は下記の通りです。
Sub showAllSheets() Dim wb As Workbook Dim sh As Worksheet For Each wb In Workbooks For Each sh In wb.Worksheets sh.Visible = True Next sh Next wb End Sub
今回のコードはとてもシンプルです。
1つずつ開いてるワークブックを見ていきながら、各ワークブックにあるワークシートを1つずつ見ていって、Visible=true(表示)にするという二重ループになってます。
普段は処理高速化のためのコードも書いてますが、見にくくなると思ったので省いてみました。処理高速化のためのコードは、他のツール紹介の記事で書いてるので、気になる方は下記の記事を参考にされてみてください。
ちなみに
- どこにコードをコピーすれば良いのか
- VBAマクロを実行する上での注意点
についても上記の記事で詳しく書いているので、そちらを参考にされてください。
この記事もツール紹介の記事ですが、「VBA プログラムの表示」の項目の後に詳しいコピーの仕方や注意点について書いてます。
ということで本日は以上になります。
私もVBA含めプログラミングを学習中の身なので、
「もっとこうした方が効率的に書けるよ!」
「こんな業務効率化したいんだけど、VBAでできるかな?」
など、ご指摘やアイディアなどをいただけると嬉しいので、コメントやいただけると幸いです!
Excel VBAを独学したい方向けに記事を書きましたので、興味がある方はこちらもご参考にされてみてください
それでは、本日もお読みいただきありがとうございました。
Twitter(@ProgYuki)でも情報発信しているので、ぜひフォロー、いいね、RT等お願いします!
ゆう