Categories: VBA基礎

EXCEL VBA ワークシートの保護・保護解除(Protectメソッド・Unprotect メゾット)【ワークシートの操作】

 

EXCEL VBA ワークシートの保護・保護解除(Protectメソッド・Unprotect メゾット)【ワークシートの操作】

 

●はじめに
社内で色々なファイルを取り扱う事があると思いますが、その中には重要なファイルが多くあると思います。EXCELブックのワークシート内に、作成したデータや表などを書き換えられては困る情報が有ると思いますが、その時に利用するのが、ワークシートの保護です。データ以外にも他のユーザーに計算式を壊されたり、勝手に行・列などを挿入・削除させない様にするのにも、ワークシートの保護が有効です。なお、EXCEL VBAでは、ワークシートの保護状態でもデータなどを直接変更する事も出来ます。ここでは、EXCEL VBAを利用したワークシートの保護・ワークシートの保護解除の利用方法をサンプルプログラムを交えて説明いたします。

 

 

●書式の説明  「オブジェクト.Protectメゾット」・「オブジェクト.Unprotectメゾット」

【ワークシートの保護】 ●オブジェクト.Protectメソッド

Protect (Password,DrawingObjects,Contents,Scenarios,userinterfaceonly,AllowFormattingCells, AllowFormattingColumns,AllowFormattingRows,AllowInsertingColumns,AllowInsertingRows,AllowInsertingHyperlinks,AllowDeletingColumns,AllowDeletingRows,allowsorting,allowfiltering,AllowUsingPivotTables)

【使用例】:Worksheets(“Sheet1”).Protect Passsword:=”Pass”※ワークシート1の保護を設定します。(パスワードは、”Pass”)

注意:設定したパスワードは、失念すると解除出来なくなります。

Protect メソッド 引数一覧
引数既定値説明
Passwordワークシートのパスワードを設定します。この設定したパスワードは、保護解除する時に必要になります。
DrawingObjectsTrue描画オブジェクト(図形)を保護するには、 True を指定します。Falseで解除
ContentsTrueグラフ全体が保護されます。Trueで保護します。
ScenariosTrueシナリオを保護するには、 True を指定します。 この引数はワークシートの場合のみ有効です。
UserInterfaceOnlyFalseTrue を指定すると、画面上からの変更はできません。(保護)VBA(マクロ)からの変更は保護されません。 この引数を省略すると、VBA(マクロ)からも、画面上からも保護されて変更することができなくなります。
AllowFormattingCellsFalseTrue を指定すると、保護されたワークシートのセルを書式設定することができます。
AllowFormattingColumnsFalseTrue を指定すると、保護されたワークシートの列を書式設定することができます。
AllowFormattingRowsFalseTrueを指定すると、保護されたワークシートの行を書式設定できます。
AllowInsertingColumnsFalseTrue を指定すると、保護されたワークシートに列を挿入することができます。
AllowInsertingRowsFalseTrue を指定すると、保護されたワークシートに行を挿入することができます。
AllowInsertingHyperlinksFalseTrueを指定すると、保護されたワークシートにハイパーリンクを挿入することが許可されます。
AllowDeletingColumnsFalseTrue を指定すると、保護されたワークシートの列を削除することができ、削除される列のセルはすべてロック解除されます。
AllowDeletingRowsFalseTrue を指定すると、保護されたワークシートの行を削除することができ、削除される行のセルはすべてロック解除されます。
AllowSortingFalseTrue を指定すると、保護されたワークシートで並べ替えを行うことができます。 並べ替え範囲内のセルは、ロックと保護が解除されている必要があります。
AllowFilteringFalseTrue を指定すると、保護されたワークシートにフィルターを設定することができます。
AllowUsingPivotTablesFalseTrueを指定すると、保護されたワークシートでピボットテーブルとピボットグラフを使用することができます。

 

【ワークシートの保護解除】 ●オブジェクト.Unprotectメゾット 【使用例】:Worksheets(“Sheet1″).UnProtect Passsword:=”Pass” ※ワークシート1の保護を解除します。(パスワードは、””Pass”) 注意:設定したパスワードは、失念すると解除出来なくなります。

 

 

指定したワークシートの保護 (パスワード設定)

 

