アトム電器 三軒家店(有限会社 おかもとでんか)のホームページ。大阪市大正区にある町の電気屋さん。家電製品の販売、エアコン、電気工事、パソコンからリフォーム、オール電化など電気のことならなんでもお任せ下さい!アトム電器三軒家店

Excelのシートの保護

Excel開発 VBA開発

Excelで特定のセルに値を入力されたくなかったり、特定のセルの値を勝手に変更されたくないなどは「シート保護」機能を利用すると実現することができます。

「シートの保護」では、行や列の挿入をできなくしたり、文字色や背景色などを変更できなくしたりなども可能です。「シートの保護」ダイアログで設定できます。チェックを入れた操作名の操作は実行できるようになるので、何もかも実行できなくする場合(閲覧のみ)はチェックを全て外します。

「シートの保護」の前準備

  1. 何も設定していない場合、全てのセルがセル値保護対象となりますので、一度セル全体を選択状態にするためにシートの左上端をクリックします。
    セル全体を選択する
  2. 「セルの書式設定」ダイアログを表示するので、ホームタブの 書式-セルの書式設定(E)をクリックします。
    セルの書式設定

  3. 保護タブのロックにチェックをはずしてOKボタンをクリックします。これで不要なセルが保護されることがなくなります。
    ロックの解除

  4. 最後に値を保護したいセルを選択状態にして、再び「セルの書式設定」ダイアログを表示して、保護タブのロックにチェックを入れてOKボタンをクリックします。保護したいセルが複数ある場合は、そのセル全てに対してこの操作を行います。
    ロックを設定

  5. 以上で、「シートの保護」の前準備が完了です。

「シートの保護」を実行する

  1. 校閲タブのシートの保護をクリックします。
    シートの保護をクリック

  2. 表示される「シートの保護」ダイアログの「このシートのすべてのユーザーに許可する操作(O)」で、操作せれたくないものはチェックを外し、操作を許可するものにはチェックを入れます。すべての操作をさせない場合はチェックを全て外します。
    許可する操作にチェックする

  3. 「シートの保護」を解除するのにパスワードを入力させる場合は、「シートの保護を解除するためのパスワード(P)」にパスワードを入力します。使っているユーザーが勝手に「シートの保護」を解除させれなくするためなどの場合は推測されないようなパスワードを入力しておきます。なおこのパスワードを忘れると「シートの保護」が解除できなくるので忘れないようにしてください。
    パスワードの入力

  4. パスワードの確認を聞いてくるので、パスワードを再度入力します。
    パスワードの確認入力

  5. 以上で「シートの保護」の設定は完了です。

「シートの保護」を解除する

  1. 校閲タブのシート保護の解除をクリックします。
    シート保護の解除をクリック

  2. パスワードを設定している場合は、パスワードを聞いてくるので入力します。
    シート保護の解除のパスワード入力

  3. 以上で「シートの保護」は解除されます。

VBAから操作可能な「シートの保護」

校閲-シートの保護で「シートの保護」を行った場合にVBAから保護に関わる処理を行おうとすると「変更しようとしているセルやグラフは保護されているシート上にあります。変更するには、[校閲] タブの [シート保護の解除] をクリックします(パスワードの入力が必要な場合もあります)」というエラーメッセージが表示されとなり操作できません。通常のExcel操作では保護するけれど、VBAからは保護に関わる操作が可能な「シートの保護」を実現するにはExcelのメニューからではなくVBAプログラミングで「シートの保護」を行う必要があります。

  • WorksheetオブジェクトのProtectメソッドを利用して「シートの保護」を行います。第5引数を「True」にすることで、VBAからは操作可能な「シートの保護」を実現できます。

    Public Sub SheetProtectOn()
    Call ActiveWorksheet.Protect(, , , , True)
    End Sub
  • 「シートの保護」を解除するのにパスワードを必要とするには、第1引数にパスワード文字列を指定すると実現できます。例では「passwd」というパスワードを指定しています。

    Public Sub SheetProtectOn()
    Call ActiveWorksheet.Protect("passwd", , , , True)
    End Sub

VBAから操作可能な「シートの保護」の解除

VBAプログラムで「シートの保護」を行った場合、校閲タブのシートの保護の解除で保護を解除することが可能です。また逆に校閲-シートの保護で保護を行った場合でも、VBAから「シートの保護の解除」は行えます。

  • VBAプログラムで「シートの保護の解除」は下記コードで実現できます。

    Public Sub SheetProtectOff()
    Call ActiveWorksheet.Unprotect()
    End Sub
  • パスワード保護された「シートの保護」の場合は、第1引数にパスワード文字列を指定すると実現できます。例では「passwd」というパスワードを指定しています。

    Public Sub SheetProtectOff()
    Call ActiveWorksheet.Unprotect("passwd")
    End Sub

