Excelファイルを他者に提供する際、算出過程の数式や算出根拠の係数リストなど、一部の情報を秘匿したい場合があります。例えば、合計の数式(単価×数式)は残したいが、仕入れと利益率の対応表や単価を決める数式は隠したい、といったケースです。
最も簡単なのは、数式で算出されたセルを選択して値貼り付けをし直し、係数リストを削除することです。ただ、この方法は、処理漏れのリスクがあります。
また、該当のシートや行・列を非表示にする方法もありますが、再表示が可能なので効果は限定的です。
今回は、より確実に上記のような情報を保護するいくつかの方法を紹介します。
数式を非表示にしてパスワードロック
数式を非表示にしてパスワードで保護します。数式内に隠したい係数も含まれている場合に使えます。
数式を非表示にしてロックの対象にする
- 非表示にしたいセル範囲を選択し、右クリック → [セルの書式設定]をクリックする
- [セルの書式設定]ダイアログボックスの[保護]タブで、[ロック]と[表示しない]の両方をチェックする
シートの保護をパスワード付きで設定する
- [校閲]タブで[シートの保護]をクリックする
- [シートの保護]ダイアログボックスでパスワードを入力し、[OK]をクリックする
数式が非表示になり、シートがパスワードロックされます。
ユーザー定義関数を使ってパスワードロック
数式の実体と係数をVBA化して、VBAの中身をパスワードで保護します。
該当箇所には「=ユーザー定義関数名(引数1,引数2)」のような数式が入りますが、関数内の処理内容を見ることはできません。
数式の非表示化を併用すれば、引数から類推されることも避けられます。
他ファイルへの参照とリンク解除を併用する
ブックファイルを本体とサブの二つに分けます。数式の実体や係数リストをサブブックに作成し、本体ブックはサブブックの結果を読み込むようにします。この読み込みは直接参照に限らず、VLOOKUPを使ってサブブック上の範囲と列を指定する方法も可能です。
内容が固まったら本体ファイルをコピーして提供用ファイルを作成し、リンクを一括解除します。リンクの解除によって、直接参照やVLOOKUPの数式が固定の値になります。
秘匿情報を持つサブブックは提供しないので、流出を確実に避けられます。万一リンクの解除を忘れたとしても流出には至りません(リンクのエラーにはなってしまいますが)。
また、ファイルを分けたことより、サブブックを再利用して同様の本体ブックを作成するような使い方ができます。