「シートの保護」と「範囲の編集を許可」について


別の人に操作してもらうブックで、セルに長い数式を入力しているとき、ウッカリそのセルに数値や文字列を上書きされて、腸が煮えくりかえる思いをした経験はありませんか?ありますよね。もちろん、ありますよね。てゆーか、むしろありますよね。そうしたウッカリを防ぐために、よく「シートの保護」が行われます。シートを保護すると、特定のセルだけ編集可能にすることができます。やってみましょう。

A列とB列には適当な数値が入っています。C列には数式が入力されています。この中で「セル範囲B2:B5だけは編集できるけど、他のセルは編集できない」状態を作ってみます。このときの手順というか考え方なんですけど、ちょっと分かりにくいので説明します。

まず基本的に「シートを保護すると、すべてのセルが編集不可になる」という認識を持ってください。これから、シートの保護をするのですが、それだけでは、どのセルも編集できなくなります。セルには「ロック」という書式設定があって、初期状態ではすべてのセルが「ロック:オン」になっています。「ロック:オン」のセルは、シートを保護すると編集できなくなるので、シートを保護する前に「編集を許可するセルのロックを外す」という操作をします。ここ、ちょっと直感的ではないので、勘違いしないでください。保護したいセルだけ何かするのではなく、保護したくないセルだけ書式を変えてから、シートを保護します。

下図のように、編集を許可したいセル範囲B2:B5を選択して、右クリックからの[セルの書式設定]を実行するか、Ctrl + 1キーを押してください。[セルの書式設定]ダイアログボックスが表示されますので、[保護]タブを開きます。

最初は、[ロック]チェックボックスがオンになっていますので、これをオフにして[OK]ボタンをクリックします。ちなみに、[ロック]チェックボックスの下に[表示しない]チェックボックスがあります。これも、あまり知られていませんので、ついでにご紹介します。今度は、数式を入力してあるセル範囲C2:C5を選択して、[セルの書式設定]ダイアログボックスを開いてください。

こちらも、最初は[ロック]チェックボックスがオンになっています。これは、そのままでいいです。その下の[表示しない]チェックボックスは、標準でオフですが、これをオンにしてください。

[OK]ボタンをクリックして[セルの書式設定]ダイアログボックスを閉じたら、次はいよいよ、シートを保護します。シートの保護と保護解除を行うボタンは、リボンの中に2カ所あります。[ホーム]タブ[セル]グループの[書式]をクリックするとメニューが表示されます。このメニューの下の方に[シートの保護]があります。

ここには、その下に[セルのロック]というコマンドがあります。実は、これを使って、セルのロックをオン/オフすることもできます。さて、もうひとつのボタンは[校閲]タブ[保護]グループにあります。

どちらでも、お好きな方をクリックしてください。実行すると、次のダイアログボックスが開きます。

このダイアログボックスで、いろいろな設定ができるのですが、機能というか表記というか、ちょっと難しいので丁寧に見ていきましょう。まず、一番上にある[シートの保護を解除するためのパスワード]ボックスです。これは、まぁ分かりますよね。パスワードを設定しなかったら、誰でも簡単に保護を解除できちゃいます。ザルです。なので、普通はパスワードを設定します。ただし!このパスワードを忘れたら解除できなくなりますので、注意してください。

その下にあるのが[シートとロックされたセルの内容を保護する]チェックボックスなんですけど、正直これの意味がよく分かりません。この機能って「シートやセルを保護する」ためにあるんですよね。なのにチェックボックスをオフにして「保護しない」って、なんじゃそりゃ?って感じです。ちなみにですけど、このチェックボックスをオフにしていると、一番下の[OK]ボタンをクリックできません。ということは、このチェックボックスって、オン必須なのかなって。そうなると、さらに意味が分かりません。もしかすると、昔の名残なのかな?あまり興味がないので、詳しく調べていません。まぁ、いずれにしても、ここをオフにする機会はないのでは?って思います。

さて、その下にたくさんの選択肢が並んでいます。この意味を勘違いしないでくださいね。この選択肢で、チェックボックスをオンにした操作は「ユーザーに許可します」という意味です。もし、[列の挿入]をオンにして[列の削除]がオフだったら、保護されたシート上で「列の挿入はできるけど、列の削除はできない」状態になります。そして、標準では先頭の2つにチェックがついています。

  1. ロックされたセル範囲の選択
  2. ロックされていないセル範囲の選択

先に書いたように、ここは「ユーザーに許可する」操作を選択するところです。つまり、この2項目がオンになっているということは、要するに「ロックされているセルでも、ロックされていないセルでも、いずれにしても選択だけはできますよ」ということです。もし「ロックされていないセル範囲の選択」をオフにすると、せっかくロックを外して「このセルだけは編集していいからね」としたところで、選択できないのですから意味がありません。

では、標準の

  1. ロックされたセル範囲の選択
  2. ロックされていないセル範囲の選択

だけをオンにして、シートを保護したとします。今回、ロックを外して編集可能にしたのは、セル範囲B2:B5だけです。でも、ロックして、編集できないセルであっても、選択だけは可能です。

しかし、この選択したセルに何かの編集を試みると、次のように注意が表示されます。

「変更しようとしているセルやグラフは保護されているシート上にあります。」なるほど、正しい表現ですね。「そのセルは保護されています」じゃありません。保護されているのはシートです。もちろん、ロックを外したセル範囲B2:B5は自由に編集できます。

