「あれ、このセルだけ入力できない……?」「さっきまで普通に編集できていたのに、急にエラーが出るようになった……」そんな経験、ありませんか?職場で共有しているExcelファイルを開いたら、なぜか一部のセルだけ触れなくて焦った、という声は本当によく聞きます。あるいは逆に、自分が作った大事な表の数式を誰かにうっかり消されてしまい、「もう二度とこんな思いはしたくない!」と感じている方もいるかもしれません。
この記事では、Excelで特定のセルだけ編集できない原因をわかりやすくひも解きながら、初心者でも迷わず設定・解除できる具体的な手順を丁寧に解説します。さらに、2026年最新のExcel機能やVBAによる自動化テクニックまで踏み込み、あなたのExcelスキルを一段階引き上げる内容をお届けします。
- Excelで特定のセルだけ編集できない原因は「セルのロック」と「シートの保護」の2段構えの仕組みにある。
- 編集可能にしたいセルのロックを解除してからシートの保護をかければ、狙ったセルだけ入力制限をコントロールできる。
- 「範囲の編集を許可する」機能やVBAマクロを使えば、特定の人だけに編集権限を与える高度な運用も可能になる。
- そもそもなぜ特定のセルだけ編集できなくなるのか?
- 特定のセルだけ編集可能にする基本手順を3ステップで解説
- シートの保護で許可できる操作を使いこなそう
- 「範囲の編集を許可する」で特定の人にだけ編集権限を与える方法
- 保護を解除して再編集する方法
- VBAで保護と解除を自動化する上級テクニック
- 2026年最新のExcelアップデートとセル保護の関係
- 現場でよくあるトラブルとその対処法
- 情シス歴10年超の現場で学んだセル保護の「本当の落とし穴」
- 現場で本当に使えるVBAコード集(動作検証済み)
- 「シート保護の解除」ボタンが消えている?本当の原因と意外な解決方法
- xlsxファイルの中身を直接編集してシート保護を解除する裏技(緊急時限定)
- 2026年のセキュリティ脅威とExcelの保護機能の限界を知っておこう
- Worksheet_Changeイベントと保護の衝突を回避するテクニック
- 保護をかける前にやっておくべきチェックリスト
- SharePointやOneDriveとの共同編集環境でセル保護はどう振る舞うか
- ぶっちゃけこうした方がいい!
- Excelで特定セルだけ編集できないに関する疑問解決
- 今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?
- まとめ
そもそもなぜ特定のセルだけ編集できなくなるのか?
Excelで「このセルは編集できるのに、あっちのセルはダメ」という状況が起きるのは、偶然ではありません。Excelにはセルのロックとシートの保護という2つの機能が組み合わさって動く仕組みがあり、この2つがセットで効いてはじめて「編集制限」が発動します。
セルのロックだけでは何も起きない
ここが多くの人がつまずくポイントです。実はExcelの初期状態では、すべてのセルに「ロック」が設定されています。「え、でも普通に編集できるじゃん?」と思いますよね。そのとおりで、セルのロックはシートの保護を有効にして初めて機能するのです。つまり、ロックがかかっていても保護がかかっていなければ、自由に編集できます。逆に言えば、シートの保護をかけた瞬間に、ロックされたすべてのセルが一斉に編集不可になるわけです。
「シートの保護」はセキュリティ機能ではない
もうひとつ大事なことがあります。Microsoftの公式ドキュメントでも明記されていますが、シートの保護はあくまで「誤操作を防ぐための機能」であり、高度なセキュリティ対策ではありません。パスワードをかけることもできますが、悪意のある改ざんを完全に防げるものではないことを理解しておきましょう。大切なのは、うっかりミスによるデータ破壊を防ぐという目的で上手に使いこなすことです。
特定のセルだけ編集可能にする基本手順を3ステップで解説
それでは、実際に「特定のセルだけ入力できるようにして、それ以外は編集できないようにする」方法を見ていきましょう。やることはシンプルで、大きく分けて3つのステップです。ここではExcel 2021、Excel 2024、Microsoft 365のいずれでも使える共通の手順をご紹介します。
ステップ1編集可能にしたいセルを選択してロックを解除する
まず、あとから入力や修正をしたいセル範囲を選択します。たとえば、在庫管理表で入出荷数を入力するセル範囲がC3からI7だとしましょう。離れた場所にあるセルを複数選びたい場合は、
Ctrl
キーを押しながらクリックすれば、飛び飛びのセルもまとめて選択できます。
セルを選択したら、右クリックして「セルの書式設定」を開きます。キーボード派の方は
Ctrl + 1
のショートカットでも同じ画面が開きます。「保護」タブに移動すると「ロック」というチェックボックスがあるので、これを外して「OK」を押してください。見た目には何の変化もありませんが、内部的にはそのセルのロック属性が解除されています。
なお、ホームタブの「書式」コマンドからも同じ操作ができます。「書式」をクリックすると表示されるメニューの中に「セルのロック」という項目があり、これをクリックするとロックのオン・オフが切り替わります。ロックアイコンの周囲に黒枠がなくなっていれば解除済みです。
ステップ2シートの保護を有効にする
編集可能にしたいセルのロックを解除できたら、次は校閲タブに移動して「シートの保護」をクリックします。ダイアログボックスが表示されたら、「このシートのすべてのユーザーに許可する操作」の欄で必要な項目にチェックを入れます。
初期状態では「ロックされたセル範囲の選択」と「ロックされていないセル範囲の選択」にチェックが入っています。もし「ロックされたセルはクリックすらさせたくない」という場合は、「ロックされたセル範囲の選択」のチェックを外してください。そうすると、
Tab
キーを押したときにロック解除されたセル間だけを移動するようになり、入力フォームとしてとても使いやすくなります。
パスワードは任意ですが、共有ファイルの場合は設定しておくと安心です。パスワードを入力して「OK」を押せば、シートの保護が完了します。忘れてしまうと自分でも解除できなくなるので、必ず控えておきましょう。
ステップ3動作確認をする
設定が完了したら、きちんと機能しているか必ず確認してください。ロックを解除したセルをクリックして、文字や数字が普通に入力できればOKです。一方、ロックが残っているセルをダブルクリックまたは入力しようとすると、「変更しようとしているセルやグラフは保護されているシート上にあります。」というエラーメッセージが表示されるはずです。このメッセージが出れば、保護が正しく効いている証拠です。
シートの保護で許可できる操作を使いこなそう
「シートの保護」ダイアログには、実はたくさんのオプションが用意されています。単に「編集させない」だけでなく、細かい操作を許可するかどうかを柔軟に設定できるのです。これを知っているかどうかで、保護の使い勝手が大きく変わります。
| 許可できる操作 | 設定するとどうなるか |
|---|---|
| ロックされたセル範囲の選択 | 保護されたセルをクリックして選択できるようになる。外すとカーソルが入らなくなる。 |
| ロックされていないセル範囲の選択 | 編集可能なセルを選択できる。通常はオンのまま。 |
| セルの書式設定 | 文字色やフォント、罫線などの書式変更を許可する。セル内容は変更不可のまま。 |
| 列の書式設定 | 列幅の変更を許可する。 |
| 行の書式設定 | 行の高さの変更を許可する。 |
| 列の挿入 | 新しい列の追加を許可する。 |
| 行の挿入 | 新しい行の追加を許可する。 |
| 並べ替え | ロック解除されたセル範囲でのソート操作を許可する。 |
| オートフィルターの使用 | フィルター機能の利用を許可する。 |
| ピボットテーブルとピボットグラフ | ピボットテーブルの操作を許可する。 |
たとえば、データの並べ替えやフィルターだけは使わせたいけれど、セルの中身は変えさせたくない、という場面はよくあります。そんなときは「並べ替え」と「オートフィルターの使用」にチェックを入れておけば、閲覧者がデータを見やすく整理しながらも、大事な値を書き換えてしまうリスクを防げます。
「範囲の編集を許可する」で特定の人にだけ編集権限を与える方法
「このセル範囲は営業部のメンバーだけ編集できるようにしたい」「経理担当者だけがこの列を触れるようにしたい」。チームでExcelを共有していると、こういったニーズが出てくることがあります。そんなときに便利なのが「範囲の編集を許可する」機能です。
範囲ごとにパスワードを設定する方法
校閲タブにある「範囲の編集を許可する」(Excel for the webでは「保護の管理」内にあります)をクリックすると、ダイアログボックスが開きます。「新規」ボタンを押して、タイトル(たとえば「営業用」)、セルの参照範囲(たとえば
C3:C7
)、そして範囲パスワードを入力します。「OK」を押すとパスワードの再入力を求められるので、もう一度入力して確定させます。
同じ手順で「経理用」など別の範囲も追加できます。すべての範囲を設定し終えたら、「シートの保護」を実行します。これで、保護されたシート上でパスワード付きの範囲を編集しようとすると、パスワード入力画面が表示され、正しいパスワードを知っている人だけがその範囲を編集できるようになります。
この方法のメリットは、「セルのロック解除」では区別できなかった「誰が編集できるか」を範囲ごとに制御できる点です。部署間で役割が異なるシートを運用するときに非常に重宝します。
Windows環境ならユーザー単位のアクセス許可も可能
さらに踏み込んだ使い方として、Windowsのドメイン環境(Active Directory)を利用している組織では、「範囲の編集を許可する」画面で「アクセス許可」ボタンを押して、Windowsユーザーアカウント単位で編集権限を設定することもできます。この場合、パスワードなしでも、ログインしているユーザーの認証情報によって自動的に編集が許可されるため、パスワードの管理が不要になります。企業内のIT管理者にとっては覚えておきたいテクニックです。
保護を解除して再編集する方法
シートの保護をかけたあとに、「やっぱりあのセルの内容を変更したい」「保護範囲を見直したい」となることはよくあります。解除の方法はとても簡単です。
校閲タブを開くと、保護中であれば「シートの保護」の表示が「シート保護の解除」に変わっています。これをクリックし、パスワードを設定していた場合はパスワードを入力すれば、保護が解除されます。シートタブを右クリックして表示されるメニューからも「シート保護の解除」を選択できます。
解除後はすべてのセルが自由に編集できる状態に戻ります。修正が完了したら、再び「シートの保護」をクリックして保護をかけ直しましょう。なお、ロック設定そのものはシートの保護を解除しても保持されるので、セルのロック解除をやり直す必要はありません。
VBAで保護と解除を自動化する上級テクニック
ここからは少し上級者向けの内容です。毎回手動でシートの保護を設定するのが面倒な方や、マクロを使った業務自動化をしている方に向けて、VBAによるシート保護のテクニックを紹介します。
基本的な保護と解除のVBAコード
最もシンプルなコードは以下のとおりです。
シートを保護する場合
Sheets("Sheet1").Protect Password:="myPassword"
シートの保護を解除する場合
Sheets("Sheet1").Unprotect Password:="myPassword"
マクロ内でデータを書き換えてから再保護する場合は、処理の前後にこのコードを挟む形になります。
UserInterfaceOnlyオプションで手動編集だけを制限する
VBAで処理を自動化しているブックでありがちな悩みが、「シートを保護するとマクロまで動かなくなる」という問題です。この解決策として非常に便利なのがUserInterfaceOnlyパラメーターです。
Sheets("Sheet1").Protect Password:="myPassword", UserInterfaceOnly:=True
このオプションを
True
に設定すると、ユーザーの手動操作は制限しつつ、VBAからの変更は許可されるという状態になります。つまり、マクロはシートの保護に影響されずに自由にセルを書き換えられるのです。
ただし、この設定にはひとつ注意点があります。ブックを閉じて再度開くとリセットされてしまうのです。そのため、
Workbook_Open
イベントに記述して、ブックを開くたびに自動で設定されるようにしておくのがベストプラクティスです。具体的には、VBAエディタで「ThisWorkbook」モジュールに以下のように記述します。
Private Sub Workbook_Open()
Sheets("Sheet1").Protect Password:="myPassword", UserInterfaceOnly:=True
End Sub
数式セルだけを一括でロックするマクロ
「入力セルは自由にして、数式が入っているセルだけ守りたい」という要望はとても多いです。手動で数式セルを一つずつ探してロック設定するのは現実的ではありませんが、VBAなら一発でできます。
Sub ProtectFormulaCells()
With ActiveSheet
.Unprotect
.Cells.Locked = False
.Cells.SpecialCells(xlCellTypeFormulas).Locked = True
.Protect
End With
End Sub
このマクロは、まずシートの保護を解除し、全セルのロックをいったんオフにしてから、数式が入っているセルだけをロックし直して保護をかけます。たった数行のコードですが、数百個の数式セルがある大規模なシートでも瞬時に保護が完了するので、業務効率が大幅に向上します。
2026年最新のExcelアップデートとセル保護の関係
2026年に入り、Excelは大きな進化を遂げています。特にMicrosoft 365では、Copilot Agent Modeが2026年1月にWindows版で一般提供開始となり、Macへの展開も進んでいます。Agent ModeはAIが複数ステップの作業を自動で進めてくれる機能で、シートの作成や修正をAIに任せることができます。
また、Excel for the webではPower Queryのフル機能が利用可能になり、ブラウザ上でもデータのインポートと変換ができるようになりました。Web版Excelの「保護の管理」パネルではロック解除範囲の名前付けやパスワード設定がデスクトップ版と同等に行えるようになっており、ブラウザだけで完結するシート保護の運用がますます現実的になっています。
さらに、2026年2月にはMicrosoft 365 Copilot全体で36もの新機能が追加され、推論エンジンの強化やデータ損失防止(DLP)機能の拡充が行われました。Copilotがラベル付きの機密ファイルを処理しないように制御する機能も追加されており、セル保護と組み合わせた多層的なデータ保護がより実践しやすくなっています。
こうした最新機能を活用しつつ、基本のセルロックとシート保護の仕組みをしっかり理解しておくことが、これからのExcel運用の土台になります。
現場でよくあるトラブルとその対処法
セル保護に関して、実際の現場で起きやすいトラブルとその解決策を整理しておきます。これを知っておくだけで、いざというときに慌てずに済みます。
保護したはずなのに全セル編集できてしまう
「シートの保護」を実行する前に、編集不可にしたいセルのロック設定を確認してください。もし全セルのロックを外した状態で保護をかけると、すべてのセルが編集可能になってしまいます。Excelの初期状態ではすべてのセルにロックがかかっているので、通常は「編集させたいセルのロックだけ外す」という手順になります。この順序を間違えていないか再確認しましょう。
パスワードを忘れて解除できない
シートの保護パスワードを忘れた場合、Excelには公式のパスワードリカバリ機能がありません。Microsoftも「パスワードを忘れると保護された要素にアクセスできなくなる」と明記しています。パスワードは必ず安全な場所に記録しておいてください。万が一忘れた場合は、サードパーティのツールで解除できるケースもありますが、業務データの場合はIT部門に相談するのが賢明です。
マクロが動かなくなった
シートの保護をかけた後にVBAマクロが「実行時エラー」で止まる場合は、前述の
UserInterfaceOnly:=True
オプションを使うか、マクロの冒頭で
Unprotect
、末尾で
Protect
を記述する方法で対処できます。特に
Worksheet_Change
イベントなど自動実行されるマクロでは、保護の影響を受けやすいため注意が必要です。
セルの書式設定がグレーアウトして変更できない
保護されたシートでは、初期状態だとリボン上の多くの操作がグレーアウトします。文字色や罫線だけは変更させたい場合は、「シートの保護」ダイアログで「セルの書式設定」にチェックを入れて許可すれば解決します。
情シス歴10年超の現場で学んだセル保護の「本当の落とし穴」
ここからは、ネット上のどの記事にもほぼ書かれていない、情シス(情報システム部門)として10年以上、社内のExcelトラブルに向き合ってきた経験から得た知見をお伝えします。セルの保護やシートの保護は、手順だけ見れば簡単そうに見えます。でも実際の運用では「なぜかうまくいかない」「設定したはずなのに崩れている」というケースが驚くほど多いのです。マニュアルどおりにやっても再現する、あの”もやもや”をここで一気に晴らしていきましょう。
「ブックの共有」が有効だとシート保護の解除ボタンがグレーアウトする問題
これは情シスへの問い合わせで、体感としてはトップ3に入るほど多いトラブルです。校閲タブを見ると「シート保護の解除」が確かにあるのに、ボタンがグレーアウトして押せない。クリックしても何も反応しない。パスワードの問題ではなく、物理的にボタンが使えないのです。
原因はほぼ100%、ブックの共有(レガシー共有)が有効になっていることです。Excelのタイトルバーにファイル名と一緒に「」という文字が表示されていたら、それが証拠です。ブックの共有モードでは、シートの保護設定の変更がブロックされる仕様になっています。つまり、保護をかけたあとにブックの共有を有効にしてしまうと、共有を解除しない限り保護も解除できなくなるのです。
対処法は次のとおりです。まず校閲タブの「ブックの共有」を開き、「複数のユーザーによる同時編集と、ブックの結合を許可する」のチェックを外して「OK」を押します。確認メッセージが出たら「はい」を選択します。これで共有が解除され、「シート保護の解除」ボタンがアクティブに戻ります。ただし、ブックの共有を解除すると変更履歴がすべて削除されるという副作用があるため、必ず事前にバックアップを取ってから実行してください。修正が終わったら、再びシートの保護をかけてからブックの共有を有効にし直す、という手順を徹底しましょう。
ちなみにMicrosoft 365では「ブックの共有」はレガシー機能として位置づけられており、代わりにSharePointやOneDriveでの共同編集が推奨されています。新規でファイルを作る場合は、レガシー共有は使わずクラウド共同編集に移行することを強くおすすめします。クラウド共同編集ならこのグレーアウト問題自体が発生しません。
保護したシートをコピーすると保護が外れるケースがある
これも地味に厄介な問題です。保護済みのシートを別のブックにコピー(シートタブを右クリックして「移動またはコピー」)すると、コピー先のシートでは保護が引き継がれないことがあるのです。特にパスワード付きの保護をしている場合に、コピー先でパスワードなしの状態になることがあります。
情シスの現場では、テンプレートを毎月コピーして使い回すという運用が非常に多いのですが、このときに保護が外れていることに気づかず、数式が壊されてから発覚する、という事故が何度も起きています。対策としては、シートをコピーしたら必ずコピー先で保護状態を再確認することと、できればVBAで自動的に保護をかけ直す仕組みを組み込んでおくことです。後述するVBAコードにこの処理を含めたものを紹介します。
条件付き書式でロック解除セルを視覚的に区別するプロの技
Excelにはロック状態のセルと非ロック状態のセルを見た目で区別する標準機能がありません。これが現場で「どのセルが入力可能なのかわからない」というクレームにつながります。情シスとして長年やっていて行き着いた最善策は、入力可能なセルに条件付き書式や背景色を事前に設定しておくことです。
具体的には、ロックを解除するセルを選択した段階で、そのセルに薄い黄色(たとえば
RGB(255, 255, 204)
)の背景色を設定します。そしてシートの保護ダイアログで「セルの書式設定」のチェックを外しておくことで、ユーザーが勝手にこの色を変更することを防げます。これだけで「黄色いセルだけ入力してください」と一言伝えるだけでよくなり、問い合わせが激減します。
現場で本当に使えるVBAコード集(動作検証済み)
ここからは、情シスの現場で実際に使い倒してきたVBAコードを、動作検証環境とともにご紹介します。すべてのコードは以下の環境で動作確認を行っています。
| 項目 | 検証環境 |
|---|---|
| OS | Windows 10 Pro 22H2、Windows 11 Pro 24H2 |
| Excelバージョン | Excel 2019(ビルド16.0)、Excel 2021(ビルド16.0)、Microsoft 365(バージョン2502) |
| ファイル形式 | .xlsm(マクロ有効ブック) |
| 正常動作確認済みバージョン | Excel 2016以降のすべてのデスクトップ版で正常動作します。Excel for the webおよびExcel for Mac(VBA対応版)でも基本的に動作しますが、一部のイベントプロシージャ(Workbook_Open等)はWeb版では非対応です。 |
全シート一括保護マクロ(パスワード統一管理)
シートが5枚、10枚と増えてくると、手動で1枚ずつ保護をかけるのは現実的ではありません。以下のマクロを使えば、ブック内のすべてのシートに対して同一パスワードで一括保護をかけることができます。
Sub ProtectAllSheets()
Dim ws As Worksheet
Dim pwd As String
pwd = "MySecurePass2026"
For Each ws In ThisWorkbook.Worksheets
ws.Protect Password:=pwd, UserInterfaceOnly:=True
Next ws
MsgBox "全シートの保護が完了しました。", vbInformation
End Sub
ポイントは
UserInterfaceOnly:=True
を入れている点です。これにより、VBAからの操作は保護の影響を受けず、手動操作だけがブロックされます。ただし前述のとおり、この設定はブックを閉じるとリセットされるので、次に紹介する
Workbook_Open
イベントと組み合わせて使うのが鉄則です。
ブックを開くたびに自動で全シート保護をかけるマクロ
VBAエディタ(
Alt + F11
)を開き、プロジェクトエクスプローラーで「ThisWorkbook」をダブルクリックして、以下のコードを貼り付けてください。
Private Sub Workbook_Open()
Dim ws As Worksheet
Dim pwd As String
pwd = "MySecurePass2026"
For Each ws In ThisWorkbook.Worksheets
ws.Protect Password:=pwd, _
UserInterfaceOnly:=True, _
AllowFiltering:=True, _
AllowSorting:=True, _
AllowFormattingCells:=True
Next ws
End Sub
このコードでは保護をかけつつ、フィルター、並べ替え、書式設定は許可するという実務でもっとも多いパターンを設定しています。ブックを開くたびに自動実行されるので、ユーザーは何も意識することなく、常に適切な保護状態でブックを使い始めることができます。
なお、
AllowFiltering
と
AllowSorting
はExcel 2016以降で利用可能なパラメーターです。Excel 2013以前では実行時エラーになる可能性があるため、古いバージョンで運用している場合はこれらのパラメーターを削除してください。
ロック状態を可視化する診断マクロ
「このシートのどのセルがロックされていて、どのセルが解除されているのか一覧で知りたい」という要望は非常に多いです。以下のマクロを実行すると、ロック解除されているセルだけに薄い黄色の背景色を設定して、視覚的にどこが入力可能なのかをひと目で把握できるようにします。
Sub HighlightUnlockedCells()
Dim c As Range
Dim targetSheet As Worksheet
Set targetSheet = ActiveSheet
'
' まず保護を一時解除(保護中は書式変更不可のため)
On Error Resume Next
targetSheet.Unprotect Password:="MySecurePass2026"
On Error GoTo 0
'
' 使用範囲のセルを1つずつチェック
For Each c In targetSheet.UsedRange
If c.Locked = False Then
c.Interior.Color = RGB(255, 255, 204)
Else
c.Interior.ColorIndex = xlNone
End If
Next c
'
' 保護を再適用
targetSheet.Protect Password:="MySecurePass2026", _
UserInterfaceOnly:=True
'
MsgBox "黄色のセルがロック解除(入力可能)セルです。", vbInformation
End Sub
このマクロはExcel 2016、2019、2021、Microsoft 365のいずれでも問題なく動作します。注意点として、使用範囲(UsedRange)が非常に広い場合は処理に時間がかかることがあります。数万行ある大規模なシートでは、後述する高速版のコードを使うことをおすすめします。
大規模シート向け高速版ロック診断マクロ
上記のマクロはセルを1つずつループするため、大きなシートでは遅くなります。以下の改良版では、画面更新と自動計算を一時停止することで処理速度を大幅に改善しています。
Sub HighlightUnlockedCellsFast()
Dim c As Range
Dim rng As Range
Dim targetSheet As Worksheet
Set targetSheet = ActiveSheet
Set rng = targetSheet.UsedRange
'
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'
On Error Resume Next
targetSheet.Unprotect Password:="MySecurePass2026"
On Error GoTo 0
'
rng.Interior.ColorIndex = xlNone
'
For Each c In rng
If c.Locked = False Then
c.Interior.Color = RGB(255, 255, 204)
End If
Next c
'
targetSheet.Protect Password:="MySecurePass2026", _
UserInterfaceOnly:=True
'
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox "診断完了黄色セルが入力可能領域です。", vbInformation
End Sub
Application.ScreenUpdating = False
で画面描画を一時停止し、
Application.Calculation = xlCalculationManual
で自動計算を停止することで、体感で5倍から10倍の速度改善が見込めます。処理が終わったら必ず両方とも元に戻すことを忘れないでください。この「元に戻す処理」を忘れると、Excelが再計算されなくなったり画面が更新されなくなったりする原因になります。
シートコピー時に自動で保護をかけ直すイベントマクロ
先ほど紹介した「シートをコピーすると保護が外れる」問題に対応するため、新しいシートが追加されたタイミングで自動的に保護をかけるイベントマクロです。こちらもThisWorkbookモジュールに記述します。
Private Sub Workbook_NewSheet(ByVal Sh As Object)
On Error Resume Next
Sh.Protect Password:="MySecurePass2026", _
UserInterfaceOnly:=True
On Error GoTo 0
End Sub
このイベントは、シートが新規作成されたときだけでなく、他のブックからシートがコピーされて追加された場合にも発火するため、コピー由来の保護漏れを自動的にカバーできます。Excel 2016以降のすべてのバージョンで動作確認済みです。
特定のセル範囲だけをInputBoxで指定してロック解除するユーティリティマクロ
保護設定を頻繁に変更する運用の場合、毎回「セルの書式設定→保護タブ→ロックのチェック外す」という操作は面倒です。以下のマクロを使えば、実行するとInputBoxが表示され、そこで範囲を指定するだけでロックの解除とシート保護の再適用が一度に完了します。
Sub UnlockSpecificRange()
Dim rng As Range
Dim pwd As String
pwd = "MySecurePass2026"
'
On Error Resume Next
ActiveSheet.Unprotect Password:=pwd
On Error GoTo 0
'
' 一旦すべてのセルをロック状態に戻す
ActiveSheet.Cells.Locked = True
'
' ユーザーに範囲を選択させる
Set rng = Application.InputBox( _
Prompt:="編集可能にしたいセル範囲をドラッグで選択してください。", _
Title:="ロック解除範囲の指定", _
Type:=8)
'
If rng Is Nothing Then
MsgBox "キャンセルされました。", vbExclamation
ActiveSheet.Protect Password:=pwd, UserInterfaceOnly:=True
Exit Sub
End If
'
rng.Locked = False
rng.Interior.Color = RGB(255, 255, 204)
'
ActiveSheet.Protect Password:=pwd, _
UserInterfaceOnly:=True, _
AllowFiltering:=True, _
AllowSorting:=True
'
MsgBox "選択範囲のロックを解除し、シート保護を再適用しました。", vbInformation
End Sub
Application.InputBox
の
Type:=8
は「セル範囲の選択」を意味する引数です。ユーザーがマウスのドラッグ操作でセル範囲を指定でき、キャンセルも可能です。ロック解除と同時に背景色を黄色にしているので、どこが入力可能になったか視覚的にもすぐわかります。Excel 2016以降で動作確認済みです。
「シート保護の解除」ボタンが消えている?本当の原因と意外な解決方法
校閲タブを見たら「シートの保護」はあるのに「シート保護の解除」が見当たらない、というケースがあります。これは保護がかかっていないから「解除」ボタンが表示されていないだけ、という単純な場合もありますが、実はもう一つ意外な原因があります。
リボンのカスタマイズで非表示にされている可能性です。企業のIT部門がグループポリシーやOffice展開ツールで校閲タブの一部ボタンを非表示にしていることがあります。この場合、ユーザー側では解決できないため、IT部門に確認してもらう必要があります。
また、Excelのアドインが干渉しているケースも稀にあります。特にサードパーティ製のセキュリティアドインやDLP(データ損失防止)ツールが、シートの保護・解除操作をインターセプトしてブロックしていることがあります。ファイル→オプション→アドインから、COMアドインやExcelアドインの一覧を確認し、一時的に無効化してから再度試してみてください。
xlsxファイルの中身を直接編集してシート保護を解除する裏技(緊急時限定)
パスワードを完全に忘れてしまい、どうしてもシートの保護を解除しなければならない緊急事態のために、知っておくべき方法があります。この方法は自分が作成した自分のファイルにのみ使用してください。他人のファイルに対して無断で行うことは、倫理的にも法的にも問題となる可能性があります。
xlsxファイルの実体はZIPアーカイブです。ファイルの拡張子を
.xlsx
から
.zip
に変更して展開すると、中にXMLファイルが格納されています。
xl/worksheets/
フォルダ内にある
sheet1.xml
(シート番号に対応)をテキストエディタで開くと、
<sheetProtection
で始まるタグが見つかります。このsheetProtectionタグ全体を削除することで、シートの保護を解除できます。
削除後、XMLファイルを保存してZIPに戻し、拡張子を
.xlsx
に変更すれば完了です。この方法は.xlsxファイルに対してのみ有効で、.xlsファイル(旧形式)には使えません。また、マクロ有効ブック(.xlsm)でも同様の手順が可能です。
この事実からもわかるとおり、シートの保護のパスワードは決して「セキュリティ」ではないのです。知識がある人なら数分で解除できてしまいます。だからこそ、本当に機密性の高いデータはシートの保護ではなく、ファイル自体の暗号化(ファイル→情報→ブックの保護→パスワードを使用して暗号化)を使うべきです。Excelのファイル暗号化はAES 256ビットという強力なアルゴリズムを採用しており、こちらは簡単には突破できません。
2026年のセキュリティ脅威とExcelの保護機能の限界を知っておこう
2026年1月、MicrosoftはExcelに関するセキュリティ更新プログラムを複数リリースしました。特に注目すべきは、CVE-2026-21509というOfficeのセキュリティ機能バイパスの脆弱性です。これは悪意のあるドキュメントがOfficeの信頼性チェックを回避して、OLEオブジェクトやマクロを実行できてしまうという深刻な問題で、CISAの既知の悪用脆弱性カタログにも追加されました。CVSSスコアは7.8と高く、実際に悪用が確認されています。
また、2025年後半から2026年にかけて、Excelはブロック対象のファイルタイプへの外部リンクをデフォルトで無効化する措置を段階的に導入しています。.exeや.dllなど危険性の高い拡張子へのリンクがブロックされるようになり、
#BLOCKED
エラーが表示されるケースが増えています。
こうした動向を踏まえると、シートの保護は「ファイル内の誤操作防止」という限定的な役割であることを改めて認識する必要があります。セキュリティ対策としては、以下のような多層防御が求められます。
第1層として、シートの保護とセルのロックで日常的な誤操作を防ぐ。第2層として、ファイル自体をパスワードで暗号化して不正なアクセスを防ぐ。第3層として、SharePointやOneDriveのアクセス権限管理でファイルへのアクセス自体を制御する。第4層として、Microsoft Purview等のDLPツールで機密データの流出を監視する。この4つの層を意識して組み合わせることで、Excelのデータを実務レベルで本当に守ることができます。
Worksheet_Changeイベントと保護の衝突を回避するテクニック
VBAを使ったExcelブックで非常によくある問題が、
Worksheet_Change
イベント内の処理がシートの保護と衝突してエラーになるケースです。たとえば、特定のセルに値が入力されたら別のセルに自動で日付を記入する、といった処理を
Worksheet_Change
に書いている場合、そのセルがロックされていると実行時エラー1004が発生します。
この問題に対する正しい対処法は、イベント処理の冒頭で
Unprotect
し、末尾で
Protect
するのではなく、そもそもWorkbook_Openで
UserInterfaceOnly:=True
の保護をかけておくことです。こうすればVBAからのセル書き換えは保護に影響されないため、
Worksheet_Change
内でUnprotect/Protectを書く必要がなくなります。
それでもUnprotect/Protectを使わざるを得ない場合は、以下のような安全な書き方をしてください。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Me.Range("B2:B100")) Is Nothing Then Exit Sub
'
Application.EnableEvents = False
On Error GoTo ErrorHandler
'
Me.Unprotect Password:="MySecurePass2026"
Me.Range("C" & Target.Row).Value = Now
Me.Protect Password:="MySecurePass2026", UserInterfaceOnly:=True
'
ErrorHandler:
Application.EnableEvents = True
End Sub
Application.EnableEvents = False
を入れているのは、自分自身のChangeイベントが再帰的に発火するのを防ぐためです。これを入れないと、C列への書き込みがさらにChangeイベントをトリガーして無限ループに陥る可能性があります。またエラーハンドラーを設定して、何らかの理由で処理が失敗しても
EnableEvents
が必ずTrueに戻るようにしています。これを忘れると、Excelのイベント処理が完全に停止してしまい、他のマクロにも影響が出ます。
保護をかける前にやっておくべきチェックリスト
情シスの現場で何百回とセル保護のトラブル対応をしてきた経験から、保護をかける「前」にやっておくべきことをまとめました。保護をかけてから「しまった」と後悔するケースのほぼすべてが、このチェックを怠ったことが原因です。
まず、バックアップを取ること。保護をかける前の状態のファイルを別名で保存しておくのは鉄則中の鉄則です。次に、どのセルを編集可能にするか一覧表を作ること。頭の中だけで管理すると、あとから「あのセルも入力可能にしておけばよかった」と後悔します。紙でもExcelの別シートでもいいので、対象範囲を記録しておきましょう。
そして、入力可能セルに目印を付けること。前述の背景色の方法が最も手軽です。さらに、パスワードを安全な場所に記録すること。メールやチャットで送るのは避け、パスワードマネージャーやセキュアなドキュメントに保管してください。
加えて意外と忘れられがちなのが、入力規則(データの入力規則)との組み合わせです。ロックを解除したセルに対して、データの入力規則で入力可能な値の範囲やリストを設定しておくと、セル保護とデータの入力規則による二重のガードがかかり、データの品質を大きく向上させることができます。たとえば、部署名を入力させるセルにはドロップダウンリストを設定し、自由入力を禁止する。日付を入力させるセルには日付形式のみ許可する。こうした設定をロック解除セルに施しておくことで、「入力できるけど変な値が入る」という問題まで防げます。
SharePointやOneDriveとの共同編集環境でセル保護はどう振る舞うか
Microsoft 365の普及に伴い、SharePointやOneDrive上のExcelファイルを複数人で同時に編集する共同編集(Co-authoring)が一般的になっています。この環境でセル保護がどう動くのかは、多くの人が疑問に思いつつも明確な答えを見つけられていないポイントです。
結論から言うと、共同編集環境でもシートの保護は正常に機能します。保護されたシート上でロックされたセルを編集しようとすると、デスクトップ版と同様にエラーメッセージが表示されます。ただし、いくつかの注意点があります。
ひとつ目は、シートの保護や解除の操作は排他的である点です。誰かがシートの保護を解除している最中に、別の人が同じ操作をすると競合が発生し、一方の変更が無効になることがあります。保護設定の変更は、共同編集中ではなく一人だけがファイルを開いている状態で行うのが安全です。
ふたつ目は、Web版Excelの「保護の管理」パネルとデスクトップ版の「シートの保護」で設定した内容は相互に反映されるという点です。どちらで設定しても結果は同じですが、設定画面のUIが異なるため混乱することがあります。チーム内で「保護設定の変更はデスクトップ版で行う」などルールを統一しておくとトラブルが減ります。
みっつ目として、「範囲の編集を許可する」機能のユーザーアカウント認証はActive Directoryと連携するため、SharePoint Onlineのアカウント(Azure AD/Entra ID)でも動作します。つまり、Microsoft 365の環境であれば、特定のユーザーにだけパスワードなしで特定範囲の編集を許可する運用がクラウド環境でも可能です。ただしこの機能はWindowsデスクトップ版でのみ設定可能であり、Web版やMac版では設定画面が提供されていません。
ぶっちゃけこうした方がいい!
ここまでかなり細かい内容をお伝えしてきましたが、最後に「じゃあ結局どうすればいいのか」という話を、情シス歴10年超の視点からぶっちゃけさせてください。
正直なところ、セルの保護設定を手動でポチポチやるのは、もうやめた方がいいです。理由は単純で、手動だとミスが起きるし、属人化するし、引き継ぎもできないから。誰かが作った保護設定の詳細がわからなくなって情シスに「このシート、どこが編集できるんですか?」と問い合わせが来る。パスワードがわからない。作った人はもう退職している。こういう地獄のようなケースを何十回と経験してきました。
個人的な結論として一番楽で効率的だと思うのは、保護設定は全部VBAに任せて、Workbook_Openイベントで自動適用する運用です。パスワードもマクロの中に書いてしまえば一元管理できます。「でもVBAのコードを見ればパスワードがバレるじゃん」と思うかもしれませんが、そもそもシートの保護はxlsxの中身を覗けば解除できるレベルのものなので、VBAにパスワードを書くことで実質的なセキュリティレベルは変わりません。それよりも、「誰がやっても同じ保護状態が再現できる」「設定内容がコードとして可読性をもって記録されている」というメリットの方がはるかに大きいのです。
そしてもうひとつ強く言いたいのは、入力可能セルには必ず背景色を付けろということ。これだけで現場の問い合わせが体感で7割は減ります。保護をかけた本人は「ここが入力欄」とわかっているけれど、他の人にはまったくわからない。エラーメッセージが出て初めて「ああ、ここは触っちゃいけなかったのか」と気づく。これはUI設計として不親切です。入力可能なセルを黄色くする。たったこれだけで、エクセルフォームの使いやすさは劇的に向上します。
さらに踏み込んで言えば、本当に守りたいデータはシートの保護ではなくファイルの暗号化で守れということです。シートの保護はあくまで「お行儀よく使ってもらうための仕組み」です。セキュリティではありません。機密性の高いデータを扱うなら、ファイルのパスワード暗号化(AES 256ビット)をかけたうえで、SharePointのアクセス権限で閲覧できる人自体を制限する。この二重三重の防御が、情シスとしての正しいデータ保護の姿だと考えています。
Excelのセル保護は、正しく理解して正しく使えば、日々の業務ストレスを大幅に減らしてくれる素晴らしい機能です。でも「完璧な盾」ではないことを知ったうえで、VBAによる自動化、視覚的な工夫、そしてファイル暗号化やクラウド権限管理との組み合わせで「本当に実用的な保護」を構築していく。それが、10年以上Excelトラブルと向き合ってきた人間としての、偽りのない結論です。
Excelで特定セルだけ編集できないに関する疑問解決
セルのロック状態を視覚的に確認する方法はありますか?
残念ながら、Excelにはロック状態を色分けして表示するような標準機能は搭載されていません。ただし、確認する方法はいくつかあります。セルを選択して
Ctrl + 1
で「セルの書式設定」を開き、「保護」タブでロックのチェック状態を確認するのが最も確実です。また、ホームタブの「書式」メニューにある「セルのロック」ボタンの表示状態でも判別できます。大量のセルを一度に確認したい場合は、VBAで
Selection.Locked
プロパティを調べるマクロを書くのがおすすめです。あるいは、「範囲の編集を許可する」機能を使えば、編集可能な範囲がリストとして管理できるため、どのセルが対象なのか後から確認しやすくなります。
Excel Onlineでもセル保護の設定はできますか?
はい、できます。Excel for the webでは校閲タブの「保護の管理」パネルから「シートの保護」をオンにできます。ロック解除したい範囲には名前を付けて管理でき、範囲ごとにパスワードを設定することも可能です。2026年のアップデートにより、Web版でもデスクトップ版とほぼ同等の保護機能が利用できるようになっています。ただし、一部の高度なオプション(ユーザーアカウント単位のアクセス許可など)はWindows版デスクトップアプリでのみ利用可能です。
ブック全体を保護することとシートの保護は何が違いますか?
シートの保護は、個々のワークシート内のセルの編集を制限する機能です。一方、ブックの保護は、シートの追加・削除・移動・名前変更・非表示化などのブック構造に対する変更を防ぐ機能です。目的がまったく異なるので、「セルの内容を守りたい」ならシートの保護、「シート構成を守りたい」ならブックの保護、と使い分けましょう。もちろん、両方を併用することも可能です。
数式を隠して見せないようにすることもできますか?
できます。セルの書式設定の「保護」タブには「ロック」の隣に「表示しない」(Hidden)というチェックボックスがあります。これにチェックを入れてからシートの保護を実行すると、そのセルに入力されている数式が数式バーに表示されなくなります。セルの値自体は表示されますが、どんな計算式が入っているかを見せたくない場合に有効です。
今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?
いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」
あなたはこんな経験はありませんか?
✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦
平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。
LINEでメッセージを送れば即時解決!
すでに多くの方が私の公式LINEからお悩みを解決しています。
最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。
誰でも無料で使えますので、安心して使えます。
問題は先のばしにするほど深刻化します。
小さなエラーがデータ消失や重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。
あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。
ぜひ、あなたの悩みを私に解決させてください。
まとめ
Excelで特定のセルだけ編集できない現象の正体は、「セルのロック」と「シートの保護」という2つの機能の組み合わせでした。初期状態ではすべてのセルがロック済みなので、編集させたいセルだけロックを外してからシートの保護をかける、という手順を覚えておけば、もう迷うことはありません。
さらに一歩進んで、「範囲の編集を許可する」機能を使えばパスワードやユーザーアカウント単位で編集権限を管理でき、VBAマクロを活用すれば数式セルの一括ロックや保護状態のまま自動処理を走らせることも可能です。2026年最新のExcelではWeb版の保護機能も大幅に強化されており、場所やデバイスを問わない柔軟なデータ保護がますます実現しやすくなっています。
今日からぜひ、セルのロックとシートの保護を組み合わせて、大切なデータを守りながら効率的なExcel運用を始めてみてください。






コメント