「シートの保護」の覚え書き

  • 「シートの保護」の保護する操作内容

    保護する操作名保護の内容(チェックなし時)
    ロックされたセル範囲の選択指定シートの「ロック」になっているセルは選択できなくします。そのためセルのコピーなどもできなくなります。
    ロックされていないセル範囲の選択指定シートの「ロック」になっていないセルを選択できなくします。そのためセルのコピーもできなくなります。
    セルの書式設定指定シートで、文字色や背景色などセルや文字に対する書式設定操作ができなくなります。また列や行の削除・書式設定もできなくなります。
    列の書式設定指定シートの列単位での、文字色や背景色などの書式設定操作ができなくなります。ただし「セルの書式設定」が優先されます。
    行の書式設定指定シートの行単位での、文字色や背景色などの書式設定操作ができなくなります。ただし「セルの書式設定」が優先されます。
    列の削除指定シートの列を削除できなくします。ただし「セルの書式設定」が優先されます。
    行の削除指定シートの行を削除できなくします。ただし「セルの書式設定」が優先されます。
    並べ替え指定シートで「並べ替え」機能を利用できなくします
    オートフィルターの使用指定シートでは「フィルター(オートフィルター)」機能を利用できなくします。
    ピポットテーブルとピポットグラフを使う指定シートではピポットテーブルやピポットグラフを利用できなくします。
    オブジェクトの編集指定シートにある図形オブジェクトなどを、選択や編集できなくします。
    シナリオの編集指定シートでは「シナリオ」機能を利用できなくします。

    なお「セルの書式設定」のチェックを外すと、「列の書式設定」などにチェックをいれたとしても書式設定は一切できなくなります。

  • VBAのProtectメソッドの引数

    WorksheetオブジェクトのProtectメソッドの引数についてまとめてみました。引数は全て省略可能です。

    引数名既定値内容
    1PasswordVariant(内部String)(なし)「シートの保護」を解除するパスワード
    2DrawingObjectsVariant(内部Boolean)True描画オブジェクト(図形)などを保護する場合はTrue
    3ContentsVariant(内部Boolean)Trueロック指定されているセルを保護する場合や、グラフの場合はグラフ全体を保護する場合はTrue
    4ScenariosVariant(内部Boolean)True「シナリオ機能」を利用できなくする場合はTrue
    5UserInterfaceOnlyVariant(内部Boolean)False保護されているセルに対してVBAからの操作は対象外にする場合(VBAからは操作できるようにする)はTrue
    6AllowFormattingCellsVariant(内部Boolean)Falseセル書式を設定できるようにするにはTrue
    7AllowFormattingColumnsVariant(内部Boolean)False列単位での書式設定をできるようにするにはTrue
    8AllowFormattingRowsVariant(内部Boolean)False行単位での書式設定をできるようにするにはTrue
    9AllowInsertingColumnsVariant(内部Boolean)False列の挿入をできるようにするにはTrue
    10AllowInsertingRowsVariant(内部Boolean)False行の挿入をできるようにするにはTrue
    11AllowInsertingHyperlinksVariant(内部Boolean)Falseハイパーリンクを挿入できるようにするにはTrue
    12AllowDeletingColumnsVariant(内部Boolean)False列を削除できるようにするにはTrue
    13AllowDeletingRowsVariant(内部Boolean)False行を削除できるようにするにはTrue
    14AllowSortingVariant(内部Boolean)False「並べ替え」機能を使えるようにするにはTrue
    15AllowFilteringVariant(内部Boolean)False「フィルタ」機能を使えるようにするにはTrue
    16AllowUsingPivotTablesVariant(内部Boolean)False「ピボットテーブル」機能を使えるようにするにはTrue
  • Excelのドキュメントインターフェイス

    マルチドキュメントインターフェイス(MDI)
    アプリケーション内で、複数のドキュメントを開くことができるインターフェイス。
    マルチドキュメントインターフェイス(MDI)
    シングルドキュメントインターフェイス(SDI)
    アプリケーション内でドキュメントは1つだけ。複数のドキュメントがある場合はそのドキュメントの数アプリケーションが開かれる。
    シングルドキュメントインターフェイス(SDI)

    Excelのドキュメントインターフェイスは、Excel 2013からSDIに変更になりました。そのため今まで利用できていた機能やVBAが利用できなくなくなる場合があります。

    UIExcelのバージョン
    マルチドキュメントインターフェイス(MDI)〜Excel 2010
    シングルドキュメントインターフェイス(SDI)Excel 2013〜
  • ブックの保護

    シートの構成(ワークシートを追加したり削除したり、非表示のワークシートを表示したりなど)を変更できなくするには、校閲タブのブックの保護 - シート構成にチェックを入れることで実現できます。

    エクセルの幅や高さを固定して移動などもできなくする場合は、校閲タブのブックの保護 - ウインドウにチェックを入れます。ただしシングルドキュメントインターフェイスのExcelではウインドウが無効(グレーアウト)されて利用できません