
多数のシート、マクロ、計算が行われているワークブックがあります。このシートを送信する必要があります (昨日までは予想していませんでした)。ユーザーが次の操作を実行できるように、シートをロックするにはどうすればよいでしょうか。
- マクロにアクセスできない/表示できないのですか?
- 非表示のシートを表示できませんか?
- コードを表示したり追加したりできない/
変更したいセルをすべて調べてロックを解除しました。ボタンと数式の非表示の行をロックしました。非表示のワークシート。ワークシートをパスワードで保護しました。
しかし、これにより、ユーザーはマクロ/コードにアクセスできなくなりますか?またはシートを非表示にしますか?そうでない場合、ワークブックを正しく/安全に/完全にロックするにはどうすればよいでしょうか?
これはビッグブラザー型のセキュリティ保護のように聞こえますが、相互にリンクされたすべてのセルが誤って変更されたり、実行する必要のないマクロが実行されたりしないようにするだけです。
どうもありがとう
マイケル。
答え1
まず、Excelの保護機能のほとんどはないセキュリティ機能。ほとんどは簡単に破られたり回避されたりします。偶発的な損傷を防ぐには十分ですが、何をしているのかわかっていて、隠したビットを本当に見たいと思っている人を防ぐことはできません。
とは言え、ここにいくつかの答えがあります:
初期保護
基本的にはセルをロックして必要なものを隠します。
次に保護します毎シート。
次に、ワークブック自体を保護します。
非常に隠れたシート
シートを「完全に」非表示にすることができます。つまり、VBA 経由でのみ非表示を解除できます (インターフェイスの非表示解除リストには表示されません)。これは、設定の変更をトリガーするために少なくとも 1 回実行する VBA の行で簡単に実行できます。また、実行後はファイルに保持する必要はありません (ただし、後で非表示解除するシートを覚えておくのに役立つ場合があります)。
Sheets("Sheet1").Visible = xlVeryHidden
隠された VBA コード
プロジェクトにパスワードを設定します。VBA エディターでモジュールを右クリックし、タブでパスワードをProject Explorer
選択して設定します。<ProjectName> Properties
Protection
これらはブルートフォース攻撃によって開けられる可能性があることに注意してください。
隠しマクロ
ここでは、誰かがウィンドウを開いたときにマクロ リストに表示されないようにしたいという意味だと思いますかRun Macro
?
これを行うには、目的のマクロを または にしますPrivate Sub
。Function
これにより、マクロとしては表示されなくなりますが、同じモジュール内の他のコードから呼び出すことはできます。
人々がランニング表示されているマクロのみ割り当てられ、非表示のマクロをボタンに割り当てることはできません。
答え2
受信者が誤って一部を変更しないようにしたいだけであれば、Excel の保護機能で十分です。しかし、ワークブックの受信者に見られたくない機密データがある場合は、Excel の保護機能は役に立ちません。
データのみを表示し、書式は表示したくない場合は、すべての非表示データを「フラッシュ」する簡単な方法として、各シートを CSV としてエクスポートし、新しい Excel ブックとして再インポートします。(2 番目の手順は厳密に言えばオプションですが、ユーザーは CSV ファイルに慣れていないため、ユーザーが期待する Excel ファイルを送信する方が適切です。)
他の人が変更できない見栄えの良い出力が必要な場合は、シートを PDF ファイルに印刷して送信します。