• ベストアンサー

VBEコードを保護する方法について

エクセル2003、VBEの標準モジュールコードウィンドウにマクロを作りました。これを他人に見られないように保護したいと思い、メニュー>ツール>VBAProjectのプロパティ>保護>プロジェクトのロックにチェック>パスワード2回入力>OK>保存と処理した後、そのファイルを開いてモジュールシートを見てみたら見ることはできませんでした。 しかしObjectsフォルダー内のシートに書いたマクロはそのシートを他のブックに移動してみたら見えてしまいました。標準モジュールに書いたものは安心できますか。もしもっといい保護方法が他にあるならば教えていただきたいのですが。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

シートモジュールのSub~~Endの間のコードを標準モジュールに移すしかない思われます。 もちろん単純な移動では拙いので少々の工夫は要りますが。 例えば、 Sheet1のセルB2に入力があったらそれを表示するコードだとします。 '-------- Sheet1のモジュール---------- Private Sub Worksheet_Change(ByVal target As Range)  If target.Address = "$B$2" Then    MsgBox target.Value  End If End Sub '●これを次のようにするということです '----- Sheet1モジュール ----------------------- Private Sub Worksheet_Change(ByVal target As Range)   Call Test(target) End Sub '----- 標準モジュール  ------------------- Sub Test(target As Range)   If target.Address = "$B$2" Then     MsgBox target.Value   End If End Sub '----------------------------------------------- こうすると少なくともメイン処理の部分は見えなくなりますよね。 以上です。  

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>しかしObjectsフォルダー内のシートに書いたマクロは・・・ シートモジュールですね、マクロに保護をかけてもシートをコピーするとコードも、一緒にコピーされます。 [ツール]-[保護]-[ブックの保護]でパスワード付で保護を掛けるとシートのコピー、移動は出来なくなりますが これも他ブックからだと簡単にマクロでシートコピーすることが出来ます。 取り敢えず無難なのはシートモジュールから標準モジュールに書いたコードをCallするようにして 直接シートモジュールに実行コードを書かないようにすればどうでしょうか

  • nagare
  • ベストアンサー率33% (280/831)
回答No.1

シートのコピー・移動自体をできなくする というのはダメでしょうか? メニュー:ツール-保護-ブックの保護 ※VBAProjectプロパティとブックのW保護