- ベストアンサー
VBAプロジェクトの保護
エクセル2002使用です。 VBAプロジェクトの保護と解除を繰り返しているうちに、保護ができなくなってしまいました。 エクセルの画面でも、セルのロック、シートの保護、ブックの保護を繰り返していました。 何か原因があるのでしょうか? また、別件なのですが、エクセルのオプションでシートの見出しをオフにして、見えなくした状態でブックの保護をかけても、保護をかけた状態でオンにできてしまいます。操作できないようにするにはどのようにしたらよいのでしょうか? エクセルとVBEの保護について詳しいHPをお知りでしたら教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
別件について、 Office2000でも、同様にシート見出しは保護の対象になっていないようです。 目的が、ユーザのシート切替の禁止であれば、シートの非表示が一般的です。(表紙シートの見出しがみえてしまいますが。) また、Sheet の Visible プロパティを xlSheetVeryHidden に設定すると、ユーザはシートの再表示ができなくなります。 さらに、ThisWorkBook の IsAddin プロパティを True に設定すれば、ブック自体をユーザの目から隠せます。 どちらも、以後はコードから完全制御する必要があります。デバック等が面倒になりますので注意してください。
その他の回答 (1)
- komet163
- ベストアンサー率51% (22/43)
わたしの環境は Office2000 ですが、 >保護ができなくなってしまいました。 という状況は遭ったことはありません。しかし、 1)プロジェクトの保護を無効にし、 2)全てのシート、標準モジュール、フォームをエクスポートする。 3)全てのシート上のコードを削除、全ての標準モジュール、フォームを解放して保存。 4) 3)のブックを開く。このとき「マクロを実行しますか?」のメッーセージが出ないことを確認。 5) 2)でエクスポートしたもの全てインポート、シートはクラスモジュールになってしまうので、コートをコピペで元のシートに貼り、クラスモジュールは解放する。 6) 保存する。 これで、ファイルサイズが 1)以前より減少し、実行速度も多少上がります。おそらくコードの最適化(再コンパイル)されたもの思われます。 経験上、大抵の不具合は上記を実施すると復旧します。
お礼
komet163 様具体的なご回答ありがとうございます。 VBAの保護はおかげさまでばっちり解決しました。 見出しはやっぱり駄目ですか~ シートを非表示にしてブックの保護→シートとウインドウの両方保護で切り抜けようとしたら、エクセルの中のウインドウの大きさが勝手に固定されたりと少し融通が利かないですね。。 >Sheet の Visible プロパティをxlSheetVeryHidden に設定 がばっちりでした。 どうもありがとうございました。 今後ともよろしくお願いします。