【1分で完了】Excel VBAにパスワードをかける方法!勝手に書き換えられる恐怖から卒業して「ミス・ゼロ」の現場を作るコツ

【業務効率化】VBA
スポンサーリンク

「……え、嘘でしょ。なんで動かないの?」

朝一番、意気揚々と業務を始めようとしたとき目に飛び込んできたのは、無情なエラーメッセージ。昨日まで完璧に動いていた自慢のマクロが、誰かの手によって「改造」され、無残な姿に……。

触らないでって言ったのに!」と心の中で叫びたくなりますよね。

実は、Excelシートの保護だけでは、マクロ(VBA)の中身まで守ることはできません。

マクロは、いわば「コンピューターへの命令書」です。この命令書を誰でも書き換えられる状態にしておくのは、鍵をかけずに金庫を置いているような状態になります。誰でも触れる環境は、常にリスクと隣り合わせです。

そこで今回は、大切な努力の結晶であるコードを守り、「修正に追われる無駄な時間」を削減するための、もっとも簡単な防御策をご紹介します。

【業務効率化】VBAの記事を見る 

たった3ステップ!VBAにパスワードをかける手順

専門用語を使わずに言うと、「命令書の入った引き出しにカギをかける」作業です。

  1. VBE(コードを書く画面)を開く
    Excelで Alt + F11 を押します。
  2. プロパティを開く
    画面上部のメニューから「ツール」→「VBAProjectのプロパティ」をクリックします。
  3. パスワードを設定する
    「保護」タブを開き、「プロジェクトを表示用にロックする」にチェックを入れ、パスワードを入力して「OK」を押すだけ!

これで、Excelを一度保存して閉じれば、次に開くときにはパスワードがないと中身が見られなくなります。

【コピペOK】さらに安心!「誰がいつ開いたか」を記録するコード

パスワードで守るだけでなく、「いつ、誰がこのファイルを使ったか」を自動で記録しておくことも可能です。現場の抑止力にもなりますし、トラブル時の原因究明もスムーズになります。

以下のコードをThisWorkbookという場所に貼り付けてみてください。

' ワークブックを開いたときに自動で実行される命令
Private Sub Workbook_Open()
    Dim ws As Worksheet
    Dim lastRow As Long
   
    ' 「ログ」という名前のシートに記録する場合(シートは隠しておくと◎)
    On Error Resume Next ' ログシートがなくてもエラーで止めないおまじない
    Set ws = ThisWorkbook.Sheets("ログ")
    On Error GoTo 0
   
    If Not ws Is Nothing Then
        ' 最終行を見つけて、次の行にユーザー名と時間を書き込む
        lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
        ws.Cells(lastRow, 1).Value = Now ' 今の時間
        ws.Cells(lastRow, 2).Value = Environ("UserName") ' PCのユーザー名
    End If
   
End Sub

まとめ:パスワードをかける時の「小さな注意点」

ここで私の失敗談を一つ。パスワードをかけたのは良いものの、そのパスワード自体を忘れてしまい、私自身も直せなくなったことがあります…。

  • パスワードは必ずメモしておく(付箋ではなく、パスワード管理ソフトなどで)。
  • バックアップを取ってから鍵をかける

かつての私のように困ってしまわないよう、事前準備を整えておくと安心です。

コードを保護することは、意地悪で隠すことではありません。「誰が使っても同じ結果が出る状態(再現性)」を維持するために重要なプロセスとなります。

勝手に書き換えられる心配がなくなれば、みんな安心して次の効率化ツールを作ることに集中できます。ぜひ試してみてください。

【業務効率化】VBAの記事を見る 


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でしたが、年間100万円以上節約していました。
株式投資で年間360万円以上投資し、iDeCoも併用しています。
総資産はアッパーマス層に到達しました。
資格は日商簿記3級を持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、生産性を高めるITスキルについて発信しています。

生活を豊かにするため、高配当株投資で年間配当金60万円をめざしています。
現在の年間配当金は30万円ほどです。

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました