エクセルブックを保護する基本コード VBA最速理解

vbabookprotecteyecatch

ブックの保護は、シート上からは 「校閲– ブックの保護」から行います。
エクセルVBAでは保護のためにはProtect、解除のためにはUnprotectを使用します。

こんにちは じゅんぱ店長 (@junpa33) です。

エクセルブックは保護することが出来ます。

また、エクセルブックの保護は単にプロテクトだけでなく、パスワード付きで保護することも出来ます。

ブックを保護することによって、ブック中のシートの削除や移動、シート名変更やシートの表示変更を禁止することが出来ます。

エクセルブックを保護するVBAコード

vbabookprotectp001

エクセルブックを保護するには「 Protectメソッド 」を、

保護を解除するには「 Unprotectメソッド 」を使用します。

ブックの保護と保護解除の基本文

ProtectとUnprotectの使い方は以下のようになります。

Protectメソッドの基本構文

保護と保護解除の基本構文

ワークブックオブジェクト.Protect

ワークブックオブジェクト.Unprotect

保護する基本コード文

エクセルブックの「Book1.xlsm」を保護するコードです。これだけです。

VBA
Sub ブックの保護1()
        Workbooks("Book1.xlsm").Protect
End Sub

保護解除の基本コード文

保護の解除は、ProtectをUnprotectに置き換えるだけです。

VBA
Sub ブックの保護2()
        Workbooks("Book1.xlsm").Unprotect
End Sub

パスワード付きのブックの保護と保護解除の基本文

パスワードを設定する場合は、引数として「Password:=パスワード」を付け加えます。

パスワード付きProtectメソッドの基本構文

保護と保護解除の基本構文

ワークブックオブジェクト.Protect Password:=パスワード

ワークブックオブジェクト.Unprotect Password:=パスワード

パスワード付きで保護する基本コード文

引数としてパスワードを設定します。パスワードは「ロック」と設定しました。

VBA
Sub ブックの保護3()
        Workbooks("Book1.xlsm").Protect Password:="ロック"
End Sub

パスワード付きの保護を解除する基本コード文

VBA
Sub ブックの保護4()
        Workbooks("Book1.xlsm").Unprotect Password:="ロック"
End Sub

エクセルブックが保護されているかを確認するコード

ブックが保護されているとメッセージウインドが表示されます。

VBA
Sub ブックの保護5()
        If ThisWorkbook.ProtectStructure = True Then
            MsgBox "ブックは保護されています。"
        End If
End Sub

ブックのパスワード付き保護と解除の実用マクロ

vbabookprotectp002

あらかじめパスワードを設定しておき、マクロの実行で保護・保護解除を行なえる実用VBAコードです。

保護したいエクセルブックの標準モジュールへコピペで使用できます。

VBA
Sub ブックの保護6()
'*************
    Dim PassWD As Variant
    PassWD = "ロック"
    If ThisWorkbook.ProtectStructure = False Then
        ThisWorkbook.Protect Password:=PassWD
    End If
'*************
    Dim Ans As Long
    Dim Inp As Variant
        If ThisWorkbook.ProtectStructure = True Then
            Ans = MsgBox("ブックは保護されています。" & vbCrLf & _
            "解除しますか?", vbYesNo + vbExclamation, "ブックの保護")
        End If
        If Ans = vbYes Then
            Inp = Application.InputBox("パスワードを入力してください", _
                    Title:="PASSWORD", Type:=2)
            If Inp <> PassWD Then
                MsgBox "パスワードが違います。"
                Exit Sub
            End If
            ThisWorkbook.Unprotect Password:=Inp
        Else
            Exit Sub
        End If
End Sub

まとめ

vbabookprotectp003

ブックを保護することによって、シートが改変されることを保護することが出来ます。ただし、ブックそのものを削除したり、複製したりすることを防ぐことは出来ません。

また、シート内のセルについては、シートが保護されていないと、ブックの保護だけではセルの保護はされません。

シートの保護についてはこの記事を参考にしてください。

vbasheetprotecteyecatch Excelシートを保護する。 記述方法とプロテクトされない操作

セルの保護についてはこの記事を参考にしてください。

vbacellsprotecteyecatch 「セルの保護」の設定VBAを最速理解

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min