エクセルVBAのProtectメソッドでシートを保護する方法について解説しています。
<< エクセルVBAでExcelシートを印刷する :前の記事
こちらでは、SheetsコレクションオブジェクトのProtectメソッドを利用して、Excelの指定したシートを保護する方法について解説しています。
シートの保護とはシート上で誤ってデータを削除したり、書式を変更されるのを防ぐなどの目的で利用されます。外部からの操作を許可しない場合はシートの保護を利用すると有効です。
メソッドとは、オブジェクトを操作する命令文のことでオブジェクトの動作になります。 メソッドを利用するにはオブジェクト名とメソッド名の間に「.(ピリオド)」で結んで記述します。
オブジェクト名.メソッド名
こちらでは、Protectメソッドを利用したExcelの指定したシートを保護する方法について解説します。今回は、SheetsコレクションオブジェクトのProtectメソッドを利用しますが、ProtectメソッドはSheetsコレクションオブジェクト以外でも利用されますので、どのオブジェクトで利用できるかも確認してください。
SheetsコレクションオブジェクトのProtectメソッドは指定されたシートを保護します。
今回のVBAコードはExcelの指定したシートを保護するマクロになります。
Sub sample()
Sheets("Sheet1").Protect
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
「Sheet1」シートが保護され、セルに入力しようとすると以下の内容の警告メッセージが表示されます。
「変更しようとしているセルまたはグラフは保護されているため、読み取り専用となってます。保護されているセルまたはグラフを変更するには、[ツール]メニューの[保護]をポイントし、[シート保護の解除]をクリックして保護を解除します。パスワードの入力を要求されることもあります。」
sampleプロシージャのSubステートメントに引数は設定されていません。Sheetsコレクションオブジェクトには「Sheet1」シートが設定されています。そして、「Sheet1」シートオブジェクトにProtectメソッドが設定されていますので、処理を実行すると「Sheet1」シートが保護されます。最後はEndステートメントを利用してsampleプロシージャを終了させます。
シートが保護されると行の挿入やセルの入力など一切できなくなりますが、手動で解除することもできます。解除する場合は、以下のように「ツール」→「保護」→「シート保護の解除」をクリックするとシートの保護が解除されます。
今回のVBAコードはExcelの指定したシートをパスワードを掛けて保護するマクロになります。
Sub sample()
Sheets("Sheet1").Protect Password:="vbaie"
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
「Sheet1」シートが保護されます。手動で解除しようとすると以下のようにパスワードを要求されます。
sampleプロシージャのSubステートメントに引数は設定されていません。Sheetsコレクションオブジェクトには「Sheet1」シートが設定されています。そして、「Sheet1」シートオブジェクトのProtectメソッドには名前付き引数で引数Passwordにパスワードの「vbaie」が設定されています。
これにより、手動でシート保護の解除をしようとした場合にパスワードを要求することができます。シートの保護を解除されたくない場合はパスワードを設定するようにしましょう。
また、こちらでは名前付き引数を使用して引数設定していますが、以下のように名前付き引数をつけなくても設定できます。
Sub sample()
Sheets("Sheet1").Protect "vbaie"
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
今回のVBAコードはExcelの指定したシートをコピー不可にするマクロになります。
Sub sample()
Workbooks("Book1").Protect Structure:=True
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
ワークブック「Book1」のシート構成が保護され、シートのコピーができなくなります。
Workbooksコレクションオブジェクトにはワークブック「Book1」が設定されています。そして、「Book1」ワークブックオブジェクトのProtectメソッドには引数Structureに「True」が設定されています。引数Structureはブックの構造(各シートの相対位置)を保護する設定ですので、「True」を設定するとシートの移動やコピーができなくなります。
シートのコピーをさせたくない場合などは有効な方法ですので、合わせて覚えておきましょう。ただし、こちらはあくまでブックの保護になります。シートの保護はしていませんので、シートの保護と併せて利用しましょう。
今回は、SheetsコレクションオブジェクトとWorkbooksコレクションオブジェクトのProtectメソッドを利用して、Excelの指定したシートを保護する方法について解説しました。次回は、エクセルVBAのセル操作について解説します。
次の記事: エクセルVBAのセル操作 >>
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
ExcelのVBAについてのQ&A掲示板↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください。
VBAのIE操作入門↑ExcelのVBAをマスターできたら、エクセルVBAのIE操作にも挑戦してみてください。
こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。