ところで、数式が入力されているセル範囲C2:C5は、ロックをオンのままにして編集できなくしました。そしてさらに[表示しない]のチェックボックスもオンにしました。その結果、セル範囲C2:C5内のセルを選択しても、セル内の数式や値が、数式バーに表示されません

取引先などに渡すブックで、何らかの理由によって「どんな計算をしているか見せたくない」ようなときに使えます。ちなみに、FORMULATEXT関数でも取得できません。

もちろん、VBAを使ってもダメです。

なんか、こうなると逆にちょっと悔しいですね。何とかしてセルの数式を調べることはできないのでしょうか。だったら、とっておきの手を使いましょう。ブックをCSV形式で保存しても、数式の結果しか保存されません。でも、大昔に使われていて、なぜか今のExcelでもサポートされている「SYLK形式」だったら、確か計算式の内容がテキスト形式で保存されたはずです。たとえば、こんな感じに。

へっへっへ…Office TANAKAなめんなよw 保護したブックをSYLK形式で保存してやんよ!

Σ(*゚Д`;) こ、これくらいで数式が取得されたら保護の意味ないしな。まぁ、当然っちゃ当然かな。今日はこのへんで、かんべんしといてやるか…。

「範囲の編集を許可する」とは

[校閲]タブ[保護]グループには、もうひとつ「範囲の編集を許可する」という機能があります。これは、ここまで解説してきた「セルのロックを外す+シートの保護」と何が違うのでしょうか。

実際にやってみましょう。まずは、ここまでの設定などをすべて元に戻します。

いわゆる、セルの初期状態です。では、あらためて、編集させたくないセル範囲B2:B5を選択して、[範囲の編集を許可する]ボタンをクリックします。実行すると、次のダイアログボックスが表示されます。

[新規]ボタンがあることから、どうやら編集させたくないセル範囲を、ここに登録するようです。冒頭には「シートが保護されているときにパスワードでロックを解除する範囲」と書かれています。[新規]ボタンをクリックしてみましょう。

[新しい範囲]ダイアログボックスが表示されました。[タイトル]ボックスで、この範囲に分かりやすい名前を付けられるようです。[セル参照]ボックスには、あらかじめ選択していたセル範囲のアドレスが表示されています。もちろん、右端の[セル選択]ボタン(↑)をクリックして、別のセル範囲を指定することも可能です。[範囲パスワード]ボックスに適当なパスワードを入力して[OK]ボタンをクリックします。もう一度パスワードを再入力させられた後で、[範囲の編集の許可]ダイアログボックスに戻ります。

左下の[シートの保護]ボタンをクリックします。

先ほどと同じ[シートの保護]ダイアログボックスです。これは、先の解説で登場したのと同じです。[OK]ボタンをクリックすると、シートが保護されます。まず、何もしていないA列のセルを編集してみます。

先の「セルのロックを外す+シートの保護」と同じです。では次に、パスワードを設定したセルを編集してみましょう。

パスワードの入力を求められます。ここで間違ったパスワードを入力すると

だそうです。もちろん、正しいパスワードを入力すると、セルを編集できるようになります。

セルを編集できなくするという機能に違いはありませんが、あらかじめパスワードを知っているユーザーなら編集可能という、いわば"条件付きの保護"みたいな機能ですね。

気になっている方も多いことでしょう。たとえば[セルの編集の保護]ダイアログボックスに、[パスワードなしで範囲内のセルを編集できるユーザーの指定]ということで[許可]ボタンがあります。これをクリックすると、次のダイアログボックスが開きます。

ここで[追加]ボタンをクリックすると[ユーザーまたはグループの選択]ダイアログボックスが表示されます。

ここで、パスワードを入力しなくても、自由にセルを編集できる権限を与えることができます。ただ、これは、Windowsやネットワーク、Active Directoryなどと関連した話で、設定するのは難しいです。詳しくは、システム責任者に相談してください。試しに、このPCにログインしている私自身のアカウントを登録したところ、シートを保護していてもパスワードは要求されませんでした。

両者の機能的な違い

このように、特定のセルを編集させない仕組みには、「セルのロックを外してからシートを保護する」方法と、「セルの編集を許可してからシートを保護する」やり方の二通りがあります。両者の機能的な違いをまとめてみましょう。

・セルのロックを外してからシートを保護する

シートを保護すると、すべてのセルが編集不可になります。なので、編集を許可するセルだけロックを外しておきます。ユーザーは、シートの保護を解除しない限り、ロックが外れているセルしか編集できません。編集できるか、編集できないかの二者択一的な、割と大雑把な仕組みです。

・セルの編集を許可してからシートを保護する

セルの書式設定にある[ロック]とは関係なく、編集を許可するセルだけをあらかじめ登録しておきます。登録したセルまたはセル範囲には、個別にパスワードを設定できます。パスワードを知っているユーザーは、シートの保護を解除することなくセルを編集できます。ユーザーに与えた権限に応じて、編集できるところと、編集できないところを区別するなど、きめ細かい制限が可能です。

ということですね。この[範囲の編集を許可する]という機能は、Excel 2002で追加されたのですが、その後あまり話題には上がっていませんし、使っているという声も、ほとんど聞きません。理由は分かりませんが、私が想像するに、多くのユーザーは「とにかくセルを編集させたくない!」という思いが強く、きめ細かい制御など期待していないのではないでしょうか。何と言っても、数式を消されないようにするのが目的なのですから。だったら、大昔からある「セルのロックを外してからシートを保護する」仕組みだけで十分なのではないでしょうかね。