VBAによるワークブックの保護(パスワードによる保護/保護解除)

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 4月 11, 2022

Excelでは、ワークブックを変更から保護する機能があります。このチュートリアルでは、VBAを使用してワークブックの構成を保護または保護解除する方法について説明します。

VBAによるワークブックの保護

VBA ワークブックの保護では、ワークブックの構成をロックすることができます。ワークブックが保護されると、ユーザーはワークシートの追加、削除、非表示/非表示解除、保護/保護解除ができなくなります。モデルを構築している場合、ユーザー(またはあなた!)が誤ってワークシートを削除するのを防ぐために、おそらくワークブックの保護を有効にしたいと思うことでしょう。

vba workbook protection 保護

ワークブックの保護解除 VBA

ワークブックの保護を解除するには、次のコードを使用するだけです。

Workbooks("Book1").Unprotect

注意:このコードは、ワークブックがパスワードなしで保護されている場合にのみ機能します。パスワード付きで保護されている場合は、パスワードを入力して保護を解除する必要があります。

パスワード付きワークブックの保護を解除する

次のコードは、パスワードで保護されているワークブックの保護を解除します。

Workbooks("Book1").Unprotect Password:="password"

Password:= を省略することもできます。

Workbooks("Book1").Unprotect "password"

ThisWorkbookの保護を解除する

このコードはThisWorkbookの保護を解除します(ThisWorkbookは実行中のコードが保存されているワークブックで、変わることはありません)。

ThisWorkbook.Unprotect

またはパスワードでThisWorkbookの保護を解除する。

ThisWorkbook.Unprotect "password"

ActiveWorkbookの保護を解除する

このコードでは、ActiveWorbookのプロテクトを解除します。

ActiveWorkbook.Unprotect

またはパスワード付きのActiveWorkbookの保護を解除します。

ActiveWorkbook.Unprotect "password"

開いているすべてのワークブックの保護を解除する

このコードでは、開いているすべてのワークブックの保護を解除します。

Sub UnprotectAllOpenWorkbooks()
    Dim wb As Workbook
    
    For Each wb In Workbooks
        wb.Unprotect
    Next wb

End Sub

ワークブックの保護を解除する – パスワードを知らない場合

パスワードを知らずにワークブックの保護を解除する必要がある場合、いくつかのアドインが役に立ちます。 おすすめは、Ribbon Commanderです。

ワークブック内のすべてのシートの保護を解除する

ワークブックの保護を解除した後、ワークブック内のすべてのシートの保護も解除したい場合があります。 以下は、すべてのシートの保護を解除するプロシージャです。

Sub UnProtectWorkbookAndAllSheets()
    Dim ws As Worksheet
    
    ActiveWorkbook.Unprotect
    For Each ws In Worksheets
        ws.Unprotect
    Next
End Sub

ワークブックを保護する

保護解除と同様に、ワークブックの構成を保護することができます。

パスワードなしでワークブックを保護する

次のコードは、ワークブックを保護します(パスワードなし)。

Workbooks("Book1").Protect

注:パスワードなしのワークブック保護を適用することがよくありますが、これは単にワークブックが誤って変更されるのを防ぐためです。

パスワードでワークブックを保護する

このコードでは、ワークブックの構造を(パスワードで)保護します。

Workbooks("Book1").Protect "password"

または

Workbooks("Book1").Protect Password:="password"

Excelファイルのパスワード保護

ワークブックの保護の代わりに、Excelファイル全体をパスワードで保護したい場合があります。 VBAを使用してそれを行うには、パスワード付きのワークブックとして保存します。

Workbooks("Book1").SaveAs "password"

ワークブックの保護/保護解除の例

保護されたワークブックのすべてのワークシートの非表示を解除する

このプロシージャは、ワークブックの保護を解除し、すべてのワークシートを非表示にしてから、ワークブックを再度保護します。

Sub UnprotectWB_Unhide_All_Sheets()
    Dim ws As Worksheet
    
    ActiveWorkbook.Unprotect
    For Each ws In Worksheets
        ws.Visible = xlSheetVisible
    Next
    
    ActiveWorkbook.Protect
End Sub

ワークブックとすべてのシートの保護

このプロシージャは、ワークブック内のすべてのワークシートを保護し、その後、ワークブックを保護します。

Sub ProtectWB_Protect_All_Sheets()
    Dim ws As Worksheet
    
    ActiveWorkbook.Unprotect
    
    For Each ws In Worksheets
        ws.Protect
    Next
    
    ActiveWorkbook.Protect
End Sub

パスワード保護も追加することができます。

Sub ProtectWB_Protect_All_Sheets_Pswrd()
    Dim ws As Worksheet
    
    ActiveWorkbook.Unprotect "password"
    
    For Each ws In Worksheets
        ws.Protect "password"
    Next
    
    ActiveWorkbook.Protectの "password"
End Sub
vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples