• 締切済み

Excelで非表示セルの値を参照させない事は可能?

Excelでグループ化やhiddenプロパティを使ってA列を非表示にしたとします。 これで値を隠すことは可能ですが、例えばB1セルに"=a1"と入力すればa1の値を確認することは可能です。 これを見せないようにすることは可能ですか? 正直、質問しつつ、たぶん無理だと思っています。 A1の値が1だったときはA列の内容を見せないようにしたい場合、みなさんだったらどのような手段をとりますか? auto_openで別シート等に退避させる、くらいでしょうか?

みんなの回答

  • wek00
  • ベストアンサー率61% (91/147)
回答No.3

通信の暗号化の要領で「読み取られても意味が分からないようにする」ことで 目的は達せられるのではないでしょうか。 詳しくは知らないのですが、 マクロやユーザー定義関数をユーザーに見せないようにする手段はあったはずです。 マクロ等で暗号化と復号化を行うようにし、かつ復号化関数を ユーザーが見られるところに直接記述しないようにしておけば それらしくなるのではないかと思います。 直接記述しない、という条件はおそらくかなり厄介ですし (当該データを使う処理を全てマクロ化することに) 少し技術がある人ならファイルの中身を直接読むなどして すぐに突破できそうな仕組みではありますが 一定の効果はあるのではないでしょうか。

回答No.2

こんにちは。 > Excelでグループ化やhiddenプロパティを使ってA列を非表示にしたとします。 [非表示]は、見た目を操作しているだけですから、 > これで値を隠すことは可能ですが、例えばB1セルに"=a1"と入力すればa1の値を確認することは可能です。 > これを見せないようにすることは可能ですか? > 正直、質問しつつ、たぶん無理だと思っています。 参照されることを制限するのは、無理だと思います。 例えば、[非表示]であってもコピーもできますし、 VBAで制限するにしても、 そのブックが閉じた状態での別ブックからや、 他のアプリケーションから、 参照するなどすれば、いくらでも見えない値を覗くことが可能です。 なので> auto_openで別シート等に退避させる <というのも 当ブックを閉じている時はやはり、無防備、ですよね。 もう少しルーズに考えるとして、 「コピペ」 「外部アプリケーションからの参照」 「当ブックが閉じている時の外部からの参照」 には目を瞑って、 "=a1"のような数式による参照を拒絶する だけならば、出来なくもないですけれど、 (一応、Private WithEvents xlApp As Excel.Application  Private Sub xlApp_SheetChange(...)  For Each r In Target  If r.HasFormula = True Then ... で数式を評価して書き換える方法) 余りにも不確かなものになってしまうようで、 VBA書いてはみたのですが途中で断念しました。 > A1の値が1だったときはA列の内容を見せないようにしたい場合、みなさんだったらどのような手段をとりますか? 発想を逆転して、設計を再考してみては如何でしょう。 「現在A列にあるデータ」を 他者に知られることのない別ファイルや別のシート、で管理するように変えて、 必要な時("A1の値が1[ではなかった]とき")にだけA列に表示(値を設定)する、 という風に設計を変えることができれば、"隠し通す"ことは出来るかな、と思います。 この場合は、A列には簡単なExcel数式、IF関数ぐらいで 列ごと[非表示]にしなくても良さそうですよね。 下手な喩えですが金庫と財布は別物、つまり保管と閲覧は別物、的な 私ならそういう設計にします。というより、そういう職場のルール下で仕事してますです。 Acccessなどを用いたデータベースの設計を考えてみれば、 データを保持するテーブルと、閲覧するレポートやフォームは別物ですから、 そういう意味では、 何でもかんでもひとつのシートに詰め込むようなExcelの扱い方というのは、 設計上の発展性が限られてしまう場面が多くなるように思います。 ExcelでリレーショナルDBを実践するのはそれはそれで難しいので特別奨めませんが、 シートやブック等を分けて、目的によって使い分けることを意識した設計 を選んでおけば、日常の作業も開発も、より易しいものに変わることが多いです。 「より厳密に」とか「何もそこまで」とか、人夫々、 「どの程度」が必要・十分と考えるのか、ということも、 実は全体の設計次第なのかな?と思っていたりもします。 答えになっていないようでしたらスミマセン。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

全ブックとシートを保護しては?

関連するQ&A