Excelブックの保護

<< エクセルVBAでExcelブック数を取得する :前の記事

こちらでは、WorkbookオブジェクトProtectメソッドを利用して、Excelの指定したシートを保護する方法について解説しています。

ブックの保護とはブック上で誤ってシートを削除されるのを防ぐなどの目的で利用されます。外部からの操作を許可しない場合はブックの保護を利用すると有効です。

メソッドとは、オブジェクトを操作する命令文のことでオブジェクトの動作になります。 メソッドを利用するにはオブジェクト名とメソッド名の間に「.(ピリオド)」で結んで記述します。

オブジェクト名.メソッド名

目次

はじめに

こちらでは、Protectメソッドを利用したExcelの指定したブックを保護する方法について解説します。今回は、WorkbookオブジェクトのProtectメソッドを利用しますが、ProtectメソッドはWorkbookオブジェクト以外でも利用されますので、どのオブジェクトで利用できるかも確認してください。

また、ブックを保護すると非表示にしたシートに対して表示・移動・削除の設定や名前の変更などを様々な制限を行うことができますので覚えておきましょう。

利用するメソッドについて

今回利用するメソッドは以下になります。

Protectメソッドとは

WorkbookオブジェクトのProtectメソッド指定されたシブックートを保護します。

Workbooks("シート名").Protect(Password, Structure, Windows)
Workbooks(インデックス番号).Protect(Password, Structure, Windows)

指定したシートを保護するサンプルコード

今回のVBAコードはExcelの指定したシートを保護するマクロになります。


Sub sample()

    Workbooks("Book1").Protect

End Sub

※ドラッグ(スワイプ)すると全体を確認できます。

解説

Workbooksコレクションオブジェクトにはワークブック「Book1」が設定されています。そして、「Book1」ワークブックオブジェクトのProtectメソッドには引数Structureに「True」が設定されています。引数Structureはブックの構造(各シートの相対位置)を保護する設定ですので、「True」を設定するとシートの移動やコピーができなくなります

シートのコピーをさせたくない場合などは有効な方法ですので、合わせて覚えておきましょう。ただし、こちらはあくまでブックの保護になります。ブックの保護はしていませんので、ブックの保護と併せて利用しましょう。

実行結果

「Book1」ブックが保護されます。

エクセルVBAのProtectメソッドの結果4

解説

sampleプロシージャSubステートメントに引数は設定されていません。Workbookオブジェクトには「Book1」ブックが設定されています。そして、「Book1」ブックオブジェクトにProtectメソッドが設定されていますので、処理を実行すると「Book1」ブックが保護されます。最後はEndステートメントを利用してsampleプロシージャを終了させます。

ブックが保護される実行結果のようにシートの移動やコピーなどが一切できなくなりますが、手動で解除することもできます。解除する場合は、以下のように「ツール」→「保護」→「ブック保護の解除」をクリックするとブックの保護が解除されます。

今回は、ブックの保護の行っただけですので、シート自体の保護はしておりません。ですので、シートの移動やコピーができなくてもシート内の修正やコピーはできますので、そちらも制御したい場合は、シートの保護も併せて行いましょう。

指定したブックをパスワードを掛けて保護するサンプルコード

今回のVBAコードはExcelの指定したブックをパスワードを掛けて保護するマクロになります。


Sub sample()

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

End Sub

※ドラッグ(スワイプ)すると全体を確認できます。

実行結果

「Book1」ブックが保護されます。手動で解除しようとすると以下のようにパスワードを要求されます。

エクセルVBAのProtectメソッドの結果

解説

Protectメソッドには名前付き引数引数Passwordにパスワードの「vbaie」が設定されています。

これにより、手動でブック保護の解除をしようとした場合にパスワードを要求することができます。ブックの保護を解除されたくない場合はパスワードを設定するようにしましょう。

また、こちらでは名前付き引数を使用して引数設定していますが、以下のように名前付き引数をつけなくても設定できます。


Sub sample()

    Workbooks("Book1").Protect "vbaie"

End Sub

※ドラッグ(スワイプ)すると全体を確認できます。

まとめ

今回は、WorkbookオブジェクトとWorkbooksコレクションオブジェクトのProtectメソッドを利用して、Excelの指定したブックを保護する方法について解説しました。次回は、エクセルVBAのワークシート操作について解説します。

エクセルVBAのブック操作一覧

次の記事: エクセルVBAのワークシート操作 >>

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。

ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください。

VBAのIE操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE操作にも挑戦してみてください。

目次

VBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。