PR

 第4回から第9回まで、リスト内の特定のフィールドから重複しないデータを抜き出すためのマクロを取り上げました。「マクロ記録」→「コードの手直し」という段取りで作成・改良していきました。はじめてマクロを作成するときの基本です。こうして作ったマクロも、まだまだ使いやすく改良するための余地はたくさんあります。でも、あまり同じ題材ばかりでも飽きてしまうので(笑)、今回からはまた違ったマクロの作成を通じて、新たなVBAの基本を学んでいくことにしましょう。

 さて、エクセルに限った話ではありませんが、うっかりデータを削除してしまい大変なことに……そんな経験をお持ちの方も多いでしょう。人はついうっかりとミスをしてしまうものという前提で、データのバックアップはとても重要です。そこで今回から数回にわたり、シートを削除する際、同時にシートをバックアップして保存するマクロを作成し、必要なテクニックや考え方を解説していきたいと思います。

作成するマクロの全体像を確認する

 作成するマクロは、削除したシートをバックアップするというものです。エクセルに備わっているシート削除の機能をつかってしまうと、シートをバックアップして保存することができません。そこで、「シートを削除する」のではなく、「新規ブックに移動する」と考え方を切り替えてみましょう。シートを移動してしまえば、もともとのエクセルファイルではシートを削除したのと同様の結果になります。一方移動してきたシートを含む新規のエクセルファイルに適当な名前を付けて保存すれば、バックアップファイルのできあがりというわけです。

メニューバーには「シート削除」というオリジナルメニューを追加しておきます。削除したいシートをアクティブにした状態でこのメニューをクリックすれば、シート削除とバックアップファイルの作成が同時に行われるという使い方のマクロにします(図1~図3)。


図1 この例では4枚のシートがある。先頭の「赤坂店」シートを選択し、「シート削除」メニューをクリックする

10-2.jpg図2 シートを削除していいかを問う確認のメッセージが表示されるので「はい」を選択する


図3 選択されていた「赤坂店」シートが削除された

 このマクロでは、バックアップしたエクセルファイルを元のファイルと同じフォルダに作成するようにしています。シートを削除するマクロを実行後、フォルダを開けば「シート名+削除日時」がファイル名になったブックが保存されます(図4)。

10-4.jpg
図4 保存されたファイルには、削除した「赤坂店」シートが1枚含まれている