Excelブックの保護
<< エクセルVBAでExcelブック数を取得する :前の記事
こちらでは、WorkbookオブジェクトのProtectメソッドを利用して、Excelの指定したシートを保護する方法について解説しています。
ブックの保護とはブック上で誤ってシートを削除されるのを防ぐなどの目的で利用されます。外部からの操作を許可しない場合はブックの保護を利用すると有効です。
メソッドとは、オブジェクトを操作する命令文のことでオブジェクトの動作になります。 メソッドを利用するにはオブジェクト名とメソッド名の間に「.(ピリオド)」で結んで記述します。
オブジェクト名.メソッド名
目次
はじめに
こちらでは、Protectメソッドを利用したExcelの指定したブックを保護する方法について解説します。今回は、WorkbookオブジェクトのProtectメソッドを利用しますが、ProtectメソッドはWorkbookオブジェクト以外でも利用されますので、どのオブジェクトで利用できるかも確認してください。
また、ブックを保護すると非表示にしたシートに対して表示・移動・削除の設定や名前の変更などを様々な制限を行うことができますので覚えておきましょう。
利用するメソッドについて
今回利用するメソッドは以下になります。- Protectメソッド
Protectメソッドとは
WorkbookオブジェクトのProtectメソッドは指定されたシブックートを保護します。
Workbooks(インデックス番号).Protect(Password, Structure, Windows)
指定したシートを保護するサンプルコード
今回のVBAコードはExcelの指定したシートを保護するマクロになります。
Sub sample()
Workbooks("Book1").Protect
End Sub
解説
Workbooksコレクションオブジェクトにはワークブック「Book1」が設定されています。そして、「Book1」ワークブックオブジェクトのProtectメソッドには引数Structureに「True」が設定されています。引数Structureはブックの構造(各シートの相対位置)を保護する設定ですので、「True」を設定するとシートの移動やコピーができなくなります。
シートのコピーをさせたくない場合などは有効な方法ですので、合わせて覚えておきましょう。ただし、こちらはあくまでブックの保護になります。ブックの保護はしていませんので、ブックの保護と併せて利用しましょう。
実行結果
「Book1」ブックが保護されます。解説
sampleプロシージャのSubステートメントに引数は設定されていません。Workbookオブジェクトには「Book1」ブックが設定されています。そして、「Book1」ブックオブジェクトにProtectメソッドが設定されていますので、処理を実行すると「Book1」ブックが保護されます。最後はEndステートメントを利用してsampleプロシージャを終了させます。
ブックが保護される実行結果のようにシートの移動やコピーなどが一切できなくなりますが、手動で解除することもできます。解除する場合は、以下のように「ツール」→「保護」→「ブック保護の解除」をクリックするとブックの保護が解除されます。
今回は、ブックの保護の行っただけですので、シート自体の保護はしておりません。ですので、シートの移動やコピーができなくてもシート内の修正やコピーはできますので、そちらも制御したい場合は、シートの保護も併せて行いましょう。
指定したブックをパスワードを掛けて保護するサンプルコード
今回のVBAコードはExcelの指定したブックをパスワードを掛けて保護するマクロになります。
Sub sample()
Workbooks("Book1").Protect Password:="vbaie"
End Sub
実行結果
「Book1」ブックが保護されます。手動で解除しようとすると以下のようにパスワードを要求されます。
解説
Protectメソッドには名前付き引数で引数Passwordにパスワードの「vbaie」が設定されています。
これにより、手動でブック保護の解除をしようとした場合にパスワードを要求することができます。ブックの保護を解除されたくない場合はパスワードを設定するようにしましょう。
また、こちらでは名前付き引数を使用して引数設定していますが、以下のように名前付き引数をつけなくても設定できます。
Sub sample()
Workbooks("Book1").Protect "vbaie"
End Sub
まとめ
今回は、WorkbookオブジェクトとWorkbooksコレクションオブジェクトのProtectメソッドを利用して、Excelの指定したブックを保護する方法について解説しました。次回は、エクセルVBAのワークシート操作について解説します。
エクセルVBAのブック操作一覧
次の記事: エクセルVBAのワークシート操作 >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。