エクセルVBAでエクセルブックをパスワードを使ってロックするマクロを作成します。
作成したマクロはコピペで個人用マクロブックに設置することが出来ます。
こんにちは、じゅんぱ店長(@junpa33)です。
個人用マクロブックに記述することで、色んなエクセルブックをパスワード付きで、簡単にロックできるマクロを作成します。
個人用マクロブックを事前に設定さえしておけば、先にパスワードを一つだけ設定しておけば、
どんなエクセルファイルでもパスワード付きロックを行うことが出来ます。
今回はそのマクロの設定方法を説明します。
エクセルブックをパスワードロックするユーティリティなマクロ
別々に保存のシートを一つのブックにまとめる。シート移転マクロ
シート名一覧表作成マクロをブック登録して色んなエクセルで使う
Excel ユーザー定義用紙の印刷設定 問題解決のVBAコード
マクロの実行を1クリックで!フローティングボタンをユーザーフォームで作る
Option Explicitとは何、必要? VBA記述で不注意なエラーを防止する
Excelで書類のナンバリング刻印は瞬殺作業になる。紙ベースのユーザー必見
エクセル文書の見出し 先頭文字を大きく目立たせるVBA Characters
エクセルVBA セル入力の文字を大きくする、太くする、色変更の簡単コード
コンテンツ
ブックをパスワードロックするマクロの利用法
エクセルブックをパスワードロックする「ブックの保護マクロ」の使い方について説明します。
このマクロを実行するだけで無条件ブックはロックされます。
- ①パスワード設定の事前設定 ⇒対応するVBAコード①
個人用マクロブックでマクロを記述した「ブックの保護マクロ」プロシージャーのVBAコード内で、事前にパスワードを設定します。
PassWD=”〇〇〇” (デフォルトで”ロック”になっています。)
- ②パスワードロックのマクロ呼び出し
パスワードロックしたいエクセルブックを開いて、個人用マクロブックにある「ブックの保護マクロ」を呼び出します。
マクロの呼び出し方は「Alt」+「F8」を押してください。
「ブックの保護マクロ」を選択、「実行ボタン」をクリックします。
- ③マクロを実行する ⇒対応するVBAコード③
- すでにロックされているエクセルブックの場合は、このプロセスはスルーされます。
- ロックされていないエクセルブックの場合は、保護するブックが正しいかどうかの確認メッセージが表示されます。
「はい」で保護マクロのコードが進行します。「いいえ」でマクロの実行が解除されます。
- ④ロック解除のメッセージ表示 ⇒対応するVBAコード④
マクロを進めると次に、ブックを保護するか、保護解除するかのメッセージが表示されます。
エクセルブックをロックしようとしている場合は、この時に「いいえ」をクリックしてマクロを離脱します。
この時点で、既にこのブックはロック状態になっています。
ロックされているエクセルブックをロック解除したい場合は、「はい」を選択すると解除のためのパスワードが要求されます。
- ⑤パスワード入力ボックスの表示 ⇒対応するVBAコード⑤
初期に設定した正しいパスワードを入力するとロックが解除されます。パスワード入力ボックスには日本語入力も可能です。
- ⑥パスワード入力 ⇒対応するVBAコード⑥
- 正しいパスワードの入力
正しいパスワードを入力するとロックが解除されます。
- 間違ったパスワードを入力
パスワードが違う場合は解除不可のメッセージが表示されます。ロック解除プロセスが終了します。
パスワードロックするためのVBAコード
このマクロが実行されるVBAコードを説明します。
個人用マクロブックにコピペすれば、簡単にマクロを呼び出せて、簡単に利用することが出来ます。
パスワードロックする全VBAコード
まず最初に、マクロのVBAコード全体を紹介します。
個人用マクロブックに記述する全VBAコードは次のようになります。
Option Explicit
Sub ブックの保護マクロ()
'*************
Dim PassWD As Variant
PassWD = "ロック"
'*************
Dim Ans1 As Long
If ActiveWorkbook.ProtectStructure = False Then
Ans1 = MsgBox("保護するブックは 「 " _
& ActiveWorkbook.Name & " 」 になります。" _
& vbCrLf & "保護しますか?", vbYesNo + vbQuestion, _
"ブックの保護")
If Ans1 = vbYes Then
ActiveWorkbook.Protect Password:=PassWD
Else
Exit Sub
End If
End If
Dim Ans2 As Long
Dim Inp As Variant
If ActiveWorkbook.ProtectStructure = True Then
Ans2 = MsgBox("ブックは保護されています。" & vbCrLf & _
"解除しますか?", vbYesNo + vbExclamation, "ブックの保護")
End If
If Ans2 = vbYes Then
Inp = Application.InputBox("パスワードを入力してください", _
Title:="PASSWORD", Type:=2)
If Inp <> PassWD Then
MsgBox "パスワードが違います。" & vbCrLf & _
"初めからやり直してください。"
Exit Sub
End If
ActiveWorkbook.Unprotect Password:=Inp
MsgBox "ロックが解除されました。"
Else
Exit Sub
End If
End Sub
VBAをパーツ別に解説
パスワードは初期設定で「ロック」にしていますが、適宜オリジナルに変更してください。このマクロを使用する時の共通のパスワートになります。
'*************
Dim PassWD As Variant
PassWD = "ロック"
'*************
最初にすでにロックされているエクセルブックかどうかを調べます。
保護されているブックの場合は、「ProtectStructure」が「True」となり保護されていないと「False」が返されます。
シートの状態が保護されているかどうかをチェックすることが最重要ですので、ここでは「ProtectStructure」を使用しなければいけません。(ProtectWindowsでは保護状態を判定できません)
非保護状態のエクセルブックはこの時点でパスワード保護されることになります。
Dim Ans1 As Long
If ActiveWorkbook.ProtectStructure = False Then
Ans1 = MsgBox("保護するブックは 「 " _
& ActiveWorkbook.Name & " 」 になります。" _
& vbCrLf & "保護しますか?", vbYesNo + vbQuestion, _
"ブックの保護")
If Ans1 = vbYes Then
ActiveWorkbook.Protect Password:=PassWD
Else
Exit Sub
End If
End If
既にロックされているエクセルブックに対して、ロックを解除するかどうかを問い合わせします。
最初にロックされていないブックをロックする場合は、ここで「いいえ」をクリックでマクロを離脱します。
条件分岐でロックを解除したい場合は、次の処理コードへ進んでいきます。
Dim Ans2 As Long
Dim Inp As Variant
If ActiveWorkbook.ProtectStructure = True Then
Ans2 = MsgBox("ブックは保護されています。" & vbCrLf & _
"解除しますか?", vbYesNo + vbExclamation, "ブックの保護")
End If
インプットボックスによってパスワードの入力を求めます。
入力された文字は、変数「Inp」に代入されます。
If Ans2 = vbYes Then
Inp = Application.InputBox("パスワードを入力してください", _
Title:="PASSWORD", Type:=2)
入力されたパスワードが、プログラム内で設定されたパスワードと同じかどうかを検査します。
同じ場合は、パスワードロックを解除してマクロを終了します。
違っている場合は、解除作業をキャンセルしてマクロを終了します。
If Inp <> PassWD Then
MsgBox "パスワードが違います。" & vbCrLf & _
"初めからやり直してください。"
Exit Sub
End If
ActiveWorkbook.Unprotect Password:=Inp
MsgBox "ロックが解除されました。"
Else
Exit Sub
End If
End Sub
VBAコード作成のための参考資料
このエクセルブックをパスワードロックするマクロを作成する上で参考にする資料です。
ブック保護についての参考記事
エクセルブックを保護する基本コード VBA最速理解メッセージボックスを表示するための参考記事
メッセージボックス MsgBox実際の使い方を最速に理解入力ボックスを表示するための参考記事
2つのインプットボックス。関数とメソッド、特徴を生かした使い分け条件分岐についての参考記事
If条件文のVBAコードの組み方。条件の絞り方を最速理解個人用マクロブックの設置方法についての参考記事
個人用マクロブックの簡単作成と削除方法と使い方ガイドマクロコードを自分のエクセルに取り入れる方法についての参考記事
Webで見つけたマクロをコピペで使うまとめ(作成の注意点)
エクセルブックを保護するVBAコードは難しくありません。
個人用マクロブックにマクロを設置しておけば、少しの作業で簡単に色んなエクセルブックのパスワードロックを設定することが出来ます。
ただし注意点がいくつかありますので、VBAコード作成時には留意が必要です。
- Protectメソッドを2回繰り返すと保護が自動解除される。
例えば、次のコードを実行するとエクセルブックは保護解除されます。
Sub ブックの保護9()
Workbooks("Book1.xlsm").Protect
Workbooks("Book1.xlsm").Protect
End Sub
または
保護中のエクセルブックをさらに保護しようとする。
Sub ブックの保護1()
Workbooks("Book1.xlsm").Protect
End Sub
Sub ブックの保護1()
Workbooks("Book1.xlsm").Protect
End Sub
- エクセルブックがプロテクトされていのるかを確認する
エクセルブックが保護されているかどうかは、
ProtectWindows・・・ウインドウの保護状態を調べる
ProtectStructure・・・シートの保護状態を調べる
の2種類があります。
実務上必要なのは「シートの保護状態」のチェックの方が重要です。なので、基本「ProtectStructure」でブックの保護状態を調べないといけません。
- 個人用マクロブックには「ThisWorkbook」は使わない
当たり前と言えば当たり前のことですが、
個人用マクロブックに記述したマクロを実行するときに、「ThisWorkbook」はどれを指すのかというと「個人用マクロブック」になります。
ですので、個人用マクロブックを呼び出すために開いたエクセルブックは、ThisWorkbookではありません。
開いたエクセルブックを指定するためには、「そのブックの名前」か、フォーカスがあるなら「ActiveWorkbook」で指定する必要があります。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。