割と調べるのが面倒だったので覚えとして。ちなみに隠せるとは言っていない。
Excel for Macでしか確認してないけどWindowsでもだいたい同じはず。
特定のセルの内容を非表示&編集不可にする
「ツール > 保護 > シートの保護」からシートを保護するとシートを編集できなくできるが、全てのセルが編集できなくなるし数式は丸見えだしコピーもできるのであまり意味がない。
例えば、データの入力欄だけを編集可能にして、ほかは編集させない、計算の過程も隠したい、というような場合にどうするか。このような場合はそれぞれのセルに個別に設定をする。
セルに対する個別の設定はシートの保護をする前に行う必要がある。具体的には設定したいセル範囲を選択した上でセルの書式設定を呼び出し(Ctrl+1または⌘+1)、「保護」タブから設定する。

デフォルトでは「ロック」にチェックが入っていて「表示しない」にはチェックが入っていない。ゆえに、「シートの保護」をONにするとこの設定が全てのセルに適用され、編集はできないが中身丸見えみたいな状態になる。
ロックを外せば編集可能なセルにできるし、表示しないにチェックを入れれば数式等を隠せる。
数式を隠すとこんな感じになる。

隠した数式内で参照しているセルの中身を書き換えれば値も更新される。コピーもできるが、貼り付けると値になるので、数式は知られないで済む。
保護する際に一応パスワードの設定ができるので、設定しておくと無駄な安心感を得られる。
シートの保護を解除する
xlsx限定の話だが、xlsxはxmlをzip圧縮しただけのものなので普通に解凍ができる。
% unzip testbook.xlsx
Archive: testbook.xlsx
inflating: [Content_Types].xml
inflating: _rels/.rels
inflating: xl/_rels/workbook.xml.rels
inflating: xl/workbook.xml
inflating: xl/sharedStrings.xml
inflating: xl/theme/theme1.xml
inflating: xl/styles.xml
inflating: xl/worksheets/sheet1.xml
extracting: docProps/thumbnail.jpeg
inflating: docProps/app.xml
inflating: xl/calcChain.xml
inflating: docProps/core.xml
シートはxl/worksheets
フォルダに入っているので、適当なエディタで開く。
% ls xl/worksheets
sheet1.xml
% vi xl/worksheets/sheet1.xml
そしてpassword
とかで検索すると
<sheetProtection password="83AF" sheet="1" objects="1" scenarios="1" />
みたいなタグが見つかるので、消す。または、上記の例のようにpassword=
に"83AF"
を指定すればパスワードがpassword
になる。
しかる後に再圧縮する。finderからやる場合は階層を間違えないように(解凍してできたフォルダを選択して圧縮するのではなく、中身のファイルを全部選択して圧縮すること)。
% rm testbook.xlmx
% zip -r testbook_unpass.xlsx .
adding: [Content_Types].xml (deflated 73%)
adding: _rels/ (stored 0%)
adding: _rels/.rels (deflated 65%)
adding: docProps/ (stored 0%)
adding: docProps/app.xml (deflated 49%)
adding: docProps/core.xml (deflated 48%)
adding: docProps/thumbnail.jpeg (deflated 54%)
adding: xl/ (stored 0%)
adding: xl/_rels/ (stored 0%)
adding: xl/_rels/workbook.xml.rels (deflated 70%)
adding: xl/calcChain.xml (deflated 16%)
adding: xl/sharedStrings.xml (deflated 15%)
adding: xl/styles.xml (deflated 71%)
adding: xl/theme/ (stored 0%)
adding: xl/theme/theme1.xml (deflated 78%)
adding: xl/workbook.xml (deflated 54%)
adding: xl/worksheets/ (stored 0%)
adding: xl/worksheets/sheet1.xml (deflated 60%)
そして開く。
% open testbook_unpass.xlsx
何か怒られるかもしれない。

が、無視して開くと保護はなくなっている。

従って、シートの保護にあたってパスワードを設定してもあまり意味はない。できれば編集してほしくないという意思表示程度の効果に思っておいたほうがいい。
xlsxファイルで面倒なのは読み取りパスワードくらいで、ブックの保護や書き込みパスワードなども概ね同様の手順で解除できる(cf. Excel の各種パスワードを突破する方法まとめ - Corredor)