●プログラム説明 (サンプル①) 「Protectメゾット」
下記のサンプルプログラムは、指定するワークシートに対して、ワークシートの保護を行います。 【条件処理】※保護 ・ワークシート「機密情報」・・パスワード「kimitsu」 ・ワークシート「個人情報」・・パスワード「kojin」 下記のプログラムを実行する際に、ワークシート名を・「機密情報」「個人情報」に変更して下さい。

 

'
'******** AKIRA55.COM ******* https://akira55.com/worksheet_protect/
'
Sub WorkSheetProtect01()  '指定するワークシートを保護

    Dim ws01, ws02 As Worksheet

    
    Set ws01 = Worksheets("機密情報") 'ワークシート名をセット
    Set ws02 = Worksheets("個人情報") 'ワークシート名をセット
    
    ws01.Protect Password:="kimitsu"
          'ワークシート「機密情報」を保護・パスワードを「kimitsu」
    ws02.Protect Password:="kojin"
          'ワークシート「個人情報」を保護・パスワードを「kojin」

    MsgBox "ワークシートを保護しました。"
    
End Sub
’

 

●実行前~実行後 ※プログラム実行後、指定した二つのワークシートが保護されました。 (画面クリックして拡大)

 

 

指定したワークシートの保護解除

 

 ●プログラム説明 (サンプル②) 「Unprotectメゾット」
下記のサンプルプログラムは、指定するワークシートに対して、ワークシートの保護解除を行います。なお、ワークシートの保護は、サンプル①で実行しています。 【条件処理】※保護解除 ・ワークシート「機密情報」・・パスワード「kimitsu」 ・ワークシート「個人情報」・・パスワード「kojin」 下記のプログラムを実行する際に、ワークシート名を・「機密情報」「個人情報」に変更して下さい。

 

'
'******** AKIRA55.COM ******* https://akira55.com/worksheet_protect/
'
Sub WorkSheetProtect02()  '指定するワークシートを保護解除

    Dim ws01, ws02 As Worksheet

    
    Set ws01 = Worksheets("機密情報") 'ワークシート名をセット
    Set ws02 = Worksheets("個人情報") 'ワークシート名をセット
    
    ws01.Unprotect Password:="kimitsu"
          'ワークシート「機密情報」を保護・パスワードを「kimitsu」
    ws02.Unprotect Password:="kojin"
          'ワークシート「個人情報」を保護・パスワードを「kojin」

    MsgBox "ワークシート保護の解除しました。"
    
End Sub

'

 

●実行前~実行後 ※プログラム実行後、指定した二つのワークシートの保護が解除されました。 (画面クリックして拡大)

 

 

ユーザーにワークシートの保護解除パスワードを入力

 

●プログラム説明 (サンプル③) 「Unprotectメゾット」
下記のサンプルプログラムは、ユーザーに対してワークシートの保護解除用のパスワードを入力させるプログラムです。 【条件処理】※保護解除 ・ワークシート「個人情報」・・パスワード「kojin」 下記のプログラムを実行する際に、ワークシート名を「個人情報」に変更して下さい。

 

'
'******** AKIRA55.COM ******* https://akira55.com/worksheet_protect/
'
Sub WorkSheetProtect03()  'ユーザーにワークシートの保護解除パスワードを入力させます。

    Dim ws01 As Worksheet
    Dim Pass_Inp As String
    
    Set ws01 = Worksheets("個人情報")

    ws01.Protect Password:="kojin" '個人用パスワードを設定します。
    
Pass:
    
    On Error GoTo Errshori
    
        ws01.Unprotect  'ワークシート「個人情報」の保護を解除 (パスワードの入力)
    
    MsgBox "パスワードが解除されました。"
    
    Exit Sub
        
Errshori:

    MsgBox Err.Description  'パスワードが違う場合にメッセージを表示


End Sub
'

 

●実行前~実行後 ※プログラム実行後、ワークシート保護のパスワード入力を求められます。パスワードを間違えると、間違えているとのエラーメッセージが表示されます。正しくパスワードを入力しますとワークシートの保護が解除されました。 (画面クリックして拡大)

 

●EXCEL VBA ワークシートの保護・保護解除(Protectメソッド・Unprotect メゾット)【ワークシートの操作】②の続きは、↓こちらをクリック
https://akira55.com/worksheet_protect2/

 

最後まで、ご覧いただきまして誠に有難うございました。 また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。
AKIRA