Microsoft Excel VBA - ワークシートの保護に Protection オブジェクトを使用する方法

◆概要

Excel Version 2002 には、ワークシートを保護するために既存の機能を拡張できる新しいオブジェクトが含まれています。この記事は、それらの新しいオブジェクトについて説明し、プログラムでワークシートを保護する方法を示します。

◆はじめに

2002 バージョンより前の Excel ではワークシートを保護するために、ユーザーがセルを変更できないように、セルをロックしていました。残念ながら、ユーザーは同じワークシートへの行や列の挿入、またはセルの書式設定などの基本的な作業を実行できませんでした。

幸いなことに、Excel Version 2002 のワークシートの保護モデルは、以前のバージョンよりかなり優れています。ワークシートが保護されていても、ユーザーがセルの挿入および削除などのワークシートの基本的な作業が実行できるようになりました。特定のユーザーのみがワークシートの特定の部分を編集できるように、特定のセル範囲に権限を割り当てることができます。

この記事は、次の作業を実行するために、Excel Version 2002 で Protection オブジェクト モデルを構成するメソッドおよびオブジェクトを使用する方法を例示します。

  • Protect メソッドを使用して、ワークシートを保護します。
  • 特定のユーザーを保護されたワークシート上の特定の範囲に割り当てます。
  • ワークシートに追加された編集範囲を分析します。

◆Protection オブジェクト

ブック内の各ワークシートには、Protection オブジェクトが含まれています。次の表は、Protection オブジェクトのプロパティを説明しています。

表1.Protectionオブジェクトのプロパティ
プロパティ名 Trueの場合にユーザーが可能な作業 読み取り専用
AllowDeletingColumns 保護されたワークシート上の列の削除 はい
AllowDeletingRows 保護されたワークシート上の行の削除 はい
AllowFormattingCells 保護されたワークシート上のセルの書式設定 はい
AllowFomattingColumns 保護されたワークシート上の列の書式設定 はい
AllowFomattingRows 保護されたワークシート上の行の書式設定 はい
AllowInsertingColumns 保護されたワークシートへの列の挿入 はい
AllowInsertingRows 保護されたワークシートへの行の挿入 はい
AllowInsertingHyperlinks 保護されたワークシートへのハイパーリンクの挿入 はい
AllowFiltering 保護されたワークシート上でのオートフィルターの使用 はい
AllowSorting 保護されたワークシートでのセルの並び替え はい
AllowUsingPivotTables 保護されたワークシート上でのピボットテーブル レポートの使用 はい
AllowEditRonages ブール値を持つプロパティではありません。
AllowEditRangesコレクションを返します。
N/A

AllowEditRangeプロパティの例外として、Protectメソッドを使ってワークシートを保護するときに、Protection オブジェクトのプロパティが設定されます。

◆Protect メソッド

WorksheetオブジェクトProtectメソッドには、11個の新しい引数が追加されました。各引数は、上記の表1の読み取り専用のプロパティに対応しています。新しい各引数を使用すると、ユーザーが保護されたワークシートでいくつかの基本的なExcel機能にアクセスできるかどうかを制御できます。

次の例は、アクティブなブック内の各ワークシートを保護します。ユーザーは、セルの書式設定及び並び替えが許可されます。

それぞれのAllow...引数に対する既定の設定はFlaseであることに注意してください。

例1.すべてのワークシートを保護する
Sub ProtectMethodAllSheets()

   Dim shtCurrent As Worksheet

   For Each shtCurrent In ActiveWorkbook.Worksheets
      shtCurrent.Protect Password:="Pass", Contents:=True, _
                     DrawingObjects:=True, Scenarios:=True, _
                     AllowFormattingCells:=True, AllowSorting:=True
      Next shtCurrent

End Sub

◆ユーザー権限をセル範囲に割り当てる

Excel Version 2002の別の新しい保護機能には、保護されたワークシートの異なる範囲にユーザー レベル権限を割り当てる機能があります。各編集範囲内に、ワークシート全体のロックを解除せずにその範囲を変種できるユーザーを指定できます。さらに、ワークシートに変更を加えるために、ユーザーがhんい固有のパスワードを入力するように指定できます。

各ワークシートには、ワークシートの編集範囲のコレクションを含むAllowEditRangesコレクションが含まれます。ProtectionオブジェクトのAllowEditRangesプロパティを使って、編集範囲のコレクションを含むAllowEditRangesオブジェクトをワークシートに追加します。

ALlowEditRangeオブジェクトのユーザーのリストは、UserAccessListコレクションに保存されます。AllowEditRangeオブジェクトのUsersプロパティは、範囲に対するユーザーのコレクションを返すために使用されます。Addメソッドを使って、ユーザーを編集範囲に追加します。


▼ページトップへ