毎日、細かな数字や大事な顧客データを扱っていると、「もし操作を間違えて、原本を壊してしまったらどうしよう…」と胃がキリキリすること、ありませんか?
その「慎重さ」や「ネガティブな想像力」は、社会人として最強の強みになりますが、その不安を抱え続けるのはしんどいですよね。
今日は、そんな人の不安を技術(VBA)で「仕組み」に変え、心を軽くする方法をお伝えします。
実は私も、元々は超がつくほどの心配性。「このボタン押して大丈夫かな?」「データ消えないかな?」と、毎回ビクビクしながらExcelを触っていた時期がありました。
だから、あなたの「怖い」という気持ち、よくわかります。そして「怖い」からこそ、人は「自動化」するんです。
今日は、右クリックメニューを開いてポチポチ操作することなく、たった1秒で、しかも100%正確にシートをコピーする方法を伝授します。
これで、「原本を壊すかも」という不安から卒業しましょう。
なぜ、手作業のコピーは怖いのか?
通常、シートをコピーする場合、以下の手順を踏みますよね。
- シート見出しを右クリック
- 「移動またはコピー」を選択
- 「コピーを作成する」にチェックを入れる(ここを忘れがち!)
- 挿入先を選んでOK
これ、最低でも4クリック必要です。毎日10回やれば40回。1ヶ月(20営業日)で800回も、ミスのリスクに晒されていることになります。
VBAを使えば、これをクリック1回(またはショートカットキー)で終わらせられます。リスクはゼロです。
コピー&ペーストで使える魔法のコード
今回は、実務で最もよく使う2つのパターンを用意しました。
パターンA:バックアップ用に「今のシートを一番後ろにコピー」したい時
「作業前に、今の状態を複製して残しておきたい!」という時に使います。課やチームで共有しているファイルだとこういう時、よくありますよね。
Sub CopySheetToEnd()
' 目的:アクティブなシートをコピーして、ブックの最後尾に追加する
Dim ws As Worksheet
Set ws = ActiveSheet ' 今見ているシートをセット
ws.Copy After:=Worksheets(Worksheets.Count)
' 分かりやすいように、コピーしたことが伝わるメッセージを出す(不要なら消してOK)
MsgBox "シートを末尾にコピーしました!", vbInformation
End Sub
After:=Worksheets(Worksheets.Count) が「今あるシートの枚数を数えて(Count)、その一番後ろ(After)に置いてね」と命令しています。これで、絶対に他のシートの間に挟まることはありません。
パターンB:顧客送付用に「今のシートを新しいブックへコピー」したい時
「このシートだけをお客様にメールしたい。でも他のシートは見せられない…」という時に最適な方法です。
Sub CopyToNewBook()
' 目的:アクティブなシートを新しいブック(空のExcel)としてコピーする
ActiveSheet.Copy
' ここでは「保存」まではしていませんが、新しいブックが開いた状態になります
MsgBox "新しいブックへコピーしました!名前を付けて保存してください。", vbInformation
End Sub
実は ActiveSheet.Copy とだけ書き、後ろに何も指定しないと、Excelは気を利かせて「あ、新しいブックにしたいのね?」と判断してくれます。
これなら、元のファイルからうっかり余計な情報を漏洩させるリスクを0%にできます。
最後に
「もしこうなったらどうしよう」と先に考えられる方は、裏を返せば「リスク管理能力が高い」ということだと思います。
今回紹介したコードは、数行の短いものです。でも、これが毎日の「ヒヤリ」を一つ減らしてくれるはずです。
積み重ねて一緒に、少しずつ楽をしていきましょう!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント