LoginSignup
4
3

More than 5 years have passed since last update.

特定のセルを保護して数式を隠したい

Posted at

割と調べるのが面倒だったので覚えとして。ちなみに隠せるとは言っていない。

Excel for Macでしか確認してないけどWindowsでもだいたい同じはず。

特定のセルの内容を非表示&編集不可にする

「ツール > 保護 > シートの保護」からシートを保護するとシートを編集できなくできるが、全てのセルが編集できなくなるし数式は丸見えだしコピーもできるのであまり意味がない。

例えば、データの入力欄だけを編集可能にして、ほかは編集させない、計算の過程も隠したい、というような場合にどうするか。このような場合はそれぞれのセルに個別に設定をする。

セルに対する個別の設定はシートの保護をする前に行う必要がある。具体的には設定したいセル範囲を選択した上でセルの書式設定を呼び出し(Ctrl+1または⌘+1)、「保護」タブから設定する。

スクリーンショット 2017-05-09 20.19.10.png

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

ロックを外せば編集可能なセルにできるし、表示しないにチェックを入れれば数式等を隠せる。

数式を隠すとこんな感じになる。

スクリーンショット 2017-05-09 19.36.06.png

隠した数式内で参照しているセルの中身を書き換えれば値も更新される。コピーもできるが、貼り付けると値になるので、数式は知られないで済む。

保護する際に一応パスワードの設定ができるので、設定しておくと無駄な安心感を得られる。

シートの保護を解除する

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

何か怒られるかもしれない。

スクリーンショット 2017-05-09 19.42.27.png

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

スクリーンショット 2017-05-09 19.42.59.png

従って、シートの保護にあたってパスワードを設定してもあまり意味はない。できれば編集してほしくないという意思表示程度の効果に思っておいたほうがいい。

xlsxファイルで面倒なのは読み取りパスワードくらいで、ブックの保護や書き込みパスワードなども概ね同様の手順で解除できる(cf. Excel の各種パスワードを突破する方法まとめ - Corredor)

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3